google-cloud-logging-v2 0.1.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 +7 -0
- data/.yardopts +12 -0
- data/AUTHENTICATION.md +169 -0
- data/LICENSE.md +203 -0
- data/README.md +75 -0
- data/lib/google-cloud-logging-v2.rb +21 -0
- data/lib/google/cloud/logging/v2.rb +37 -0
- data/lib/google/cloud/logging/v2/config_service.rb +49 -0
- data/lib/google/cloud/logging/v2/config_service/client.rb +1723 -0
- data/lib/google/cloud/logging/v2/config_service/credentials.rb +54 -0
- data/lib/google/cloud/logging/v2/config_service/paths.rb +413 -0
- data/lib/google/cloud/logging/v2/logging_service.rb +49 -0
- data/lib/google/cloud/logging/v2/logging_service/client.rb +826 -0
- data/lib/google/cloud/logging/v2/logging_service/credentials.rb +55 -0
- data/lib/google/cloud/logging/v2/logging_service/paths.rb +154 -0
- data/lib/google/cloud/logging/v2/metrics_service.rb +49 -0
- data/lib/google/cloud/logging/v2/metrics_service/client.rb +726 -0
- data/lib/google/cloud/logging/v2/metrics_service/credentials.rb +55 -0
- data/lib/google/cloud/logging/v2/metrics_service/paths.rb +64 -0
- data/lib/google/cloud/logging/v2/version.rb +28 -0
- data/lib/google/logging/type/http_request_pb.rb +38 -0
- data/lib/google/logging/type/log_severity_pb.rb +31 -0
- data/lib/google/logging/v2/log_entry_pb.rb +62 -0
- data/lib/google/logging/v2/logging_config_pb.rb +176 -0
- data/lib/google/logging/v2/logging_config_services_pb.rb +113 -0
- data/lib/google/logging/v2/logging_metrics_pb.rb +75 -0
- data/lib/google/logging/v2/logging_metrics_services_pb.rb +53 -0
- data/lib/google/logging/v2/logging_pb.rb +83 -0
- data/lib/google/logging/v2/logging_services_pb.rb +65 -0
- data/proto_docs/README.md +4 -0
- data/proto_docs/google/api/distribution.rb +225 -0
- data/proto_docs/google/api/field_behavior.rb +59 -0
- data/proto_docs/google/api/label.rb +49 -0
- data/proto_docs/google/api/metric.rb +203 -0
- data/proto_docs/google/api/monitored_resource.rb +137 -0
- data/proto_docs/google/api/resource.rb +247 -0
- data/proto_docs/google/logging/type/http_request.rb +95 -0
- data/proto_docs/google/logging/type/log_severity.rb +71 -0
- data/proto_docs/google/logging/v2/log_entry.rb +203 -0
- data/proto_docs/google/logging/v2/logging.rb +303 -0
- data/proto_docs/google/logging/v2/logging_config.rb +735 -0
- data/proto_docs/google/logging/v2/logging_metrics.rb +256 -0
- data/proto_docs/google/protobuf/any.rb +138 -0
- data/proto_docs/google/protobuf/duration.rb +98 -0
- data/proto_docs/google/protobuf/empty.rb +36 -0
- data/proto_docs/google/protobuf/field_mask.rb +229 -0
- data/proto_docs/google/protobuf/struct.rb +96 -0
- data/proto_docs/google/protobuf/timestamp.rb +120 -0
- data/proto_docs/google/rpc/status.rb +46 -0
- metadata +231 -0
@@ -0,0 +1,54 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Copyright 2020 Google LLC
|
4
|
+
#
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
# you may not use this file except in compliance with the License.
|
7
|
+
# You may obtain a copy of the License at
|
8
|
+
#
|
9
|
+
# https://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
#
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
# See the License for the specific language governing permissions and
|
15
|
+
# limitations under the License.
|
16
|
+
|
17
|
+
# Auto-generated by gapic-generator-ruby. DO NOT EDIT!
|
18
|
+
|
19
|
+
require "googleauth"
|
20
|
+
|
21
|
+
module Google
|
22
|
+
module Cloud
|
23
|
+
module Logging
|
24
|
+
module V2
|
25
|
+
module ConfigService
|
26
|
+
# Credentials for the ConfigService API.
|
27
|
+
class Credentials < ::Google::Auth::Credentials
|
28
|
+
self.scope = [
|
29
|
+
"https://www.googleapis.com/auth/cloud-platform",
|
30
|
+
"https://www.googleapis.com/auth/cloud-platform.read-only",
|
31
|
+
"https://www.googleapis.com/auth/logging.admin",
|
32
|
+
"https://www.googleapis.com/auth/logging.read"
|
33
|
+
]
|
34
|
+
self.env_vars = [
|
35
|
+
"LOGGING_CREDENTIALS",
|
36
|
+
"LOGGING_KEYFILE",
|
37
|
+
"GOOGLE_CLOUD_CREDENTIALS",
|
38
|
+
"GOOGLE_CLOUD_KEYFILE",
|
39
|
+
"GCLOUD_KEYFILE",
|
40
|
+
"LOGGING_CREDENTIALS_JSON",
|
41
|
+
"LOGGING_KEYFILE_JSON",
|
42
|
+
"GOOGLE_CLOUD_CREDENTIALS_JSON",
|
43
|
+
"GOOGLE_CLOUD_KEYFILE_JSON",
|
44
|
+
"GCLOUD_KEYFILE_JSON"
|
45
|
+
]
|
46
|
+
self.paths = [
|
47
|
+
"~/.config/google_cloud/application_default_credentials.json"
|
48
|
+
]
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
@@ -0,0 +1,413 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Copyright 2020 Google LLC
|
4
|
+
#
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
# you may not use this file except in compliance with the License.
|
7
|
+
# You may obtain a copy of the License at
|
8
|
+
#
|
9
|
+
# https://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
#
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
# See the License for the specific language governing permissions and
|
15
|
+
# limitations under the License.
|
16
|
+
|
17
|
+
# Auto-generated by gapic-generator-ruby. DO NOT EDIT!
|
18
|
+
|
19
|
+
|
20
|
+
module Google
|
21
|
+
module Cloud
|
22
|
+
module Logging
|
23
|
+
module V2
|
24
|
+
module ConfigService
|
25
|
+
# Path helper methods for the ConfigService API.
|
26
|
+
module Paths
|
27
|
+
##
|
28
|
+
# Create a fully-qualified BillingAccount resource string.
|
29
|
+
#
|
30
|
+
# The resource will be in the following format:
|
31
|
+
#
|
32
|
+
# `billingAccounts/{billing_account}`
|
33
|
+
#
|
34
|
+
# @param billing_account [String]
|
35
|
+
#
|
36
|
+
# @return [::String]
|
37
|
+
def billing_account_path billing_account:
|
38
|
+
"billingAccounts/#{billing_account}"
|
39
|
+
end
|
40
|
+
|
41
|
+
##
|
42
|
+
# Create a fully-qualified BillingAccountLocation resource string.
|
43
|
+
#
|
44
|
+
# The resource will be in the following format:
|
45
|
+
#
|
46
|
+
# `billingAccounts/{billing_account}/locations/{location}`
|
47
|
+
#
|
48
|
+
# @param billing_account [String]
|
49
|
+
# @param location [String]
|
50
|
+
#
|
51
|
+
# @return [::String]
|
52
|
+
def billing_account_location_path billing_account:, location:
|
53
|
+
raise ::ArgumentError, "billing_account cannot contain /" if billing_account.to_s.include? "/"
|
54
|
+
|
55
|
+
"billingAccounts/#{billing_account}/locations/#{location}"
|
56
|
+
end
|
57
|
+
|
58
|
+
##
|
59
|
+
# Create a fully-qualified CmekSettings resource string.
|
60
|
+
#
|
61
|
+
# @overload cmek_settings_path(project:)
|
62
|
+
# The resource will be in the following format:
|
63
|
+
#
|
64
|
+
# `projects/{project}/cmekSettings`
|
65
|
+
#
|
66
|
+
# @param project [String]
|
67
|
+
#
|
68
|
+
# @overload cmek_settings_path(organization:)
|
69
|
+
# The resource will be in the following format:
|
70
|
+
#
|
71
|
+
# `organizations/{organization}/cmekSettings`
|
72
|
+
#
|
73
|
+
# @param organization [String]
|
74
|
+
#
|
75
|
+
# @overload cmek_settings_path(folder:)
|
76
|
+
# The resource will be in the following format:
|
77
|
+
#
|
78
|
+
# `folders/{folder}/cmekSettings`
|
79
|
+
#
|
80
|
+
# @param folder [String]
|
81
|
+
#
|
82
|
+
# @overload cmek_settings_path(billing_account:)
|
83
|
+
# The resource will be in the following format:
|
84
|
+
#
|
85
|
+
# `billingAccounts/{billing_account}/cmekSettings`
|
86
|
+
#
|
87
|
+
# @param billing_account [String]
|
88
|
+
#
|
89
|
+
# @return [::String]
|
90
|
+
def cmek_settings_path **args
|
91
|
+
resources = {
|
92
|
+
"project" => (proc do |project:|
|
93
|
+
"projects/#{project}/cmekSettings"
|
94
|
+
end),
|
95
|
+
"organization" => (proc do |organization:|
|
96
|
+
"organizations/#{organization}/cmekSettings"
|
97
|
+
end),
|
98
|
+
"folder" => (proc do |folder:|
|
99
|
+
"folders/#{folder}/cmekSettings"
|
100
|
+
end),
|
101
|
+
"billing_account" => (proc do |billing_account:|
|
102
|
+
"billingAccounts/#{billing_account}/cmekSettings"
|
103
|
+
end)
|
104
|
+
}
|
105
|
+
|
106
|
+
resource = resources[args.keys.sort.join(":")]
|
107
|
+
raise ::ArgumentError, "no resource found for values #{args.keys}" if resource.nil?
|
108
|
+
resource.call(**args)
|
109
|
+
end
|
110
|
+
|
111
|
+
##
|
112
|
+
# Create a fully-qualified Folder resource string.
|
113
|
+
#
|
114
|
+
# The resource will be in the following format:
|
115
|
+
#
|
116
|
+
# `folders/{folder}`
|
117
|
+
#
|
118
|
+
# @param folder [String]
|
119
|
+
#
|
120
|
+
# @return [::String]
|
121
|
+
def folder_path folder:
|
122
|
+
"folders/#{folder}"
|
123
|
+
end
|
124
|
+
|
125
|
+
##
|
126
|
+
# Create a fully-qualified FolderLocation resource string.
|
127
|
+
#
|
128
|
+
# The resource will be in the following format:
|
129
|
+
#
|
130
|
+
# `folders/{folder}/locations/{location}`
|
131
|
+
#
|
132
|
+
# @param folder [String]
|
133
|
+
# @param location [String]
|
134
|
+
#
|
135
|
+
# @return [::String]
|
136
|
+
def folder_location_path folder:, location:
|
137
|
+
raise ::ArgumentError, "folder cannot contain /" if folder.to_s.include? "/"
|
138
|
+
|
139
|
+
"folders/#{folder}/locations/#{location}"
|
140
|
+
end
|
141
|
+
|
142
|
+
##
|
143
|
+
# Create a fully-qualified Location resource string.
|
144
|
+
#
|
145
|
+
# The resource will be in the following format:
|
146
|
+
#
|
147
|
+
# `projects/{project}/locations/{location}`
|
148
|
+
#
|
149
|
+
# @param project [String]
|
150
|
+
# @param location [String]
|
151
|
+
#
|
152
|
+
# @return [::String]
|
153
|
+
def location_path project:, location:
|
154
|
+
raise ::ArgumentError, "project cannot contain /" if project.to_s.include? "/"
|
155
|
+
|
156
|
+
"projects/#{project}/locations/#{location}"
|
157
|
+
end
|
158
|
+
|
159
|
+
##
|
160
|
+
# Create a fully-qualified LogBucket resource string.
|
161
|
+
#
|
162
|
+
# @overload log_bucket_path(project:, location:, bucket:)
|
163
|
+
# The resource will be in the following format:
|
164
|
+
#
|
165
|
+
# `projects/{project}/locations/{location}/buckets/{bucket}`
|
166
|
+
#
|
167
|
+
# @param project [String]
|
168
|
+
# @param location [String]
|
169
|
+
# @param bucket [String]
|
170
|
+
#
|
171
|
+
# @overload log_bucket_path(organization:, location:, bucket:)
|
172
|
+
# The resource will be in the following format:
|
173
|
+
#
|
174
|
+
# `organizations/{organization}/locations/{location}/buckets/{bucket}`
|
175
|
+
#
|
176
|
+
# @param organization [String]
|
177
|
+
# @param location [String]
|
178
|
+
# @param bucket [String]
|
179
|
+
#
|
180
|
+
# @overload log_bucket_path(folder:, location:, bucket:)
|
181
|
+
# The resource will be in the following format:
|
182
|
+
#
|
183
|
+
# `folders/{folder}/locations/{location}/buckets/{bucket}`
|
184
|
+
#
|
185
|
+
# @param folder [String]
|
186
|
+
# @param location [String]
|
187
|
+
# @param bucket [String]
|
188
|
+
#
|
189
|
+
# @overload log_bucket_path(billing_account:, location:, bucket:)
|
190
|
+
# The resource will be in the following format:
|
191
|
+
#
|
192
|
+
# `billingAccounts/{billing_account}/locations/{location}/buckets/{bucket}`
|
193
|
+
#
|
194
|
+
# @param billing_account [String]
|
195
|
+
# @param location [String]
|
196
|
+
# @param bucket [String]
|
197
|
+
#
|
198
|
+
# @return [::String]
|
199
|
+
def log_bucket_path **args
|
200
|
+
resources = {
|
201
|
+
"bucket:location:project" => (proc do |project:, location:, bucket:|
|
202
|
+
raise ::ArgumentError, "project cannot contain /" if project.to_s.include? "/"
|
203
|
+
raise ::ArgumentError, "location cannot contain /" if location.to_s.include? "/"
|
204
|
+
|
205
|
+
"projects/#{project}/locations/#{location}/buckets/#{bucket}"
|
206
|
+
end),
|
207
|
+
"bucket:location:organization" => (proc do |organization:, location:, bucket:|
|
208
|
+
raise ::ArgumentError, "organization cannot contain /" if organization.to_s.include? "/"
|
209
|
+
raise ::ArgumentError, "location cannot contain /" if location.to_s.include? "/"
|
210
|
+
|
211
|
+
"organizations/#{organization}/locations/#{location}/buckets/#{bucket}"
|
212
|
+
end),
|
213
|
+
"bucket:folder:location" => (proc do |folder:, location:, bucket:|
|
214
|
+
raise ::ArgumentError, "folder cannot contain /" if folder.to_s.include? "/"
|
215
|
+
raise ::ArgumentError, "location cannot contain /" if location.to_s.include? "/"
|
216
|
+
|
217
|
+
"folders/#{folder}/locations/#{location}/buckets/#{bucket}"
|
218
|
+
end),
|
219
|
+
"billing_account:bucket:location" => (proc do |billing_account:, location:, bucket:|
|
220
|
+
raise ::ArgumentError, "billing_account cannot contain /" if billing_account.to_s.include? "/"
|
221
|
+
raise ::ArgumentError, "location cannot contain /" if location.to_s.include? "/"
|
222
|
+
|
223
|
+
"billingAccounts/#{billing_account}/locations/#{location}/buckets/#{bucket}"
|
224
|
+
end)
|
225
|
+
}
|
226
|
+
|
227
|
+
resource = resources[args.keys.sort.join(":")]
|
228
|
+
raise ::ArgumentError, "no resource found for values #{args.keys}" if resource.nil?
|
229
|
+
resource.call(**args)
|
230
|
+
end
|
231
|
+
|
232
|
+
##
|
233
|
+
# Create a fully-qualified LogExclusion resource string.
|
234
|
+
#
|
235
|
+
# @overload log_exclusion_path(project:, exclusion:)
|
236
|
+
# The resource will be in the following format:
|
237
|
+
#
|
238
|
+
# `projects/{project}/exclusions/{exclusion}`
|
239
|
+
#
|
240
|
+
# @param project [String]
|
241
|
+
# @param exclusion [String]
|
242
|
+
#
|
243
|
+
# @overload log_exclusion_path(organization:, exclusion:)
|
244
|
+
# The resource will be in the following format:
|
245
|
+
#
|
246
|
+
# `organizations/{organization}/exclusions/{exclusion}`
|
247
|
+
#
|
248
|
+
# @param organization [String]
|
249
|
+
# @param exclusion [String]
|
250
|
+
#
|
251
|
+
# @overload log_exclusion_path(folder:, exclusion:)
|
252
|
+
# The resource will be in the following format:
|
253
|
+
#
|
254
|
+
# `folders/{folder}/exclusions/{exclusion}`
|
255
|
+
#
|
256
|
+
# @param folder [String]
|
257
|
+
# @param exclusion [String]
|
258
|
+
#
|
259
|
+
# @overload log_exclusion_path(billing_account:, exclusion:)
|
260
|
+
# The resource will be in the following format:
|
261
|
+
#
|
262
|
+
# `billingAccounts/{billing_account}/exclusions/{exclusion}`
|
263
|
+
#
|
264
|
+
# @param billing_account [String]
|
265
|
+
# @param exclusion [String]
|
266
|
+
#
|
267
|
+
# @return [::String]
|
268
|
+
def log_exclusion_path **args
|
269
|
+
resources = {
|
270
|
+
"exclusion:project" => (proc do |project:, exclusion:|
|
271
|
+
raise ::ArgumentError, "project cannot contain /" if project.to_s.include? "/"
|
272
|
+
|
273
|
+
"projects/#{project}/exclusions/#{exclusion}"
|
274
|
+
end),
|
275
|
+
"exclusion:organization" => (proc do |organization:, exclusion:|
|
276
|
+
raise ::ArgumentError, "organization cannot contain /" if organization.to_s.include? "/"
|
277
|
+
|
278
|
+
"organizations/#{organization}/exclusions/#{exclusion}"
|
279
|
+
end),
|
280
|
+
"exclusion:folder" => (proc do |folder:, exclusion:|
|
281
|
+
raise ::ArgumentError, "folder cannot contain /" if folder.to_s.include? "/"
|
282
|
+
|
283
|
+
"folders/#{folder}/exclusions/#{exclusion}"
|
284
|
+
end),
|
285
|
+
"billing_account:exclusion" => (proc do |billing_account:, exclusion:|
|
286
|
+
raise ::ArgumentError, "billing_account cannot contain /" if billing_account.to_s.include? "/"
|
287
|
+
|
288
|
+
"billingAccounts/#{billing_account}/exclusions/#{exclusion}"
|
289
|
+
end)
|
290
|
+
}
|
291
|
+
|
292
|
+
resource = resources[args.keys.sort.join(":")]
|
293
|
+
raise ::ArgumentError, "no resource found for values #{args.keys}" if resource.nil?
|
294
|
+
resource.call(**args)
|
295
|
+
end
|
296
|
+
|
297
|
+
##
|
298
|
+
# Create a fully-qualified LogSink resource string.
|
299
|
+
#
|
300
|
+
# @overload log_sink_path(project:, sink:)
|
301
|
+
# The resource will be in the following format:
|
302
|
+
#
|
303
|
+
# `projects/{project}/sinks/{sink}`
|
304
|
+
#
|
305
|
+
# @param project [String]
|
306
|
+
# @param sink [String]
|
307
|
+
#
|
308
|
+
# @overload log_sink_path(organization:, sink:)
|
309
|
+
# The resource will be in the following format:
|
310
|
+
#
|
311
|
+
# `organizations/{organization}/sinks/{sink}`
|
312
|
+
#
|
313
|
+
# @param organization [String]
|
314
|
+
# @param sink [String]
|
315
|
+
#
|
316
|
+
# @overload log_sink_path(folder:, sink:)
|
317
|
+
# The resource will be in the following format:
|
318
|
+
#
|
319
|
+
# `folders/{folder}/sinks/{sink}`
|
320
|
+
#
|
321
|
+
# @param folder [String]
|
322
|
+
# @param sink [String]
|
323
|
+
#
|
324
|
+
# @overload log_sink_path(billing_account:, sink:)
|
325
|
+
# The resource will be in the following format:
|
326
|
+
#
|
327
|
+
# `billingAccounts/{billing_account}/sinks/{sink}`
|
328
|
+
#
|
329
|
+
# @param billing_account [String]
|
330
|
+
# @param sink [String]
|
331
|
+
#
|
332
|
+
# @return [::String]
|
333
|
+
def log_sink_path **args
|
334
|
+
resources = {
|
335
|
+
"project:sink" => (proc do |project:, sink:|
|
336
|
+
raise ::ArgumentError, "project cannot contain /" if project.to_s.include? "/"
|
337
|
+
|
338
|
+
"projects/#{project}/sinks/#{sink}"
|
339
|
+
end),
|
340
|
+
"organization:sink" => (proc do |organization:, sink:|
|
341
|
+
raise ::ArgumentError, "organization cannot contain /" if organization.to_s.include? "/"
|
342
|
+
|
343
|
+
"organizations/#{organization}/sinks/#{sink}"
|
344
|
+
end),
|
345
|
+
"folder:sink" => (proc do |folder:, sink:|
|
346
|
+
raise ::ArgumentError, "folder cannot contain /" if folder.to_s.include? "/"
|
347
|
+
|
348
|
+
"folders/#{folder}/sinks/#{sink}"
|
349
|
+
end),
|
350
|
+
"billing_account:sink" => (proc do |billing_account:, sink:|
|
351
|
+
raise ::ArgumentError, "billing_account cannot contain /" if billing_account.to_s.include? "/"
|
352
|
+
|
353
|
+
"billingAccounts/#{billing_account}/sinks/#{sink}"
|
354
|
+
end)
|
355
|
+
}
|
356
|
+
|
357
|
+
resource = resources[args.keys.sort.join(":")]
|
358
|
+
raise ::ArgumentError, "no resource found for values #{args.keys}" if resource.nil?
|
359
|
+
resource.call(**args)
|
360
|
+
end
|
361
|
+
|
362
|
+
##
|
363
|
+
# Create a fully-qualified Organization resource string.
|
364
|
+
#
|
365
|
+
# The resource will be in the following format:
|
366
|
+
#
|
367
|
+
# `organizations/{organization}`
|
368
|
+
#
|
369
|
+
# @param organization [String]
|
370
|
+
#
|
371
|
+
# @return [::String]
|
372
|
+
def organization_path organization:
|
373
|
+
"organizations/#{organization}"
|
374
|
+
end
|
375
|
+
|
376
|
+
##
|
377
|
+
# Create a fully-qualified OrganizationLocation resource string.
|
378
|
+
#
|
379
|
+
# The resource will be in the following format:
|
380
|
+
#
|
381
|
+
# `organizations/{organization}/locations/{location}`
|
382
|
+
#
|
383
|
+
# @param organization [String]
|
384
|
+
# @param location [String]
|
385
|
+
#
|
386
|
+
# @return [::String]
|
387
|
+
def organization_location_path organization:, location:
|
388
|
+
raise ::ArgumentError, "organization cannot contain /" if organization.to_s.include? "/"
|
389
|
+
|
390
|
+
"organizations/#{organization}/locations/#{location}"
|
391
|
+
end
|
392
|
+
|
393
|
+
##
|
394
|
+
# Create a fully-qualified Project resource string.
|
395
|
+
#
|
396
|
+
# The resource will be in the following format:
|
397
|
+
#
|
398
|
+
# `projects/{project}`
|
399
|
+
#
|
400
|
+
# @param project [String]
|
401
|
+
#
|
402
|
+
# @return [::String]
|
403
|
+
def project_path project:
|
404
|
+
"projects/#{project}"
|
405
|
+
end
|
406
|
+
|
407
|
+
extend self
|
408
|
+
end
|
409
|
+
end
|
410
|
+
end
|
411
|
+
end
|
412
|
+
end
|
413
|
+
end
|