X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/cc69b49b0edec3e72079ea5616d72aabbef94b5d..a53bf7d89e01e98dcdc62b5357a0404d5489c9a1:/README.md diff --git a/README.md b/README.md index 6144ec5d9b..fced2eb5b7 100644 --- a/README.md +++ b/README.md @@ -1,176 +1,96 @@ -# Google API Client +[comment]: # (Copyright © The Arvados Authors. All rights reserved.) +[comment]: # () +[comment]: # (SPDX-License-Identifier: CC-BY-SA-3.0) -
-
Homepage
http://www.github.com/google/google-api-ruby-client
-
Authors
Bob Aman, Steven Bazyl
-
Copyright
Copyright © 2011 Google, Inc.
-
License
Apache 2.0
-
+[![Join the chat at https://gitter.im/arvados/community](https://badges.gitter.im/arvados/community.svg)](https://gitter.im/arvados/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) | [Installing Arvados](https://doc.arvados.org/install/index.html) | [Installing Client SDKs](https://doc.arvados.org/sdk/index.html) | [Report a bug](https://dev.arvados.org/projects/arvados/issues/new) | [Development and Contributing](CONTRIBUTING.md) -[![Build Status](https://secure.travis-ci.org/google/google-api-ruby-client.png)](http://travis-ci.org/google/google-api-ruby-client) -[![Dependency Status](https://gemnasium.com/google/google-api-ruby-client.png)](https://gemnasium.com/google/google-api-ruby-client) + -## Description +[Arvados](https://arvados.org) is an open source platform for +managing, processing, and sharing genomic and other large scientific +and biomedical data. With Arvados, bioinformaticians run and scale +compute-intensive workflows, developers create biomedical +applications, and IT administrators manage large compute and storage +resources. -The Google API Ruby Client makes it trivial to discover and access supported -APIs. +The key components of Arvados are: -## Install +* *Keep*: Keep is the Arvados storage system for managing and storing large +collections of files. Keep combines content addressing and a +distributed storage architecture resulting in both high reliability +and high throughput. Every file stored in Keep can be accurately +verified every time it is retrieved. Keep supports the creation of +collections as a flexible way to define data sets without having to +re-organize or needlessly copy data. Keep works on a wide range of +underlying filesystems and object stores. -Be sure `http://rubygems.org/` is in your gem sources. +* *Crunch*: Crunch is the orchestration system for running [Common Workflow Language](https://www.commonwl.org) workflows. It is +designed to maintain data provenance and workflow +reproducibility. Crunch automatically tracks data inputs and outputs +through Keep and executes workflow processes in Docker containers. In +a cloud environment, Crunch optimizes costs by scaling compute on demand. -For normal client usage, this is sufficient: +* *Workbench*: The Workbench web application allows users to interactively access +Arvados functionality. It is especially helpful for querying and +browsing data, visualizing provenance, and tracking the progress of +workflows. - $ gem install google-api-client +* *Command Line tools*: The command line interface (CLI) provides convenient access to Arvados +functionality in the Arvados platform from the command line. -## Example Usage +* *API and SDKs*: Arvados is designed to be integrated with existing infrastructure. All +the services in Arvados are accessed through a RESTful API. SDKs are +available for Python, Go, R, Perl, Ruby, and Java. - # Initialize the client & Google+ API - require 'google/api_client' - client = Google::APIClient.new - plus = client.discovered_api('plus') +# Quick start - # Initialize OAuth 2.0 client - client.authorization.client_id = '' - client.authorization.client_secret = '' - client.authorization.redirect_uri = '' - - client.authorization.scope = 'https://www.googleapis.com/auth/plus.me' +To try out Arvados on your local workstation, you can use Arvbox, which +provides Arvados components pre-installed in a Docker container (requires +Docker 1.9+). After cloning the Arvados git repository: - # Request authorization - redirect_uri = client.authorization.authorization_uri +``` +$ cd arvados/tools/arvbox/bin +$ ./arvbox start localdemo +``` - # Wait for authorization code then exchange for token - client.authorization.code = '....' - client.authorization.fetch_access_token! +In this mode you will only be able to connect to Arvbox from the same host. To +configure Arvbox to be accessible over a network and for other options see +http://doc.arvados.org/install/arvbox.html for details. - # Make an API call - result = client.execute( - :api_method => plus.activities.list, - :parameters => {'collection' => 'public', 'userId' => 'me'} - ) +# Documentation - puts result.data +Complete documentation, including the [User Guide](https://doc.arvados.org/user/index.html), [Installation documentation](https://doc.arvados.org/install/index.html), [Administrator documentation](https://doc.arvados.org/admin/index.html) and +[API documentation](https://doc.arvados.org/api/index.html) is available at http://doc.arvados.org/ -## API Features +If you wish to build the Arvados documentation from a local git clone, see +[doc/README.textile](doc/README.textile) for instructions. -### API Discovery +# Community -To take full advantage of the client, load API definitions prior to use. To load an API: +[![Join the chat at https://gitter.im/arvados/community](https://badges.gitter.im/arvados/community.svg)](https://gitter.im/arvados/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) - urlshortener = client.discovered_api('urlshortener') +The [Arvados community channel](https://gitter.im/arvados/community) +channel at [gitter.im](https://gitter.im) is available for live +discussion and support. -Specific versions of the API can be loaded as well: +The [Arvados developement channel](https://gitter.im/arvados/development) +channel at [gitter.im](https://gitter.im) is used to coordinate development. - drive = client.discovered_api('drive', 'v2') +The [Arvados user mailing list](http://lists.arvados.org/mailman/listinfo/arvados) +is used to announce new versions and other news. -Locally cached discovery documents may be used as well. To load an API from a local file: +All participants are expected to abide by the [Arvados Code of Conduct](CODE_OF_CONDUCT.md). - doc = File.read('my-api.json') - my_api = client.register_discovery_document('myapi', 'v1', doc) +# Reporting bugs -### Authorization +[Report a bug](https://dev.arvados.org/projects/arvados/issues/new) on [dev.arvados.org](https://dev.arvados.org). -Most interactions with Google APIs require users to authorize applications via OAuth 2.0. The client library uses [Signet](https://github.com/google/signet) to handle most aspects of authorization. For additional details about Google's OAuth support, see [Google Developers](https://developers.google.com/accounts/docs/OAuth2). +# Development and Contributing -Credentials can be managed at the connection level, as shown, or supplied on a per-request basis when calling `execute`. - -For server-to-server interactions, like those between a web application and Google Cloud Storage, Prediction, or BigQuery APIs, use service accounts. - - key = Google::APIClient::KeyUtils.load_from_pkcs12('client.p12', 'notasecret') - client.authorization = Signet::OAuth2::Client.new( - :token_credential_uri => 'https://accounts.google.com/o/oauth2/token', - :audience => 'https://accounts.google.com/o/oauth2/token', - :scope => 'https://www.googleapis.com/auth/prediction', - :issuer => '123456-abcdef@developer.gserviceaccount.com', - :signing_key => key) - client.authorization.fetch_access_token! - client.execute(...) - - -### Batching Requests - -Some Google APIs support batching requests into a single HTTP request. Use `Google::APIClient::BatchRequest` -to bundle multiple requests together. - -Example: - - client = Google::APIClient.new - urlshortener = client.discovered_api('urlshortner') - - batch = Google::APIClient::BatchRequest.new do |result| - puts result.data - end - - batch.add(:api_method => urlshortener.url.insert, - :body_object => { 'longUrl' => 'http://example.com/foo' }) - batch.add(:api_method => urlshortener.url.insert, - :body_object => { 'longUrl' => 'http://example.com/bar' }) - client.execute(batch) - -Blocks for handling responses can be specified either at the batch level or when adding an individual API call. For example: - - batch.add(:api_method=>urlshortener.url.insert, :body_object => { 'longUrl' => 'http://example.com/bar' }) do |result| - puts result.data - end - -### Media Upload - -For APIs that support file uploads, use `Google::APIClient::UploadIO` to load the stream. Both multipart and resumable -uploads can be used. For example, to upload a file to Google Drive using multipart - - drive = client.discovered_api('drive', 'v2') - - media = Google::APIClient::UploadIO.new('mymovie.m4v', 'video/mp4') - metadata = { - 'title' => 'My movie', - 'description' => 'The best home movie ever made' - } - client.execute(:api_method => drive.files.insert, - :parameters => { 'uploadType' => 'multipart' }, - :body_object => metadata, - :media => media ) - -To use resumable uploads, change the `uploadType` parameter to `resumable`. To check the status of the upload -and continue if necessary, check `result.resumable_upload`. - - client.execute(:api_method => drive.files.insert, - :parameters => { 'uploadType' => 'resumable' }, - :body_object => metadata, - :media => media ) - upload = result.resumable_upload - - # Resume if needed - if upload.resumable? - client.execute(upload) - end - -## Command Line - -Included with the gem is a command line interface for working with Google APIs. - - # Log in - google-api oauth-2-login --client-id='...' --client-secret='...' --scope="https://www.googleapis.com/auth/plus.me" - - # List the signed-in user's activities - google-api execute plus.activities.list --api=plus -- userId="me" collection="public" - - # Start an interactive API session - google-api irb - >> plus = $client.discovered_api('plus') - >> $client.execute(plus.activities.list, {'userId' => 'me', 'collection' => 'public'}) - => # returns a response from the API - -For more information, use `google-api --help` - -## Samples - -See the full list of [samples on Google Code](http://code.google.com/p/google-api-ruby-client/source/browse?repo=samples). - - -## Support - -Please [report bugs at the project on Google Code](http://code.google.com/p/google-api-ruby-client/issues/entry). Don't hesitate to [ask questions](http://stackoverflow.com/questions/tagged/google-api-ruby-client) about the client or APIs on [StackOverflow](http://stackoverflow.com). +See [CONTRIBUTING](CONTRIBUTING.md) for information about Arvados development and how to contribute to the Arvados project. +The [development road map](https://dev.arvados.org/issues/gantt?utf8=%E2%9C%93&set_filter=1&gantt=1&f%5B%5D=project_id&op%5Bproject_id%5D=%3D&v%5Bproject_id%5D%5B%5D=49&f%5B%5D=&zoom=1) outlines some of the project priorities over the next twelve months. +# Licensing +Arvados is Free Software. See [COPYING](COPYING) for information about the open source licenses used in Arvados.