google-api-client 0.52.0 → 0.53.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.yardopts +0 -14
- data/CHANGELOG.md +6 -0
- data/OVERVIEW.md +36 -27
- data/generated/google/apis/accesscontextmanager_v1.rb +1 -1
- data/generated/google/apis/accesscontextmanager_v1/classes.rb +326 -0
- data/generated/google/apis/accesscontextmanager_v1/representations.rb +139 -0
- data/generated/google/apis/admin_directory_v1.rb +1 -1
- data/generated/google/apis/admin_directory_v1/service.rb +2 -2
- data/generated/google/apis/analyticsadmin_v1alpha.rb +2 -2
- data/generated/google/apis/analyticsadmin_v1alpha/classes.rb +8 -0
- data/generated/google/apis/analyticsadmin_v1alpha/representations.rb +1 -0
- data/generated/google/apis/analyticsadmin_v1alpha/service.rb +12 -1
- data/{lib/google/apis/core/logging.rb → generated/google/apis/apigateway_v1.rb} +14 -10
- data/generated/google/apis/apigateway_v1/classes.rb +1116 -0
- data/generated/google/apis/apigateway_v1/representations.rb +442 -0
- data/generated/google/apis/apigateway_v1/service.rb +1172 -0
- data/generated/google/apis/apigateway_v1beta.rb +1 -1
- data/generated/google/apis/apigateway_v1beta/classes.rb +19 -8
- data/generated/google/apis/apigateway_v1beta/representations.rb +1 -0
- data/generated/google/apis/apigee_v1.rb +1 -1
- data/generated/google/apis/apigee_v1/classes.rb +24 -22
- data/generated/google/apis/apigee_v1/service.rb +50 -48
- data/generated/google/apis/artifactregistry_v1.rb +38 -0
- data/generated/google/apis/artifactregistry_v1/classes.rb +242 -0
- data/generated/google/apis/artifactregistry_v1/representations.rb +116 -0
- data/generated/google/apis/artifactregistry_v1/service.rb +210 -0
- data/generated/google/apis/artifactregistry_v1beta1.rb +1 -1
- data/generated/google/apis/artifactregistry_v1beta1/classes.rb +0 -120
- data/generated/google/apis/artifactregistry_v1beta1/representations.rb +0 -62
- data/generated/google/apis/artifactregistry_v1beta2.rb +1 -1
- data/generated/google/apis/artifactregistry_v1beta2/classes.rb +0 -120
- data/generated/google/apis/artifactregistry_v1beta2/representations.rb +0 -62
- data/generated/google/apis/chat_v1.rb +1 -1
- data/generated/google/apis/chat_v1/service.rb +132 -0
- data/generated/google/apis/cloudasset_v1.rb +1 -1
- data/generated/google/apis/cloudasset_v1/classes.rb +326 -0
- data/generated/google/apis/cloudasset_v1/representations.rb +139 -0
- data/generated/google/apis/cloudasset_v1beta1.rb +1 -1
- data/generated/google/apis/cloudasset_v1beta1/classes.rb +326 -0
- data/generated/google/apis/cloudasset_v1beta1/representations.rb +139 -0
- data/generated/google/apis/cloudasset_v1p5beta1.rb +1 -1
- data/generated/google/apis/cloudasset_v1p5beta1/classes.rb +326 -0
- data/generated/google/apis/cloudasset_v1p5beta1/representations.rb +139 -0
- data/generated/google/apis/cloudbuild_v1.rb +1 -1
- data/generated/google/apis/cloudbuild_v1/classes.rb +3 -3
- data/generated/google/apis/cloudbuild_v1alpha1.rb +1 -1
- data/generated/google/apis/cloudbuild_v1alpha1/classes.rb +3 -3
- data/generated/google/apis/cloudbuild_v1alpha2.rb +1 -1
- data/generated/google/apis/cloudbuild_v1alpha2/classes.rb +3 -3
- data/generated/google/apis/cloudidentity_v1beta1.rb +1 -1
- data/generated/google/apis/cloudidentity_v1beta1/classes.rb +1 -1
- data/generated/google/apis/cloudresourcemanager_v1.rb +1 -1
- data/generated/google/apis/cloudresourcemanager_v1/classes.rb +0 -26
- data/generated/google/apis/cloudresourcemanager_v1/representations.rb +0 -24
- data/generated/google/apis/cloudresourcemanager_v1beta1.rb +1 -1
- data/generated/google/apis/cloudresourcemanager_v1beta1/classes.rb +0 -26
- data/generated/google/apis/cloudresourcemanager_v1beta1/representations.rb +0 -24
- data/generated/google/apis/cloudresourcemanager_v2.rb +1 -1
- data/generated/google/apis/cloudresourcemanager_v2/classes.rb +0 -26
- data/generated/google/apis/cloudresourcemanager_v2/representations.rb +0 -24
- data/generated/google/apis/cloudresourcemanager_v2beta1.rb +1 -1
- data/generated/google/apis/cloudresourcemanager_v2beta1/classes.rb +0 -26
- data/generated/google/apis/cloudresourcemanager_v2beta1/representations.rb +0 -24
- data/generated/google/apis/container_v1.rb +1 -1
- data/generated/google/apis/container_v1/classes.rb +7 -7
- data/generated/google/apis/container_v1beta1.rb +1 -1
- data/generated/google/apis/container_v1beta1/classes.rb +7 -7
- data/generated/google/apis/content_v2_1.rb +1 -1
- data/generated/google/apis/content_v2_1/classes.rb +434 -0
- data/generated/google/apis/content_v2_1/representations.rb +187 -0
- data/generated/google/apis/content_v2_1/service.rb +116 -0
- data/generated/google/apis/datacatalog_v1beta1.rb +1 -1
- data/generated/google/apis/datacatalog_v1beta1/classes.rb +6 -0
- data/generated/google/apis/datacatalog_v1beta1/representations.rb +1 -0
- data/generated/google/apis/dataflow_v1b3.rb +1 -1
- data/generated/google/apis/datalabeling_v1beta1.rb +1 -1
- data/generated/google/apis/dataproc_v1.rb +1 -1
- data/generated/google/apis/dataproc_v1/classes.rb +29 -1
- data/generated/google/apis/dataproc_v1/representations.rb +14 -0
- data/generated/google/apis/dataproc_v1/service.rb +42 -0
- data/generated/google/apis/dataproc_v1beta2.rb +1 -1
- data/generated/google/apis/dataproc_v1beta2/classes.rb +29 -1
- data/generated/google/apis/dataproc_v1beta2/representations.rb +14 -0
- data/generated/google/apis/dataproc_v1beta2/service.rb +42 -0
- data/generated/google/apis/dialogflow_v2.rb +1 -1
- data/generated/google/apis/dialogflow_v2/classes.rb +4041 -678
- data/generated/google/apis/dialogflow_v2/representations.rb +1851 -298
- data/generated/google/apis/dialogflow_v2beta1.rb +1 -1
- data/generated/google/apis/dialogflow_v2beta1/classes.rb +4047 -684
- data/generated/google/apis/dialogflow_v2beta1/representations.rb +1862 -309
- data/generated/google/apis/dialogflow_v3.rb +1 -1
- data/generated/google/apis/dialogflow_v3/classes.rb +3120 -311
- data/generated/google/apis/dialogflow_v3/representations.rb +2002 -617
- data/generated/google/apis/dialogflow_v3/service.rb +408 -0
- data/generated/google/apis/dialogflow_v3beta1.rb +1 -1
- data/generated/google/apis/dialogflow_v3beta1/classes.rb +5145 -2336
- data/generated/google/apis/dialogflow_v3beta1/representations.rb +1729 -344
- data/generated/google/apis/dialogflow_v3beta1/service.rb +408 -0
- data/generated/google/apis/dlp_v2.rb +1 -1
- data/generated/google/apis/dlp_v2/service.rb +3 -9
- data/generated/google/apis/documentai_v1beta2.rb +1 -1
- data/generated/google/apis/documentai_v1beta2/classes.rb +5 -92
- data/generated/google/apis/documentai_v1beta2/representations.rb +2 -15
- data/generated/google/apis/documentai_v1beta3.rb +1 -1
- data/generated/google/apis/documentai_v1beta3/classes.rb +5 -92
- data/generated/google/apis/documentai_v1beta3/representations.rb +2 -15
- data/generated/google/apis/gameservices_v1.rb +1 -1
- data/generated/google/apis/gameservices_v1/service.rb +14 -14
- data/generated/google/apis/gameservices_v1beta.rb +1 -1
- data/generated/google/apis/gameservices_v1beta/service.rb +14 -14
- data/generated/google/apis/localservices_v1.rb +4 -1
- data/generated/google/apis/manufacturers_v1.rb +1 -1
- data/generated/google/apis/manufacturers_v1/classes.rb +2 -2
- data/generated/google/apis/monitoring_v3.rb +1 -1
- data/generated/google/apis/monitoring_v3/classes.rb +2 -2
- data/generated/google/apis/notebooks_v1.rb +1 -1
- data/generated/google/apis/notebooks_v1/classes.rb +13 -0
- data/generated/google/apis/notebooks_v1/representations.rb +12 -0
- data/generated/google/apis/notebooks_v1/service.rb +34 -0
- data/generated/google/apis/prod_tt_sasportal_v1alpha1.rb +1 -1
- data/generated/google/apis/prod_tt_sasportal_v1alpha1/classes.rb +0 -37
- data/generated/google/apis/prod_tt_sasportal_v1alpha1/representations.rb +0 -18
- data/generated/google/apis/recommendationengine_v1beta1.rb +1 -1
- data/generated/google/apis/recommendationengine_v1beta1/service.rb +2 -1
- data/generated/google/apis/securitycenter_v1.rb +1 -1
- data/generated/google/apis/securitycenter_v1/classes.rb +18 -10
- data/generated/google/apis/securitycenter_v1/representations.rb +1 -0
- data/generated/google/apis/securitycenter_v1/service.rb +30 -30
- data/generated/google/apis/securitycenter_v1beta1.rb +1 -1
- data/generated/google/apis/securitycenter_v1beta1/classes.rb +7 -0
- data/generated/google/apis/securitycenter_v1beta1/representations.rb +1 -0
- data/generated/google/apis/securitycenter_v1beta2.rb +1 -1
- data/generated/google/apis/securitycenter_v1beta2/classes.rb +7 -0
- data/generated/google/apis/securitycenter_v1beta2/representations.rb +1 -0
- data/generated/google/apis/servicemanagement_v1.rb +1 -1
- data/generated/google/apis/servicemanagement_v1/classes.rb +11 -10
- data/generated/google/apis/sqladmin_v1beta4.rb +1 -1
- data/generated/google/apis/sqladmin_v1beta4/classes.rb +7 -7
- data/generated/google/apis/sqladmin_v1beta4/service.rb +4 -1
- data/generated/google/apis/storagetransfer_v1.rb +1 -1
- data/generated/google/apis/storagetransfer_v1/classes.rb +25 -0
- data/generated/google/apis/storagetransfer_v1/representations.rb +3 -0
- data/generated/google/apis/webmasters_v3/classes.rb +8 -0
- data/generated/google/apis/webmasters_v3/representations.rb +1 -0
- data/generated/google/apis/youtube_v3.rb +1 -1
- data/generated/google/apis/youtube_v3/classes.rb +18 -143
- data/generated/google/apis/youtube_v3/representations.rb +0 -57
- data/generated/google/apis/youtube_v3/service.rb +0 -43
- data/lib/google/apis/version.rb +1 -23
- metadata +27 -263
- data/.github/CONTRIBUTING.md +0 -31
- data/.github/ISSUE_TEMPLATE/bug_report.md +0 -36
- data/.github/ISSUE_TEMPLATE/feature_request.md +0 -21
- data/.github/ISSUE_TEMPLATE/support_request.md +0 -7
- data/.github/workflows/autoapprove.yml +0 -49
- data/.github/workflows/release-please.yml +0 -57
- data/.gitignore +0 -23
- data/.kokoro/build.bat +0 -11
- data/.kokoro/build.sh +0 -4
- data/.kokoro/continuous/common.cfg +0 -25
- data/.kokoro/continuous/linux.cfg +0 -25
- data/.kokoro/continuous/osx.cfg +0 -8
- data/.kokoro/continuous/post.cfg +0 -30
- data/.kokoro/continuous/windows.cfg +0 -29
- data/.kokoro/osx.sh +0 -4
- data/.kokoro/presubmit/common.cfg +0 -24
- data/.kokoro/presubmit/linux.cfg +0 -24
- data/.kokoro/presubmit/osx.cfg +0 -8
- data/.kokoro/presubmit/windows.cfg +0 -29
- data/.kokoro/release.cfg +0 -94
- data/.kokoro/trampoline.bat +0 -10
- data/.kokoro/trampoline.sh +0 -4
- data/.repo-metadata.json +0 -5
- data/.rspec +0 -2
- data/.rubocop.yml +0 -12
- data/.rubocop_todo.yml +0 -63
- data/CODE_OF_CONDUCT.md +0 -43
- data/Gemfile +0 -55
- data/MIGRATING.md +0 -215
- data/README.md +0 -402
- data/Rakefile +0 -131
- data/api_list_config.yaml +0 -9
- data/api_names.yaml +0 -1082
- data/bin/generate-api +0 -194
- data/docs/api-keys.md +0 -20
- data/docs/auth.md +0 -53
- data/docs/client-secrets.md +0 -69
- data/docs/getting-started.md +0 -340
- data/docs/installation.md +0 -0
- data/docs/logging.md +0 -34
- data/docs/media-upload.md +0 -25
- data/docs/oauth-installed.md +0 -191
- data/docs/oauth-server.md +0 -133
- data/docs/oauth-web.md +0 -280
- data/docs/oauth.md +0 -268
- data/docs/pagination.md +0 -29
- data/docs/performance.md +0 -25
- data/google-api-client.gemspec +0 -36
- data/lib/google/api_client/auth/installed_app.rb +0 -143
- data/lib/google/api_client/auth/key_utils.rb +0 -94
- data/lib/google/api_client/auth/storage.rb +0 -104
- data/lib/google/api_client/auth/storages/file_store.rb +0 -57
- data/lib/google/api_client/auth/storages/redis_store.rb +0 -59
- data/lib/google/api_client/client_secrets.rb +0 -176
- data/lib/google/apis.rb +0 -58
- data/lib/google/apis/core/api_command.rb +0 -209
- data/lib/google/apis/core/base_service.rb +0 -447
- data/lib/google/apis/core/batch.rb +0 -236
- data/lib/google/apis/core/composite_io.rb +0 -97
- data/lib/google/apis/core/download.rb +0 -118
- data/lib/google/apis/core/hashable.rb +0 -44
- data/lib/google/apis/core/http_command.rb +0 -447
- data/lib/google/apis/core/json_representation.rb +0 -153
- data/lib/google/apis/core/multipart.rb +0 -135
- data/lib/google/apis/core/upload.rb +0 -273
- data/lib/google/apis/errors.rb +0 -89
- data/lib/google/apis/generator.rb +0 -71
- data/lib/google/apis/generator/annotator.rb +0 -339
- data/lib/google/apis/generator/helpers.rb +0 -76
- data/lib/google/apis/generator/model.rb +0 -187
- data/lib/google/apis/generator/template.rb +0 -124
- data/lib/google/apis/generator/templates/_class.tmpl +0 -43
- data/lib/google/apis/generator/templates/_method.tmpl +0 -92
- data/lib/google/apis/generator/templates/_representation.tmpl +0 -51
- data/lib/google/apis/generator/templates/_representation_stub.tmpl +0 -17
- data/lib/google/apis/generator/templates/_representation_type.tmpl +0 -10
- data/lib/google/apis/generator/templates/classes.rb.tmpl +0 -29
- data/lib/google/apis/generator/templates/module.rb.tmpl +0 -40
- data/lib/google/apis/generator/templates/representations.rb.tmpl +0 -32
- data/lib/google/apis/generator/templates/service.rb.tmpl +0 -61
- data/lib/google/apis/options.rb +0 -116
- data/rakelib/devsite/devsite_builder.rb +0 -126
- data/rakelib/devsite/link_checker.rb +0 -64
- data/rakelib/devsite/repo_metadata.rb +0 -56
- data/rakelib/metrics.rake +0 -22
- data/rakelib/rubocop.rake +0 -10
- data/rakelib/spec.rake +0 -11
- data/rakelib/yard.rake +0 -11
- data/samples/cli/.env +0 -4
- data/samples/cli/Gemfile +0 -7
- data/samples/cli/README.md +0 -51
- data/samples/cli/google-api-samples +0 -32
- data/samples/cli/lib/base_cli.rb +0 -95
- data/samples/cli/lib/samples/adsense.rb +0 -99
- data/samples/cli/lib/samples/analytics.rb +0 -80
- data/samples/cli/lib/samples/androidpublisher.rb +0 -47
- data/samples/cli/lib/samples/bigquery.rb +0 -101
- data/samples/cli/lib/samples/calendar.rb +0 -83
- data/samples/cli/lib/samples/drive.rb +0 -82
- data/samples/cli/lib/samples/gmail.rb +0 -157
- data/samples/cli/lib/samples/pubsub.rb +0 -114
- data/samples/cli/lib/samples/sheets.rb +0 -61
- data/samples/cli/lib/samples/translate.rb +0 -44
- data/samples/cli/lib/samples/vision.rb +0 -69
- data/samples/cli/lib/samples/you_tube.rb +0 -47
- data/samples/web/Gemfile +0 -9
- data/samples/web/README.md +0 -44
- data/samples/web/app.rb +0 -120
- data/samples/web/views/calendar.erb +0 -34
- data/samples/web/views/drive.erb +0 -33
- data/samples/web/views/home.erb +0 -34
- data/samples/web/views/layout.erb +0 -40
- data/synth.py +0 -40
data/lib/google/apis/errors.rb
DELETED
@@ -1,89 +0,0 @@
|
|
1
|
-
# Copyright 2015 Google Inc.
|
2
|
-
#
|
3
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
-
# you may not use this file except in compliance with the License.
|
5
|
-
# You may obtain a copy of the License at
|
6
|
-
#
|
7
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
-
#
|
9
|
-
# Unless required by applicable law or agreed to in writing, software
|
10
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
-
# See the License for the specific language governing permissions and
|
13
|
-
# limitations under the License.
|
14
|
-
|
15
|
-
module Google
|
16
|
-
module Apis
|
17
|
-
# Base error, capable of wrapping another
|
18
|
-
class Error < StandardError
|
19
|
-
attr_reader :status_code
|
20
|
-
attr_reader :header
|
21
|
-
attr_reader :body
|
22
|
-
|
23
|
-
def initialize(err, status_code: nil, header: nil, body: nil)
|
24
|
-
@cause = nil
|
25
|
-
|
26
|
-
if err.respond_to?(:backtrace)
|
27
|
-
super(err.message)
|
28
|
-
@cause = err
|
29
|
-
else
|
30
|
-
super(err.to_s)
|
31
|
-
end
|
32
|
-
@status_code = status_code
|
33
|
-
@header = header.dup unless header.nil?
|
34
|
-
@body = body
|
35
|
-
end
|
36
|
-
|
37
|
-
def backtrace
|
38
|
-
if @cause
|
39
|
-
@cause.backtrace
|
40
|
-
else
|
41
|
-
super
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
def inspect
|
46
|
-
extra = ""
|
47
|
-
extra << " status_code: #{status_code.inspect}" unless status_code.nil?
|
48
|
-
extra << " header: #{header.inspect}" unless header.nil?
|
49
|
-
extra << " body: #{body.inspect}" unless body.nil?
|
50
|
-
|
51
|
-
"#<#{self.class.name}: #{message}#{extra}>"
|
52
|
-
end
|
53
|
-
end
|
54
|
-
|
55
|
-
# An error which is raised when there is an unexpected response or other
|
56
|
-
# transport error that prevents an operation from succeeding.
|
57
|
-
class TransmissionError < Error
|
58
|
-
end
|
59
|
-
|
60
|
-
# An exception that is raised if a redirect is required
|
61
|
-
#
|
62
|
-
class RedirectError < Error
|
63
|
-
end
|
64
|
-
|
65
|
-
# A 4xx class HTTP error occurred.
|
66
|
-
class ClientError < Error
|
67
|
-
end
|
68
|
-
|
69
|
-
# A 4xx class HTTP error occurred.
|
70
|
-
class RateLimitError < Error
|
71
|
-
end
|
72
|
-
|
73
|
-
# A 403 HTTP error occurred.
|
74
|
-
class ProjectNotLinkedError < Error
|
75
|
-
end
|
76
|
-
|
77
|
-
# A 401 HTTP error occurred.
|
78
|
-
class AuthorizationError < Error
|
79
|
-
end
|
80
|
-
|
81
|
-
# A 5xx class HTTP error occurred.
|
82
|
-
class ServerError < Error
|
83
|
-
end
|
84
|
-
|
85
|
-
# Error class for problems in batch requests.
|
86
|
-
class BatchError < Error
|
87
|
-
end
|
88
|
-
end
|
89
|
-
end
|
@@ -1,71 +0,0 @@
|
|
1
|
-
# Copyright 2015 Google Inc.
|
2
|
-
#
|
3
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
-
# you may not use this file except in compliance with the License.
|
5
|
-
# You may obtain a copy of the License at
|
6
|
-
#
|
7
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
-
#
|
9
|
-
# Unless required by applicable law or agreed to in writing, software
|
10
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
-
# See the License for the specific language governing permissions and
|
13
|
-
# limitations under the License.
|
14
|
-
|
15
|
-
require 'google/apis/discovery_v1'
|
16
|
-
require 'google/apis/generator/annotator'
|
17
|
-
require 'google/apis/generator/model'
|
18
|
-
require 'google/apis/generator/template'
|
19
|
-
require 'active_support/inflector'
|
20
|
-
require 'yaml'
|
21
|
-
|
22
|
-
module Google
|
23
|
-
module Apis
|
24
|
-
# Generates ruby classes for APIs from discovery documents
|
25
|
-
# @private
|
26
|
-
class Generator
|
27
|
-
Discovery = Google::Apis::DiscoveryV1
|
28
|
-
|
29
|
-
# Load templates
|
30
|
-
def initialize(api_names: nil, api_names_out: nil)
|
31
|
-
@names = Google::Apis::Generator::Names.new(api_names_out || File.join(Google::Apis::ROOT, 'api_names_out.yaml'),
|
32
|
-
api_names || File.join(Google::Apis::ROOT, 'api_names.yaml'))
|
33
|
-
@module_template = Template.load('module.rb')
|
34
|
-
@service_template = Template.load('service.rb')
|
35
|
-
@classes_template = Template.load('classes.rb')
|
36
|
-
@representations_template = Template.load('representations.rb')
|
37
|
-
end
|
38
|
-
|
39
|
-
# Generates ruby source for an API
|
40
|
-
#
|
41
|
-
# @param [String] json
|
42
|
-
# API Description, as JSON text
|
43
|
-
# @return [Hash<String,String>]
|
44
|
-
# Hash of generated files keyed by path
|
45
|
-
def render(json)
|
46
|
-
api = parse_description(json)
|
47
|
-
Annotator.process(api, @names)
|
48
|
-
base_path = ActiveSupport::Inflector.underscore(api.qualified_name)
|
49
|
-
context = {
|
50
|
-
'api' => api
|
51
|
-
}
|
52
|
-
files = {}
|
53
|
-
files[base_path + '.rb'] = @module_template.render(context)
|
54
|
-
files[File.join(base_path, 'service.rb')] = @service_template.render(context)
|
55
|
-
files[File.join(base_path, 'classes.rb')] = @classes_template.render(context)
|
56
|
-
files[File.join(base_path, 'representations.rb')] = @representations_template.render(context)
|
57
|
-
files
|
58
|
-
end
|
59
|
-
|
60
|
-
# Dump mapping of API names
|
61
|
-
# @return [String] Mapping of paths to ruby names in YAML format
|
62
|
-
def dump_api_names
|
63
|
-
@names.dump
|
64
|
-
end
|
65
|
-
|
66
|
-
def parse_description(json)
|
67
|
-
Discovery::RestDescription::Representation.new(Discovery::RestDescription.new).from_json(json)
|
68
|
-
end
|
69
|
-
end
|
70
|
-
end
|
71
|
-
end
|
@@ -1,339 +0,0 @@
|
|
1
|
-
# Copyright 2015 Google Inc.
|
2
|
-
#
|
3
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
-
# you may not use this file except in compliance with the License.
|
5
|
-
# You may obtain a copy of the License at
|
6
|
-
#
|
7
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
-
#
|
9
|
-
# Unless required by applicable law or agreed to in writing, software
|
10
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
-
# See the License for the specific language governing permissions and
|
13
|
-
# limitations under the License.
|
14
|
-
|
15
|
-
require 'logger'
|
16
|
-
require 'erb'
|
17
|
-
require 'yaml'
|
18
|
-
require 'json'
|
19
|
-
require 'active_support/inflector'
|
20
|
-
require 'google/apis/core/logging'
|
21
|
-
require 'google/apis/generator/template'
|
22
|
-
require 'google/apis/generator/model'
|
23
|
-
require 'google/apis/generator/helpers'
|
24
|
-
require 'addressable/uri'
|
25
|
-
|
26
|
-
module Google
|
27
|
-
module Apis
|
28
|
-
|
29
|
-
# @private
|
30
|
-
class Generator
|
31
|
-
|
32
|
-
# Helper for picking names for methods, properties, types, etc. Performs various normaliations
|
33
|
-
# as well as allows for overriding individual names from a configuration file for cases
|
34
|
-
# where algorithmic approaches produce poor APIs.
|
35
|
-
class Names
|
36
|
-
ActiveSupport::Inflector.inflections do |inflections|
|
37
|
-
inflections.uncountable('send_as', 'as')
|
38
|
-
inflections.irregular('drive', 'drives')
|
39
|
-
inflections.irregular('teamdrive', 'teamdrives')
|
40
|
-
end
|
41
|
-
|
42
|
-
include Google::Apis::Core::Logging
|
43
|
-
include NameHelpers
|
44
|
-
|
45
|
-
def initialize(names_out_file_path = nil, names_file_path = nil)
|
46
|
-
if names_out_file_path && File.file?(names_out_file_path)
|
47
|
-
logger.info { sprintf('Loading API names from %s', names_out_file_path) }
|
48
|
-
@names = YAML.load(File.read(names_out_file_path)) || {}
|
49
|
-
else
|
50
|
-
@names = {}
|
51
|
-
end
|
52
|
-
if names_file_path && File.file?(names_file_path)
|
53
|
-
logger.info { sprintf('Loading API names from %s', names_file_path) }
|
54
|
-
@names = @names.merge(YAML.load(File.read(names_file_path)) || {})
|
55
|
-
end
|
56
|
-
@path = []
|
57
|
-
end
|
58
|
-
|
59
|
-
def with_path(path)
|
60
|
-
@path.push(path)
|
61
|
-
begin
|
62
|
-
yield
|
63
|
-
ensure
|
64
|
-
@path.pop
|
65
|
-
end
|
66
|
-
end
|
67
|
-
|
68
|
-
def infer_parameter_name
|
69
|
-
pick_name(normalize_param_name(@path.last))
|
70
|
-
end
|
71
|
-
|
72
|
-
def infer_property_name
|
73
|
-
pick_name(normalize_property_name(@path.last))
|
74
|
-
end
|
75
|
-
|
76
|
-
def pick_name(alt_name)
|
77
|
-
preferred_name = @names[key]
|
78
|
-
if preferred_name && preferred_name == alt_name
|
79
|
-
# logger.warn { sprintf("Unnecessary name override '%s': %s", key, alt_name) }
|
80
|
-
elsif preferred_name.nil?
|
81
|
-
preferred_name = @names[key] = alt_name
|
82
|
-
end
|
83
|
-
preferred_name
|
84
|
-
end
|
85
|
-
|
86
|
-
def [](key)
|
87
|
-
@names[key]
|
88
|
-
end
|
89
|
-
|
90
|
-
def []=(key, value)
|
91
|
-
@names[key] = value
|
92
|
-
end
|
93
|
-
|
94
|
-
def dump
|
95
|
-
YAML.dump(Hash[@names.sort])
|
96
|
-
end
|
97
|
-
|
98
|
-
def key
|
99
|
-
@path.reduce('') { |a, e| a + '/' + e }
|
100
|
-
end
|
101
|
-
|
102
|
-
def option(opt_name)
|
103
|
-
@names[sprintf('%s?%s', key, opt_name)]
|
104
|
-
end
|
105
|
-
|
106
|
-
# For RPC style methods, pick a name based off the request objects.
|
107
|
-
# @param [Google::Apis::DiscoveryV1::RestMethod] method
|
108
|
-
# @param [Boolean] pick_name
|
109
|
-
# Fragment of the discovery doc describing the method
|
110
|
-
def infer_method_name_for_rpc(method, pick_name = true)
|
111
|
-
return nil if method.request.nil?
|
112
|
-
parts = method.id.split('.')
|
113
|
-
parts.shift
|
114
|
-
verb = ActiveSupport::Inflector.underscore(parts.pop)
|
115
|
-
match = method.request._ref.match(/(.*)(?i:request)/)
|
116
|
-
return nil if match.nil?
|
117
|
-
name = ActiveSupport::Inflector.underscore(match[1])
|
118
|
-
return nil unless name == verb || name.start_with?(verb + '_')
|
119
|
-
if !parts.empty?
|
120
|
-
resource_name = ActiveSupport::Inflector.singularize(parts.pop)
|
121
|
-
resource_name = ActiveSupport::Inflector.underscore(resource_name)
|
122
|
-
if !name.include?(resource_name)
|
123
|
-
name = name.split('_').insert(1, resource_name).join('_')
|
124
|
-
end
|
125
|
-
end
|
126
|
-
if pick_name
|
127
|
-
pick_name(name)
|
128
|
-
else
|
129
|
-
name
|
130
|
-
end
|
131
|
-
end
|
132
|
-
|
133
|
-
# For REST style methods, build a method name from the verb/resource(s) in the method
|
134
|
-
# id. IDs are in the form <api>.<resource>.<verb>
|
135
|
-
# @param [Google::Apis::DiscoveryV1::RestMethod] method
|
136
|
-
# Fragment of the discovery doc describing the method
|
137
|
-
def infer_method_name_from_id(method)
|
138
|
-
parts = method.id.split('.')
|
139
|
-
parts.shift
|
140
|
-
verb = ActiveSupport::Inflector.underscore(parts.pop)
|
141
|
-
return verb if parts.empty?
|
142
|
-
resource_name = ActiveSupport::Inflector.underscore(parts.pop)
|
143
|
-
if pluralize_method?(verb)
|
144
|
-
resource_name = ActiveSupport::Inflector.pluralize(resource_name)
|
145
|
-
else
|
146
|
-
resource_name = ActiveSupport::Inflector.singularize(resource_name)
|
147
|
-
end
|
148
|
-
if parts.empty?
|
149
|
-
resource_path = resource_name
|
150
|
-
else
|
151
|
-
resource_path = parts.map do |p|
|
152
|
-
p = ActiveSupport::Inflector.singularize(p)
|
153
|
-
ActiveSupport::Inflector.underscore(p)
|
154
|
-
end.join('_') + '_' + resource_name
|
155
|
-
end
|
156
|
-
method_name = verb.split('_').insert(1, resource_path.split('_')).join('_')
|
157
|
-
pick_name(method_name)
|
158
|
-
end
|
159
|
-
end
|
160
|
-
|
161
|
-
# Modifies an API description to support ruby code generation. Primarily does:
|
162
|
-
# - Ensure all names follow appopriate ruby conventions
|
163
|
-
# - Maps types to ruby types, classes, and resolves $refs
|
164
|
-
# - Attempts to simplify names where possible to make APIs more sensible
|
165
|
-
class Annotator
|
166
|
-
include NameHelpers
|
167
|
-
include Google::Apis::Core::Logging
|
168
|
-
|
169
|
-
# Prepare the API for the templates.
|
170
|
-
# @param [Google::Apis::DiscoveryV1::RestDescription] description
|
171
|
-
# API Description
|
172
|
-
def self.process(description, api_names = nil)
|
173
|
-
Annotator.new(description, api_names).annotate_api
|
174
|
-
end
|
175
|
-
|
176
|
-
# @param [Google::Apis::DiscoveryV1::RestDescription] description
|
177
|
-
# API Description
|
178
|
-
# @param [Google::Api::Generator::Names] api_names
|
179
|
-
# Name helper instanace
|
180
|
-
def initialize(description, api_names = nil)
|
181
|
-
api_names = Names.new if api_names.nil?
|
182
|
-
@names = api_names
|
183
|
-
@rest_description = description
|
184
|
-
@registered_types = []
|
185
|
-
@deferred_types = []
|
186
|
-
@strip_prefixes = []
|
187
|
-
@all_methods = {}
|
188
|
-
@dup_method_names_for_rpc = collect_dup_method_names_for_rpc
|
189
|
-
@path = []
|
190
|
-
end
|
191
|
-
|
192
|
-
def collect_method_names_for_rpc(resource, method_names_for_rpc)
|
193
|
-
resource.api_methods.each do |_k, v|
|
194
|
-
# First look for the method name in the `@names` hash. If there's
|
195
|
-
# no override set, generate it without inserting the generated name
|
196
|
-
# into the `@names` hash.
|
197
|
-
method_name_for_rpc = @names[@names.key]
|
198
|
-
if method_name_for_rpc.nil?
|
199
|
-
method_name_for_rpc = @names.infer_method_name_for_rpc(v, false)
|
200
|
-
end
|
201
|
-
method_names_for_rpc << method_name_for_rpc if method_name_for_rpc
|
202
|
-
end unless resource.api_methods.nil?
|
203
|
-
|
204
|
-
resource.resources.each do |_k, v|
|
205
|
-
collect_method_names_for_rpc(v, method_names_for_rpc)
|
206
|
-
end unless resource.resources.nil?
|
207
|
-
end
|
208
|
-
|
209
|
-
def collect_dup_method_names_for_rpc
|
210
|
-
method_names_for_rpc = []
|
211
|
-
collect_method_names_for_rpc(@rest_description, method_names_for_rpc)
|
212
|
-
method_names_for_rpc.group_by{ |e| e }.select { |k, v| v.size > 1 }.map(&:first)
|
213
|
-
end
|
214
|
-
|
215
|
-
def annotate_api
|
216
|
-
@names.with_path(@rest_description.id) do
|
217
|
-
@strip_prefixes << @rest_description.name
|
218
|
-
if @rest_description.auth
|
219
|
-
@rest_description.auth.oauth2.scopes.each do |key, value|
|
220
|
-
value.constant = constantize_scope(key)
|
221
|
-
end
|
222
|
-
end
|
223
|
-
@rest_description.force_alt_json = @names.option('force_alt_json')
|
224
|
-
annotate_parameters(@rest_description.parameters)
|
225
|
-
annotate_resource(@rest_description.name, @rest_description)
|
226
|
-
@rest_description.schemas.each do |k, v|
|
227
|
-
annotate_type(k, v, @rest_description)
|
228
|
-
end unless @rest_description.schemas.nil?
|
229
|
-
end
|
230
|
-
resolve_type_references
|
231
|
-
resolve_variants
|
232
|
-
end
|
233
|
-
|
234
|
-
def annotate_type(name, type, parent)
|
235
|
-
@names.with_path(name) do
|
236
|
-
type.name = name
|
237
|
-
type.path = @names.key
|
238
|
-
type.generated_name = @names.infer_property_name
|
239
|
-
if type.type == 'object'
|
240
|
-
type.generated_class_name = ActiveSupport::Inflector.camelize(type.generated_name)
|
241
|
-
@registered_types << type
|
242
|
-
end
|
243
|
-
type.parent = parent
|
244
|
-
@deferred_types << type if type._ref
|
245
|
-
type.properties.each do |k, v|
|
246
|
-
annotate_type(k, v, type)
|
247
|
-
end unless type.properties.nil?
|
248
|
-
if type.additional_properties
|
249
|
-
type.type = 'hash'
|
250
|
-
annotate_type(ActiveSupport::Inflector.singularize(type.generated_name), type.additional_properties,
|
251
|
-
parent)
|
252
|
-
end
|
253
|
-
annotate_type(ActiveSupport::Inflector.singularize(type.generated_name), type.items, parent) if type.items
|
254
|
-
end
|
255
|
-
end
|
256
|
-
|
257
|
-
def annotate_resource(name, resource, parent_resource = nil)
|
258
|
-
@strip_prefixes << name
|
259
|
-
resource.parent = parent_resource unless parent_resource.nil?
|
260
|
-
resource.api_methods.each do |_k, v|
|
261
|
-
annotate_method(v, resource)
|
262
|
-
end unless resource.api_methods.nil?
|
263
|
-
|
264
|
-
resource.resources.each do |k, v|
|
265
|
-
annotate_resource(k, v, resource)
|
266
|
-
end unless resource.resources.nil?
|
267
|
-
end
|
268
|
-
|
269
|
-
def annotate_method(method, parent_resource = nil)
|
270
|
-
@names.with_path(method.id) do
|
271
|
-
method.parent = parent_resource
|
272
|
-
# Grab the method name generated from the request object without
|
273
|
-
# inserting into, or querying, the names hash.
|
274
|
-
method_name_for_rpc = @names.infer_method_name_for_rpc(method, false)
|
275
|
-
# If `method_name_for_rpc` is a duplicate (more than one method in
|
276
|
-
# the API will generate this name), generate the method name from
|
277
|
-
# the method ID instead.
|
278
|
-
if @dup_method_names_for_rpc.include?(method_name_for_rpc)
|
279
|
-
method.generated_name = @names.infer_method_name_from_id(method)
|
280
|
-
# Otherwise, proceed as normal.
|
281
|
-
elsif method_name_for_rpc
|
282
|
-
method.generated_name = @names.infer_method_name_for_rpc(method)
|
283
|
-
else
|
284
|
-
method.generated_name = @names.infer_method_name_from_id(method)
|
285
|
-
end
|
286
|
-
check_duplicate_method(method)
|
287
|
-
annotate_parameters(method.parameters)
|
288
|
-
end
|
289
|
-
end
|
290
|
-
|
291
|
-
def annotate_parameters(parameters)
|
292
|
-
parameters.each do |key, value|
|
293
|
-
@names.with_path(key) do
|
294
|
-
value.name = key
|
295
|
-
value.generated_name = @names.infer_parameter_name
|
296
|
-
@deferred_types << value if value._ref
|
297
|
-
end
|
298
|
-
end unless parameters.nil?
|
299
|
-
end
|
300
|
-
|
301
|
-
def resolve_type_references
|
302
|
-
@deferred_types.each do |type|
|
303
|
-
if type._ref
|
304
|
-
ref = @rest_description.schemas[type._ref]
|
305
|
-
ivars = ref.instance_variables - [:@name, :@generated_name]
|
306
|
-
(ivars).each do |var|
|
307
|
-
type.instance_variable_set(var, ref.instance_variable_get(var))
|
308
|
-
end
|
309
|
-
end
|
310
|
-
end
|
311
|
-
end
|
312
|
-
|
313
|
-
def resolve_variants
|
314
|
-
@deferred_types.each do |type|
|
315
|
-
if type.variant
|
316
|
-
type.variant.map.each do |v|
|
317
|
-
ref = @rest_description.schemas[v._ref]
|
318
|
-
ref.base_ref = type
|
319
|
-
ref.discriminant = type.variant.discriminant
|
320
|
-
ref.discriminant_value = v.type_value
|
321
|
-
end
|
322
|
-
end
|
323
|
-
end
|
324
|
-
end
|
325
|
-
|
326
|
-
def check_duplicate_method(m)
|
327
|
-
if @all_methods.include?(m.generated_name)
|
328
|
-
logger.error do
|
329
|
-
sprintf('Duplicate method %s generated, conflicting paths %s and %s',
|
330
|
-
m.generated_name, @names.key, @all_methods[m.generated_name])
|
331
|
-
end
|
332
|
-
fail 'Duplicate name generated'
|
333
|
-
end
|
334
|
-
@all_methods[m.generated_name] = @names.key
|
335
|
-
end
|
336
|
-
end
|
337
|
-
end
|
338
|
-
end
|
339
|
-
end
|