Go to file
Yoshi Automation Bot a4b7b09fcf
feat: Automated regeneration of file v1beta1 client (#2356)
This PR was generated using Autosynth. 🌈


<details><summary>Log from Synthtool</summary>

```
2021-01-12 02:36:20,099 synthtool [DEBUG] > Executing /home/kbuilder/.cache/synthtool/google-api-ruby-client/synth.py.
On branch autosynth-file-v1beta1
nothing to commit, working tree clean
2021-01-12 02:36:20,222 synthtool [DEBUG] > Running: docker run --rm -v/home/kbuilder/.cache/synthtool/google-api-ruby-client:/workspace -v/var/run/docker.sock:/var/run/docker.sock -w /workspace --entrypoint script/synth.rb gcr.io/cloud-devrel-kokoro-resources/yoshi-ruby/autosynth file v1beta1
DEBUG:synthtool:Running: docker run --rm -v/home/kbuilder/.cache/synthtool/google-api-ruby-client:/workspace -v/var/run/docker.sock:/var/run/docker.sock -w /workspace --entrypoint script/synth.rb gcr.io/cloud-devrel-kokoro-resources/yoshi-ruby/autosynth file v1beta1
git clean -df
bundle install
Don't run Bundler as root. Bundler can ask for sudo if it is needed, and
installing your bundle as root will break this application for all non-root
users on this machine.
The dependency jruby-openssl (>= 0) will be unused by any of the platforms Bundler is installing for. Bundler is installing for ruby but the dependency is only for java. To add those platforms to the bundle, run `bundle lock --add-platform java`.
Fetching gem metadata from https://rubygems.org/.........
Fetching gem metadata from https://rubygems.org/.
Resolving dependencies...
Fetching rake 11.3.0
Installing rake 11.3.0
Fetching concurrent-ruby 1.1.7
Installing concurrent-ruby 1.1.7
Fetching i18n 1.8.7
Installing i18n 1.8.7
Fetching minitest 5.14.3
Installing minitest 5.14.3
Fetching tzinfo 2.0.4
Installing tzinfo 2.0.4
Fetching zeitwerk 2.4.2
Installing zeitwerk 2.4.2
Fetching activesupport 6.1.1
Installing activesupport 6.1.1
Fetching public_suffix 4.0.6
Installing public_suffix 4.0.6
Fetching addressable 2.7.0
Installing addressable 2.7.0
Fetching ast 2.4.1
Installing ast 2.4.1
Using bundler 2.1.4
Fetching byebug 11.1.3
Installing byebug 11.1.3 with native extensions
Fetching coderay 1.1.3
Installing coderay 1.1.3
Fetching json 2.5.1
Installing json 2.5.1 with native extensions
Fetching docile 1.3.4
Installing docile 1.3.4
Fetching simplecov-html 0.10.2
Installing simplecov-html 0.10.2
Fetching simplecov 0.16.1
Installing simplecov 0.16.1
Using sync 0.5.0
Fetching tins 1.28.0
Installing tins 1.28.0
Fetching term-ansicolor 1.7.1
Installing term-ansicolor 1.7.1
Fetching thor 0.20.3
Installing thor 0.20.3
Fetching coveralls 0.8.23
Installing coveralls 0.8.23
Fetching rexml 3.2.4
Installing rexml 3.2.4
Fetching crack 0.4.5
Installing crack 0.4.5
Fetching declarative 0.0.20
Installing declarative 0.0.20
Fetching declarative-option 0.1.0
Installing declarative-option 0.1.0
Fetching diff-lcs 1.4.4
Installing diff-lcs 1.4.4
Fetching dotenv 2.7.6
Installing dotenv 2.7.6
Fetching fakefs 0.20.1
Installing fakefs 0.20.1
Fetching faraday-net_http 1.0.0
Installing faraday-net_http 1.0.0
Fetching multipart-post 2.1.1
Installing multipart-post 2.1.1
Fetching ruby2_keywords 0.0.2
Installing ruby2_keywords 0.0.2
Fetching faraday 1.3.0
Installing faraday 1.3.0
Fetching gems 1.2.0
Installing gems 1.2.0
Fetching github-markup 1.7.0
Installing github-markup 1.7.0
Fetching jwt 2.2.2
Installing jwt 2.2.2
Fetching memoist 0.16.2
Installing memoist 0.16.2
Fetching multi_json 1.15.0
Installing multi_json 1.15.0
Fetching os 0.9.6
Installing os 0.9.6
Fetching signet 0.14.0
Installing signet 0.14.0
Fetching googleauth 0.14.0
Installing googleauth 0.14.0
Fetching httpclient 2.8.3
Installing httpclient 2.8.3
Fetching mini_mime 1.0.2
Installing mini_mime 1.0.2
Fetching uber 0.1.0
Installing uber 0.1.0
Fetching representable 3.0.4
Installing representable 3.0.4
Fetching retriable 3.1.2
Installing retriable 3.1.2
Fetching google-apis-core 0.2.0
Installing google-apis-core 0.2.0
Fetching google-apis-discovery_v1 0.1.0
Installing google-apis-discovery_v1 0.1.0
Using google-apis-generator 0.1.1 from source at `.`
Fetching google-id-token 1.4.2
Installing google-id-token 1.4.2
Fetching hashdiff 1.0.1
Installing hashdiff 1.0.1
Fetching mime-types-data 3.2020.1104
Installing mime-types-data 3.2020.1104
Fetching mime-types 3.3.1
Installing mime-types 3.3.1
Fetching multi_xml 0.6.0
Installing multi_xml 0.6.0
Fetching httparty 0.18.1
Installing httparty 0.18.1
Fetching rspec-support 3.10.1
Installing rspec-support 3.10.1
Fetching rspec-core 3.10.1
Installing rspec-core 3.10.1
Fetching rspec-expectations 3.10.1
Installing rspec-expectations 3.10.1
Fetching rspec-mocks 3.10.1
Installing rspec-mocks 3.10.1
Fetching rspec 3.10.0
Installing rspec 3.10.0
Fetching json_spec 1.1.5
Installing json_spec 1.1.5
Fetching launchy 2.5.0
Installing launchy 2.5.0
Fetching little-plugger 1.1.4
Installing little-plugger 1.1.4
Fetching logging 2.3.0
Installing logging 2.3.0
Fetching method_source 1.0.0
Installing method_source 1.0.0
Fetching opencensus 0.5.0
Installing opencensus 0.5.0
Fetching parallel 1.20.1
Installing parallel 1.20.1
Fetching parser 2.7.2.0
Installing parser 2.7.2.0
Fetching powerpack 0.1.3
Installing powerpack 0.1.3
Fetching pry 0.13.1
Installing pry 0.13.1
Fetching pry-byebug 3.9.0
Installing pry-byebug 3.9.0
Fetching yard 0.9.26
Installing yard 0.9.26
Fetching pry-doc 0.13.5
Installing pry-doc 0.13.5
Fetching rainbow 2.2.2
Installing rainbow 2.2.2 with native extensions
Fetching redcarpet 3.5.1
Installing redcarpet 3.5.1 with native extensions
Fetching redis 3.3.5
Installing redis 3.3.5
Fetching rmail 1.1.4
Installing rmail 1.1.4
Fetching ruby-progressbar 1.11.0
Installing ruby-progressbar 1.11.0
Fetching unicode-display_width 1.7.0
Installing unicode-display_width 1.7.0
Fetching rubocop 0.49.1
Installing rubocop 0.49.1
Fetching webmock 2.3.2
Installing webmock 2.3.2
Bundle complete! 25 Gemfile dependencies, 81 gems now installed.
Use `bundle info [gemname]` to see where a bundled gem is installed.
Post-install message from i18n:

HEADS UP! i18n 1.1 changed fallbacks to exclude default locale.
But that may break your application.

If you are upgrading your Rails application from an older version of Rails:

Please check your Rails app for 'config.i18n.fallbacks = true'.
If you're using I18n (>= 1.1.0) and Rails (< 5.2.2), this should be
'config.i18n.fallbacks = [I18n.default_locale]'.
If not, fallbacks will be broken in your app by I18n 1.1.x.

If you are starting a NEW Rails application, you can ignore this notice.

For more info see:
https://github.com/svenfuchs/i18n/releases/tag/v1.1.0

Post-install message from httparty:
When you HTTParty, you must party hard!
echo a | bundle exec bin/generate-api gen /workspace/generated --api=file.v1beta1 --names=/workspace/api_names.yaml --names-out=/workspace/api_names_out.yaml --spot-check
Loading file, version v1beta1 from https://raw.githubusercontent.com/googleapis/discovery-artifact-manager/master/discoveries/file.v1beta1.json
    conflict  google-apis-file_v1beta1/lib/google/apis/file_v1beta1/classes.rb
<v1beta1/classes.rb? (enter "h" for help) [Ynaqdhm] a
       force  google-apis-file_v1beta1/lib/google/apis/file_v1beta1/classes.rb
    conflict  google-apis-file_v1beta1/lib/google/apis/file_v1beta1/representations.rb
       force  google-apis-file_v1beta1/lib/google/apis/file_v1beta1/representations.rb
    conflict  google-apis-file_v1beta1/lib/google/apis/file_v1beta1/gem_version.rb
       force  google-apis-file_v1beta1/lib/google/apis/file_v1beta1/gem_version.rb
    conflict  google-apis-file_v1beta1/CHANGELOG.md
       force  google-apis-file_v1beta1/CHANGELOG.md
Don't run Bundler as root. Bundler can ask for sudo if it is needed, and
installing your bundle as root will break this application for all non-root
users on this machine.
The dependency jruby-openssl (>= 0) will be unused by any of the platforms Bundler is installing for. Bundler is installing for ruby but the dependency is only for java. To add those platforms to the bundle, run `bundle lock --add-platform java`.
Fetching gem metadata from https://rubygems.org/.........
Fetching gem metadata from https://rubygems.org/.
Resolving dependencies...
Fetching rake 13.0.3
Installing rake 13.0.3
Using public_suffix 4.0.6
Using addressable 2.7.0
Using bundler 2.1.4
Using declarative 0.0.20
Using declarative-option 0.1.0
Using diff-lcs 1.4.4
Using faraday-net_http 1.0.0
Using multipart-post 2.1.1
Using ruby2_keywords 0.0.2
Using faraday 1.3.0
Using jwt 2.2.2
Using memoist 0.16.2
Using multi_json 1.15.0
Fetching os 1.1.1
Installing os 1.1.1
Using signet 0.14.0
Using googleauth 0.14.0
Using httpclient 2.8.3
Using mini_mime 1.0.2
Using uber 0.1.0
Using representable 3.0.4
Using retriable 3.1.2
Using rexml 3.2.4
Using google-apis-core 0.2.0
Using google-apis-file_v1beta1 0.2.0 from source at `.`
Using opencensus 0.5.0
Using redcarpet 3.5.1
Using rspec-support 3.10.1
Using rspec-core 3.10.1
Using rspec-expectations 3.10.1
Using rspec-mocks 3.10.1
Using rspec 3.10.0
Using yard 0.9.26
Bundle complete! 8 Gemfile dependencies, 33 gems now installed.
Use `bundle info [gemname]` to see where a bundled gem is installed.
/root/.rbenv/versions/2.6.6/bin/ruby -I/root/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rspec-core-3.10.1/lib:/root/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rspec-support-3.10.1/lib /root/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rspec-core-3.10.1/exe/rspec --pattern spec/\*\*\{,/\*/\*\*\}/\*_spec.rb

Google::Apis::FileV1beta1
  should load

Finished in 0.30333 seconds (files took 0.10822 seconds to load)
1 example, 0 failures

Files:           4
Modules:         3 (    1 undocumented)
Classes:        34 (    1 undocumented)
Constants:       5 (    0 undocumented)
Attributes:     97 (    0 undocumented)
Methods:        84 (    0 undocumented)
 99.10% documented
google-apis-file_v1beta1 0.2.0 built to pkg/google-apis-file_v1beta1-0.2.0.gem.
    conflict  /workspace/api_names_out.yaml
       force  /workspace/api_names_out.yaml
2021-01-12 02:36:52,397 synthtool [DEBUG] > Wrote metadata to generated/google-apis-file_v1beta1/synth.metadata.
DEBUG:synthtool:Wrote metadata to generated/google-apis-file_v1beta1/synth.metadata.

```
</details>

Full log will be available here:
https://source.cloud.google.com/results/invocations/599da873-9f74-403d-9a28-9e4afc554432/targets

- [ ] To automatically regenerate this PR, check this box.
2021-01-12 10:50:04 +00:00
.github chore: Update release-please jobs to reference separate gems (#2146) 2021-01-06 12:02:24 -08:00
.kokoro chore: Rename kokoro release jobs to reduce logic (#2147) 2021-01-01 17:57:55 -08:00
.toys chore: Clean up after creating new gems during autosynth (#2343) 2021-01-09 11:16:24 -08:00
docs chore: Update some language prior to releasing separated clients 2021-01-07 14:57:10 -08:00
generated feat: Automated regeneration of file v1beta1 client (#2356) 2021-01-12 10:50:04 +00:00
google-api-client feat: Deprecate google-api-client in favor of individual service-specific gems 2021-01-07 13:49:46 -08:00
google-apis-core chore: release google-apis-core 0.2.0 (#2216) 2021-01-06 17:02:29 -08:00
google-apis-generator chore: Update some language prior to releasing separated clients 2021-01-07 14:57:10 -08:00
rakelib chore: Another attempt to fix the releaser (#2220) 2021-01-06 16:37:33 -08:00
samples docs: Update readme and samples to reflect separated packages 2021-01-07 13:31:56 -08:00
script chore: Clean up after creating new gems during autosynth (#2343) 2021-01-09 11:16:24 -08:00
.gitignore chore: Add synth scripts for client generation (#912) 2020-10-15 12:21:50 -07:00
.repo-metadata.json chore: add release and continuous/post kokoro jobs (#836) 2019-11-05 12:10:36 -08:00
.rubocop.yml chore: add release and continuous/post kokoro jobs (#836) 2019-11-05 12:10:36 -08:00
.rubocop_todo.yml Import refactored library. See MIGRATING.MD for details 2015-06-23 15:15:14 -07:00
CODE_OF_CONDUCT.md Add Code of Conduct 2018-07-02 12:47:32 -07:00
Gemfile chore: Move google-api-client into a subdirectory 2020-12-22 15:10:52 -08:00
LICENSE Basic project skeleton. 2010-07-28 19:30:56 +00:00
README.md docs: Update readme and samples to reflect separated packages 2021-01-07 13:31:56 -08:00
Rakefile chore: Attempt to fix the releaser (#2218) 2021-01-06 15:48:03 -08:00
api_list_config.yaml chore: Add synth scripts for client generation (#912) 2020-10-15 12:21:50 -07:00
api_names.yaml chore: Fix displayvideo v1beta naming conflict (#908) 2020-09-14 16:12:45 -07:00
api_names_out.yaml feat: Automated regeneration of file v1beta1 client (#2356) 2021-01-12 10:50:04 +00:00
synth.metadata feat: Automated removal of obsolete clients (#1742) 2020-12-11 11:54:03 +00:00
synth.py chore: Add synth scripts for client generation (#912) 2020-10-15 12:21:50 -07:00

README.md

Simple REST Clients for Google APIs

This repository contains a set of simple client libraries for various Google APIs. These libraries are generated automatically from Discovery Documents, and the code generator is also hosted here in this repository.

Each client provides:

  • A client object that connects to the HTTP/JSON REST endpoint for the service.
  • Ruby objects for data structures related to the service.
  • Integration with the googleauth gem for authentication using OAuth, API keys, and service accounts.
  • Control of retry, pagination, and timeouts.

These client libraries are officially supported by Google, and are updated regularly to track changes to the service. However, many Google services, especially Google Cloud Platform services such as Cloud Storage, Pub/Sub, and BigQuery, may provide a more modern client that is easier to use and more performant. See the section below titled "Which client should I use?" for more information.

Using the clients

The client gems are named according to the pattern google-apis-<servicename>_<serviceversion>. For example, the client for the Google Drive V3 API is google-apis-drive_v3.

Install the client using gem install or by adding it to your Gemfile. Then, to use it, require the file and instantiate the service. For example to use the Drive API:

require 'google/apis/drive_v3'

drive = Google::Apis::DriveV3::DriveService.new
drive.authorization = ... # See Googleauth or Signet libraries

# Search for files in Drive (first page only)
files = drive.list_files(q: "title contains 'finances'")
files.items.each do |file|
  puts file.title
end

# Upload a file
metadata = Google::Apis::DriveV3::File.new(title: 'My document')
metadata = drive.insert_file(metadata, upload_source: 'test.txt', content_type: 'text/plain')

# Download a file
drive.get_file(metadata.id, download_dest: '/tmp/myfile.txt')

Following is another example using the Content API (Google Merchant Center), provided by the google-apis-content_v2 gem:

require 'google/apis/content_v2'
require 'googleauth' # https://github.com/googleapis/google-auth-library-ruby

content = Google::Apis::ContentV2::ShoppingContentService.new

scope = 'https://www.googleapis.com/auth/content'
merchant_id = # Merchant ID found on dashboard

content.authorization = Google::Auth::ServiceAccountCredentials.make_creds(
  json_key_io: File.open('./content-api-key.json'),
  scope: scope)

content.authorization.fetch_access_token!
# Service methods: https://googleapis.dev/ruby/google-api-client/latest/Google/Apis/ContentV2/ShoppingContentService.html
content.list_datafeeds(merchant_id) # Returns Google::Apis::ContentV2::ListDatafeedsResponse

For more detailed information, see the Usage Guide.

Which client should I use?

Google provides two types of Ruby API client libraries: simple REST clients and modern clients.

The libraries in this repo are simple REST clients. These clients connect to HTTP/JSON REST endpoints and are automatically generated from service discovery documents. They support most API functionality, but their class interfaces are sometimes awkward.

Modern clients are produced by a modern code generator, combined with hand-crafted functionality for some services. Most modern clients connect to high-performance gRPC endpoints, although a few are backed by REST services. Modern clients are available for many Google services, especially Cloud Platform services, but do not yet support all the services covered by the simple clients. Most modern clients live in the https://github.com/googleapis/google-cloud-ruby repository.

For most users, we recommend the modern client, if one is available. Compared with simple clients, modern clients are generally much easier to use and more Ruby-like, support more advanced features such as streaming and long-running operations, and often provide much better performance. You may consider using a simple client instead, if a modern client is not yet available for the service you want to use, or if you are not able to use gRPC on your infrastructure.

The documentation for the particular Google service you are working with, may provide guidance regarding the preferred client library to use.

Samples

See the samples for examples on how to use the client library for various services.

Supported Ruby versions

This library is supported on Ruby 2.5+.

Google provides official support for Ruby versions that are actively supported by Ruby Core -- that is, Ruby versions that are either in normal maintenance or in security maintenance, and not end of life. Currently, this means Ruby 2.5 and later. Older versions of Ruby may still work, but are unsupported and not recommended. See https://www.ruby-lang.org/en/downloads/branches/ for details about the Ruby support schedule.

License

This library is licensed under Apache 2.0. Full license text is available in the LICENSE.

Contributing

See CONTRIBUTING.

Support

Please report bugs at the project on Github. Don't hesitate to ask questions about the client or APIs on StackOverflow.