vados
2 years ago
No known key found for this signature in database
GPG Key ID: ED874DE957CFB552
9 changed files with 1533 additions and 15 deletions
-
63weed/pb/Makefile
-
31weed/pb/google/api/annotations.proto
-
394weed/pb/google/api/client.proto
-
90weed/pb/google/api/field_behavior.proto
-
379weed/pb/google/api/http.proto
-
238weed/pb/google/api/resource.proto
-
35weed/pb/public.proto
-
213weed/pb/public_pb/public.pb.go
-
105weed/pb/public_pb/public_grpc.pb.go
@ -1,18 +1,51 @@ |
|||||
all: gen |
|
||||
|
|
||||
.PHONY : gen |
|
||||
|
|
||||
gen: |
|
||||
protoc master.proto --go_out=./master_pb --go-grpc_out=./master_pb --go_opt=paths=source_relative --go-grpc_opt=paths=source_relative |
|
||||
protoc volume_server.proto --go_out=./volume_server_pb --go-grpc_out=./volume_server_pb --go_opt=paths=source_relative --go-grpc_opt=paths=source_relative |
|
||||
protoc filer.proto --go_out=./filer_pb --go-grpc_out=./filer_pb --go_opt=paths=source_relative --go-grpc_opt=paths=source_relative |
|
||||
protoc remote.proto --go_out=./remote_pb --go-grpc_out=./remote_pb --go_opt=paths=source_relative --go-grpc_opt=paths=source_relative |
|
||||
protoc iam.proto --go_out=./iam_pb --go-grpc_out=./iam_pb --go_opt=paths=source_relative --go-grpc_opt=paths=source_relative |
|
||||
protoc mount.proto --go_out=./mount_pb --go-grpc_out=./mount_pb --go_opt=paths=source_relative --go-grpc_opt=paths=source_relative |
|
||||
protoc s3.proto --go_out=./s3_pb --go-grpc_out=./s3_pb --go_opt=paths=source_relative --go-grpc_opt=paths=source_relative |
|
||||
protoc mq.proto --go_out=./mq_pb --go-grpc_out=./mq_pb --go_opt=paths=source_relative --go-grpc_opt=paths=source_relative |
|
||||
# protoc filer.proto --java_out=../../other/java/client/src/main/java |
|
||||
|
.PHONY: help ensure-PB_NAME gen-all gen-protobuf fbs |
||||
|
all: gen-all |
||||
|
|
||||
|
help: ## Display help text
|
||||
|
@awk 'BEGIN {FS = ":.*##"; printf "\nUsage:\n make \033[36m<target>\033[0m\n"} /^[a-zA-Z_\-.*]+:.*?##/ { printf " \033[36m%-15s\033[0m %s\n", $$1, $$2 } /^##@/ { printf "\n\033[1m%s\033[0m\n", substr($$0, 5) } ' $(MAKEFILE_LIST) |
||||
|
|
||||
|
# basename of the protobuf that is used in generation (ex. 'master')
|
||||
|
PB_NAME ?= |
||||
|
|
||||
|
###########
|
||||
|
# Tooling #
|
||||
|
###########
|
||||
|
|
||||
|
ensure-PB_NAME: |
||||
|
@if [ -z "$(PB_NAME)" ] ; then \
|
||||
|
echo "PB_NAME must be specified (ex. PB_NAME=master)"; \
|
||||
|
exit 1; \
|
||||
|
fi |
||||
|
|
||||
|
ensure-protoc-gen-openapi: |
||||
|
@if [ ! $$(command -v protoc-gen-openapi) ] ; then \
|
||||
|
echo "protoc-gen-openapi is not installed (see: https://github.com/google/gnostic/tree/main/cmd/protoc-gen-openapi)"; \
|
||||
|
exit 1; \
|
||||
|
fi |
||||
|
|
||||
|
#######################
|
||||
|
# Protobuf Generation #
|
||||
|
#######################
|
||||
|
|
||||
|
gen-protobuf: ensure-PB_NAME ## Generate probouf for a consistently named sub-API
|
||||
|
protoc $(PB_NAME).proto \
|
||||
|
--go_out=./$(PB_NAME)_pb \
|
||||
|
--go-grpc_out=./$(PB_NAME)_pb \
|
||||
|
--go_opt=paths=source_relative \
|
||||
|
--go-grpc_opt=paths=source_relative |
||||
|
|
||||
|
gen-all: ## Generate all
|
||||
|
@$(MAKE) --no-print-dir gen-protobuf PB_NAME=master |
||||
|
@$(MAKE) --no-print-dir gen-protobuf PB_NAME=volume_server |
||||
|
@$(MAKE) --no-print-dir gen-protobuf PB_NAME=filer |
||||
|
@$(MAKE) --no-print-dir gen-protobuf PB_NAME=remote |
||||
|
@$(MAKE) --no-print-dir gen-protobuf PB_NAME=iam |
||||
|
@$(MAKE) --no-print-dir gen-protobuf PB_NAME=mount |
||||
|
@$(MAKE) --no-print-dir gen-protobuf PB_NAME=s3 |
||||
|
@$(MAKE) --no-print-dir gen-protobuf PB_NAME=mq |
||||
|
@$(MAKE) --no-print-dir gen-protobuf PB_NAME=public |
||||
|
# protoc filer.proto --java_out=../../other/java/client/src/main/java
|
||||
cp filer.proto ../../other/java/client/src/main/proto |
cp filer.proto ../../other/java/client/src/main/proto |
||||
|
|
||||
fbs: |
|
||||
|
fbs: ## Generate flatbuffers
|
||||
flatc --go -o . --go-namespace message_fbs message.fbs |
flatc --go -o . --go-namespace message_fbs message.fbs |
@ -0,0 +1,31 @@ |
|||||
|
// Copyright 2015 Google LLC |
||||
|
// |
||||
|
// Licensed under the Apache License, Version 2.0 (the "License"); |
||||
|
// you may not use this file except in compliance with the License. |
||||
|
// You may obtain a copy of the License at |
||||
|
// |
||||
|
// http://www.apache.org/licenses/LICENSE-2.0 |
||||
|
// |
||||
|
// Unless required by applicable law or agreed to in writing, software |
||||
|
// distributed under the License is distributed on an "AS IS" BASIS, |
||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
|
// See the License for the specific language governing permissions and |
||||
|
// limitations under the License. |
||||
|
|
||||
|
syntax = "proto3"; |
||||
|
|
||||
|
package google.api; |
||||
|
|
||||
|
import "google/api/http.proto"; |
||||
|
import "google/protobuf/descriptor.proto"; |
||||
|
|
||||
|
option go_package = "google.golang.org/genproto/googleapis/api/annotations;annotations"; |
||||
|
option java_multiple_files = true; |
||||
|
option java_outer_classname = "AnnotationsProto"; |
||||
|
option java_package = "com.google.api"; |
||||
|
option objc_class_prefix = "GAPI"; |
||||
|
|
||||
|
extend google.protobuf.MethodOptions { |
||||
|
// See `HttpRule`. |
||||
|
HttpRule http = 72295728; |
||||
|
} |
@ -0,0 +1,394 @@ |
|||||
|
// Copyright 2023 Google LLC |
||||
|
// |
||||
|
// Licensed under the Apache License, Version 2.0 (the "License"); |
||||
|
// you may not use this file except in compliance with the License. |
||||
|
// You may obtain a copy of the License at |
||||
|
// |
||||
|
// http://www.apache.org/licenses/LICENSE-2.0 |
||||
|
// |
||||
|
// Unless required by applicable law or agreed to in writing, software |
||||
|
// distributed under the License is distributed on an "AS IS" BASIS, |
||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
|
// See the License for the specific language governing permissions and |
||||
|
// limitations under the License. |
||||
|
|
||||
|
syntax = "proto3"; |
||||
|
|
||||
|
package google.api; |
||||
|
|
||||
|
import "google/api/launch_stage.proto"; |
||||
|
import "google/protobuf/descriptor.proto"; |
||||
|
import "google/protobuf/duration.proto"; |
||||
|
|
||||
|
option go_package = "google.golang.org/genproto/googleapis/api/annotations;annotations"; |
||||
|
option java_multiple_files = true; |
||||
|
option java_outer_classname = "ClientProto"; |
||||
|
option java_package = "com.google.api"; |
||||
|
option objc_class_prefix = "GAPI"; |
||||
|
|
||||
|
extend google.protobuf.MethodOptions { |
||||
|
// A definition of a client library method signature. |
||||
|
// |
||||
|
// In client libraries, each proto RPC corresponds to one or more methods |
||||
|
// which the end user is able to call, and calls the underlying RPC. |
||||
|
// Normally, this method receives a single argument (a struct or instance |
||||
|
// corresponding to the RPC request object). Defining this field will |
||||
|
// add one or more overloads providing flattened or simpler method signatures |
||||
|
// in some languages. |
||||
|
// |
||||
|
// The fields on the method signature are provided as a comma-separated |
||||
|
// string. |
||||
|
// |
||||
|
// For example, the proto RPC and annotation: |
||||
|
// |
||||
|
// rpc CreateSubscription(CreateSubscriptionRequest) |
||||
|
// returns (Subscription) { |
||||
|
// option (google.api.method_signature) = "name,topic"; |
||||
|
// } |
||||
|
// |
||||
|
// Would add the following Java overload (in addition to the method accepting |
||||
|
// the request object): |
||||
|
// |
||||
|
// public final Subscription createSubscription(String name, String topic) |
||||
|
// |
||||
|
// The following backwards-compatibility guidelines apply: |
||||
|
// |
||||
|
// * Adding this annotation to an unannotated method is backwards |
||||
|
// compatible. |
||||
|
// * Adding this annotation to a method which already has existing |
||||
|
// method signature annotations is backwards compatible if and only if |
||||
|
// the new method signature annotation is last in the sequence. |
||||
|
// * Modifying or removing an existing method signature annotation is |
||||
|
// a breaking change. |
||||
|
// * Re-ordering existing method signature annotations is a breaking |
||||
|
// change. |
||||
|
repeated string method_signature = 1051; |
||||
|
} |
||||
|
|
||||
|
extend google.protobuf.ServiceOptions { |
||||
|
// The hostname for this service. |
||||
|
// This should be specified with no prefix or protocol. |
||||
|
// |
||||
|
// Example: |
||||
|
// |
||||
|
// service Foo { |
||||
|
// option (google.api.default_host) = "foo.googleapi.com"; |
||||
|
// ... |
||||
|
// } |
||||
|
string default_host = 1049; |
||||
|
|
||||
|
// OAuth scopes needed for the client. |
||||
|
// |
||||
|
// Example: |
||||
|
// |
||||
|
// service Foo { |
||||
|
// option (google.api.oauth_scopes) = \ |
||||
|
// "https://www.googleapis.com/auth/cloud-platform"; |
||||
|
// ... |
||||
|
// } |
||||
|
// |
||||
|
// If there is more than one scope, use a comma-separated string: |
||||
|
// |
||||
|
// Example: |
||||
|
// |
||||
|
// service Foo { |
||||
|
// option (google.api.oauth_scopes) = \ |
||||
|
// "https://www.googleapis.com/auth/cloud-platform," |
||||
|
// "https://www.googleapis.com/auth/monitoring"; |
||||
|
// ... |
||||
|
// } |
||||
|
string oauth_scopes = 1050; |
||||
|
} |
||||
|
|
||||
|
// Required information for every language. |
||||
|
message CommonLanguageSettings { |
||||
|
// Link to automatically generated reference documentation. Example: |
||||
|
// https://cloud.google.com/nodejs/docs/reference/asset/latest |
||||
|
string reference_docs_uri = 1 [deprecated = true]; |
||||
|
|
||||
|
// The destination where API teams want this client library to be published. |
||||
|
repeated ClientLibraryDestination destinations = 2; |
||||
|
} |
||||
|
|
||||
|
// Details about how and where to publish client libraries. |
||||
|
message ClientLibrarySettings { |
||||
|
// Version of the API to apply these settings to. This is the full protobuf |
||||
|
// package for the API, ending in the version element. |
||||
|
// Examples: "google.cloud.speech.v1" and "google.spanner.admin.database.v1". |
||||
|
string version = 1; |
||||
|
|
||||
|
// Launch stage of this version of the API. |
||||
|
LaunchStage launch_stage = 2; |
||||
|
|
||||
|
// When using transport=rest, the client request will encode enums as |
||||
|
// numbers rather than strings. |
||||
|
bool rest_numeric_enums = 3; |
||||
|
|
||||
|
// Settings for legacy Java features, supported in the Service YAML. |
||||
|
JavaSettings java_settings = 21; |
||||
|
|
||||
|
// Settings for C++ client libraries. |
||||
|
CppSettings cpp_settings = 22; |
||||
|
|
||||
|
// Settings for PHP client libraries. |
||||
|
PhpSettings php_settings = 23; |
||||
|
|
||||
|
// Settings for Python client libraries. |
||||
|
PythonSettings python_settings = 24; |
||||
|
|
||||
|
// Settings for Node client libraries. |
||||
|
NodeSettings node_settings = 25; |
||||
|
|
||||
|
// Settings for .NET client libraries. |
||||
|
DotnetSettings dotnet_settings = 26; |
||||
|
|
||||
|
// Settings for Ruby client libraries. |
||||
|
RubySettings ruby_settings = 27; |
||||
|
|
||||
|
// Settings for Go client libraries. |
||||
|
GoSettings go_settings = 28; |
||||
|
} |
||||
|
|
||||
|
// This message configures the settings for publishing [Google Cloud Client |
||||
|
// libraries](https://cloud.google.com/apis/docs/cloud-client-libraries) |
||||
|
// generated from the service config. |
||||
|
message Publishing { |
||||
|
// A list of API method settings, e.g. the behavior for methods that use the |
||||
|
// long-running operation pattern. |
||||
|
repeated MethodSettings method_settings = 2; |
||||
|
|
||||
|
// Link to a *public* URI where users can report issues. Example: |
||||
|
// https://issuetracker.google.com/issues/new?component=190865&template=1161103 |
||||
|
string new_issue_uri = 101; |
||||
|
|
||||
|
// Link to product home page. Example: |
||||
|
// https://cloud.google.com/asset-inventory/docs/overview |
||||
|
string documentation_uri = 102; |
||||
|
|
||||
|
// Used as a tracking tag when collecting data about the APIs developer |
||||
|
// relations artifacts like docs, packages delivered to package managers, |
||||
|
// etc. Example: "speech". |
||||
|
string api_short_name = 103; |
||||
|
|
||||
|
// GitHub label to apply to issues and pull requests opened for this API. |
||||
|
string github_label = 104; |
||||
|
|
||||
|
// GitHub teams to be added to CODEOWNERS in the directory in GitHub |
||||
|
// containing source code for the client libraries for this API. |
||||
|
repeated string codeowner_github_teams = 105; |
||||
|
|
||||
|
// A prefix used in sample code when demarking regions to be included in |
||||
|
// documentation. |
||||
|
string doc_tag_prefix = 106; |
||||
|
|
||||
|
// For whom the client library is being published. |
||||
|
ClientLibraryOrganization organization = 107; |
||||
|
|
||||
|
// Client library settings. If the same version string appears multiple |
||||
|
// times in this list, then the last one wins. Settings from earlier |
||||
|
// settings with the same version string are discarded. |
||||
|
repeated ClientLibrarySettings library_settings = 109; |
||||
|
|
||||
|
// Optional link to proto reference documentation. Example: |
||||
|
// https://cloud.google.com/pubsub/lite/docs/reference/rpc |
||||
|
string proto_reference_documentation_uri = 110; |
||||
|
} |
||||
|
|
||||
|
// Settings for Java client libraries. |
||||
|
message JavaSettings { |
||||
|
// The package name to use in Java. Clobbers the java_package option |
||||
|
// set in the protobuf. This should be used **only** by APIs |
||||
|
// who have already set the language_settings.java.package_name" field |
||||
|
// in gapic.yaml. API teams should use the protobuf java_package option |
||||
|
// where possible. |
||||
|
// |
||||
|
// Example of a YAML configuration:: |
||||
|
// |
||||
|
// publishing: |
||||
|
// java_settings: |
||||
|
// library_package: com.google.cloud.pubsub.v1 |
||||
|
string library_package = 1; |
||||
|
|
||||
|
// Configure the Java class name to use instead of the service's for its |
||||
|
// corresponding generated GAPIC client. Keys are fully-qualified |
||||
|
// service names as they appear in the protobuf (including the full |
||||
|
// the language_settings.java.interface_names" field in gapic.yaml. API |
||||
|
// teams should otherwise use the service name as it appears in the |
||||
|
// protobuf. |
||||
|
// |
||||
|
// Example of a YAML configuration:: |
||||
|
// |
||||
|
// publishing: |
||||
|
// java_settings: |
||||
|
// service_class_names: |
||||
|
// - google.pubsub.v1.Publisher: TopicAdmin |
||||
|
// - google.pubsub.v1.Subscriber: SubscriptionAdmin |
||||
|
map<string, string> service_class_names = 2; |
||||
|
|
||||
|
// Some settings. |
||||
|
CommonLanguageSettings common = 3; |
||||
|
} |
||||
|
|
||||
|
// Settings for C++ client libraries. |
||||
|
message CppSettings { |
||||
|
// Some settings. |
||||
|
CommonLanguageSettings common = 1; |
||||
|
} |
||||
|
|
||||
|
// Settings for Php client libraries. |
||||
|
message PhpSettings { |
||||
|
// Some settings. |
||||
|
CommonLanguageSettings common = 1; |
||||
|
} |
||||
|
|
||||
|
// Settings for Python client libraries. |
||||
|
message PythonSettings { |
||||
|
// Some settings. |
||||
|
CommonLanguageSettings common = 1; |
||||
|
} |
||||
|
|
||||
|
// Settings for Node client libraries. |
||||
|
message NodeSettings { |
||||
|
// Some settings. |
||||
|
CommonLanguageSettings common = 1; |
||||
|
} |
||||
|
|
||||
|
// Settings for Dotnet client libraries. |
||||
|
message DotnetSettings { |
||||
|
// Some settings. |
||||
|
CommonLanguageSettings common = 1; |
||||
|
|
||||
|
// Map from original service names to renamed versions. |
||||
|
// This is used when the default generated types |
||||
|
// would cause a naming conflict. (Neither name is |
||||
|
// fully-qualified.) |
||||
|
// Example: Subscriber to SubscriberServiceApi. |
||||
|
map<string, string> renamed_services = 2; |
||||
|
|
||||
|
// Map from full resource types to the effective short name |
||||
|
// for the resource. This is used when otherwise resource |
||||
|
// named from different services would cause naming collisions. |
||||
|
// Example entry: |
||||
|
// "datalabeling.googleapis.com/Dataset": "DataLabelingDataset" |
||||
|
map<string, string> renamed_resources = 3; |
||||
|
|
||||
|
// List of full resource types to ignore during generation. |
||||
|
// This is typically used for API-specific Location resources, |
||||
|
// which should be handled by the generator as if they were actually |
||||
|
// the common Location resources. |
||||
|
// Example entry: "documentai.googleapis.com/Location" |
||||
|
repeated string ignored_resources = 4; |
||||
|
|
||||
|
// Namespaces which must be aliased in snippets due to |
||||
|
// a known (but non-generator-predictable) naming collision |
||||
|
repeated string forced_namespace_aliases = 5; |
||||
|
|
||||
|
// Method signatures (in the form "service.method(signature)") |
||||
|
// which are provided separately, so shouldn't be generated. |
||||
|
// Snippets *calling* these methods are still generated, however. |
||||
|
repeated string handwritten_signatures = 6; |
||||
|
} |
||||
|
|
||||
|
// Settings for Ruby client libraries. |
||||
|
message RubySettings { |
||||
|
// Some settings. |
||||
|
CommonLanguageSettings common = 1; |
||||
|
} |
||||
|
|
||||
|
// Settings for Go client libraries. |
||||
|
message GoSettings { |
||||
|
// Some settings. |
||||
|
CommonLanguageSettings common = 1; |
||||
|
} |
||||
|
|
||||
|
// Describes the generator configuration for a method. |
||||
|
message MethodSettings { |
||||
|
// Describes settings to use when generating API methods that use the |
||||
|
// long-running operation pattern. |
||||
|
// All default values below are from those used in the client library |
||||
|
// generators (e.g. |
||||
|
// [Java](https://github.com/googleapis/gapic-generator-java/blob/04c2faa191a9b5a10b92392fe8482279c4404803/src/main/java/com/google/api/generator/gapic/composer/common/RetrySettingsComposer.java)). |
||||
|
message LongRunning { |
||||
|
// Initial delay after which the first poll request will be made. |
||||
|
// Default value: 5 seconds. |
||||
|
google.protobuf.Duration initial_poll_delay = 1; |
||||
|
|
||||
|
// Multiplier to gradually increase delay between subsequent polls until it |
||||
|
// reaches max_poll_delay. |
||||
|
// Default value: 1.5. |
||||
|
float poll_delay_multiplier = 2; |
||||
|
|
||||
|
// Maximum time between two subsequent poll requests. |
||||
|
// Default value: 45 seconds. |
||||
|
google.protobuf.Duration max_poll_delay = 3; |
||||
|
|
||||
|
// Total polling timeout. |
||||
|
// Default value: 5 minutes. |
||||
|
google.protobuf.Duration total_poll_timeout = 4; |
||||
|
} |
||||
|
|
||||
|
// The fully qualified name of the method, for which the options below apply. |
||||
|
// This is used to find the method to apply the options. |
||||
|
string selector = 1; |
||||
|
|
||||
|
// Describes settings to use for long-running operations when generating |
||||
|
// API methods for RPCs. Complements RPCs that use the annotations in |
||||
|
// google/longrunning/operations.proto. |
||||
|
// |
||||
|
// Example of a YAML configuration:: |
||||
|
// |
||||
|
// publishing: |
||||
|
// method_settings: |
||||
|
// - selector: google.cloud.speech.v2.Speech.BatchRecognize |
||||
|
// long_running: |
||||
|
// initial_poll_delay: |
||||
|
// seconds: 60 # 1 minute |
||||
|
// poll_delay_multiplier: 1.5 |
||||
|
// max_poll_delay: |
||||
|
// seconds: 360 # 6 minutes |
||||
|
// total_poll_timeout: |
||||
|
// seconds: 54000 # 90 minutes |
||||
|
LongRunning long_running = 2; |
||||
|
} |
||||
|
|
||||
|
// The organization for which the client libraries are being published. |
||||
|
// Affects the url where generated docs are published, etc. |
||||
|
enum ClientLibraryOrganization { |
||||
|
// Not useful. |
||||
|
CLIENT_LIBRARY_ORGANIZATION_UNSPECIFIED = 0; |
||||
|
|
||||
|
// Google Cloud Platform Org. |
||||
|
CLOUD = 1; |
||||
|
|
||||
|
// Ads (Advertising) Org. |
||||
|
ADS = 2; |
||||
|
|
||||
|
// Photos Org. |
||||
|
PHOTOS = 3; |
||||
|
|
||||
|
// Street View Org. |
||||
|
STREET_VIEW = 4; |
||||
|
|
||||
|
// Shopping Org. |
||||
|
SHOPPING = 5; |
||||
|
|
||||
|
// Geo Org. |
||||
|
GEO = 6; |
||||
|
|
||||
|
// Generative AI - https://developers.generativeai.google |
||||
|
GENERATIVE_AI = 7; |
||||
|
} |
||||
|
|
||||
|
// To where should client libraries be published? |
||||
|
enum ClientLibraryDestination { |
||||
|
// Client libraries will neither be generated nor published to package |
||||
|
// managers. |
||||
|
CLIENT_LIBRARY_DESTINATION_UNSPECIFIED = 0; |
||||
|
|
||||
|
// Generate the client library in a repo under github.com/googleapis, |
||||
|
// but don't publish it to package managers. |
||||
|
GITHUB = 10; |
||||
|
|
||||
|
// Publish the library to package managers like nuget.org and npmjs.com. |
||||
|
PACKAGE_MANAGER = 20; |
||||
|
} |
@ -0,0 +1,90 @@ |
|||||
|
// Copyright 2023 Google LLC |
||||
|
// |
||||
|
// Licensed under the Apache License, Version 2.0 (the "License"); |
||||
|
// you may not use this file except in compliance with the License. |
||||
|
// You may obtain a copy of the License at |
||||
|
// |
||||
|
// http://www.apache.org/licenses/LICENSE-2.0 |
||||
|
// |
||||
|
// Unless required by applicable law or agreed to in writing, software |
||||
|
// distributed under the License is distributed on an "AS IS" BASIS, |
||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
|
// See the License for the specific language governing permissions and |
||||
|
// limitations under the License. |
||||
|
|
||||
|
syntax = "proto3"; |
||||
|
|
||||
|
package google.api; |
||||
|
|
||||
|
import "google/protobuf/descriptor.proto"; |
||||
|
|
||||
|
option go_package = "google.golang.org/genproto/googleapis/api/annotations;annotations"; |
||||
|
option java_multiple_files = true; |
||||
|
option java_outer_classname = "FieldBehaviorProto"; |
||||
|
option java_package = "com.google.api"; |
||||
|
option objc_class_prefix = "GAPI"; |
||||
|
|
||||
|
extend google.protobuf.FieldOptions { |
||||
|
// A designation of a specific field behavior (required, output only, etc.) |
||||
|
// in protobuf messages. |
||||
|
// |
||||
|
// Examples: |
||||
|
// |
||||
|
// string name = 1 [(google.api.field_behavior) = REQUIRED]; |
||||
|
// State state = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; |
||||
|
// google.protobuf.Duration ttl = 1 |
||||
|
// [(google.api.field_behavior) = INPUT_ONLY]; |
||||
|
// google.protobuf.Timestamp expire_time = 1 |
||||
|
// [(google.api.field_behavior) = OUTPUT_ONLY, |
||||
|
// (google.api.field_behavior) = IMMUTABLE]; |
||||
|
repeated google.api.FieldBehavior field_behavior = 1052; |
||||
|
} |
||||
|
|
||||
|
// An indicator of the behavior of a given field (for example, that a field |
||||
|
// is required in requests, or given as output but ignored as input). |
||||
|
// This **does not** change the behavior in protocol buffers itself; it only |
||||
|
// denotes the behavior and may affect how API tooling handles the field. |
||||
|
// |
||||
|
// Note: This enum **may** receive new values in the future. |
||||
|
enum FieldBehavior { |
||||
|
// Conventional default for enums. Do not use this. |
||||
|
FIELD_BEHAVIOR_UNSPECIFIED = 0; |
||||
|
|
||||
|
// Specifically denotes a field as optional. |
||||
|
// While all fields in protocol buffers are optional, this may be specified |
||||
|
// for emphasis if appropriate. |
||||
|
OPTIONAL = 1; |
||||
|
|
||||
|
// Denotes a field as required. |
||||
|
// This indicates that the field **must** be provided as part of the request, |
||||
|
// and failure to do so will cause an error (usually `INVALID_ARGUMENT`). |
||||
|
REQUIRED = 2; |
||||
|
|
||||
|
// Denotes a field as output only. |
||||
|
// This indicates that the field is provided in responses, but including the |
||||
|
// field in a request does nothing (the server *must* ignore it and |
||||
|
// *must not* throw an error as a result of the field's presence). |
||||
|
OUTPUT_ONLY = 3; |
||||
|
|
||||
|
// Denotes a field as input only. |
||||
|
// This indicates that the field is provided in requests, and the |
||||
|
// corresponding field is not included in output. |
||||
|
INPUT_ONLY = 4; |
||||
|
|
||||
|
// Denotes a field as immutable. |
||||
|
// This indicates that the field may be set once in a request to create a |
||||
|
// resource, but may not be changed thereafter. |
||||
|
IMMUTABLE = 5; |
||||
|
|
||||
|
// Denotes that a (repeated) field is an unordered list. |
||||
|
// This indicates that the service may provide the elements of the list |
||||
|
// in any arbitrary order, rather than the order the user originally |
||||
|
// provided. Additionally, the list's order may or may not be stable. |
||||
|
UNORDERED_LIST = 6; |
||||
|
|
||||
|
// Denotes that this field returns a non-empty default value if not set. |
||||
|
// This indicates that if the user provides the empty value in a request, |
||||
|
// a non-empty value will be returned. The user will not be aware of what |
||||
|
// non-empty value to expect. |
||||
|
NON_EMPTY_DEFAULT = 7; |
||||
|
} |
@ -0,0 +1,379 @@ |
|||||
|
// Copyright 2023 Google LLC |
||||
|
// |
||||
|
// Licensed under the Apache License, Version 2.0 (the "License"); |
||||
|
// you may not use this file except in compliance with the License. |
||||
|
// You may obtain a copy of the License at |
||||
|
// |
||||
|
// http://www.apache.org/licenses/LICENSE-2.0 |
||||
|
// |
||||
|
// Unless required by applicable law or agreed to in writing, software |
||||
|
// distributed under the License is distributed on an "AS IS" BASIS, |
||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
|
// See the License for the specific language governing permissions and |
||||
|
// limitations under the License. |
||||
|
|
||||
|
syntax = "proto3"; |
||||
|
|
||||
|
package google.api; |
||||
|
|
||||
|
option cc_enable_arenas = true; |
||||
|
option go_package = "google.golang.org/genproto/googleapis/api/annotations;annotations"; |
||||
|
option java_multiple_files = true; |
||||
|
option java_outer_classname = "HttpProto"; |
||||
|
option java_package = "com.google.api"; |
||||
|
option objc_class_prefix = "GAPI"; |
||||
|
|
||||
|
// Defines the HTTP configuration for an API service. It contains a list of |
||||
|
// [HttpRule][google.api.HttpRule], each specifying the mapping of an RPC method |
||||
|
// to one or more HTTP REST API methods. |
||||
|
message Http { |
||||
|
// A list of HTTP configuration rules that apply to individual API methods. |
||||
|
// |
||||
|
// **NOTE:** All service configuration rules follow "last one wins" order. |
||||
|
repeated HttpRule rules = 1; |
||||
|
|
||||
|
// When set to true, URL path parameters will be fully URI-decoded except in |
||||
|
// cases of single segment matches in reserved expansion, where "%2F" will be |
||||
|
// left encoded. |
||||
|
// |
||||
|
// The default behavior is to not decode RFC 6570 reserved characters in multi |
||||
|
// segment matches. |
||||
|
bool fully_decode_reserved_expansion = 2; |
||||
|
} |
||||
|
|
||||
|
// # gRPC Transcoding |
||||
|
// |
||||
|
// gRPC Transcoding is a feature for mapping between a gRPC method and one or |
||||
|
// more HTTP REST endpoints. It allows developers to build a single API service |
||||
|
// that supports both gRPC APIs and REST APIs. Many systems, including [Google |
||||
|
// APIs](https://github.com/googleapis/googleapis), |
||||
|
// [Cloud Endpoints](https://cloud.google.com/endpoints), [gRPC |
||||
|
// Gateway](https://github.com/grpc-ecosystem/grpc-gateway), |
||||
|
// and [Envoy](https://github.com/envoyproxy/envoy) proxy support this feature |
||||
|
// and use it for large scale production services. |
||||
|
// |
||||
|
// `HttpRule` defines the schema of the gRPC/REST mapping. The mapping specifies |
||||
|
// how different portions of the gRPC request message are mapped to the URL |
||||
|
// path, URL query parameters, and HTTP request body. It also controls how the |
||||
|
// gRPC response message is mapped to the HTTP response body. `HttpRule` is |
||||
|
// typically specified as an `google.api.http` annotation on the gRPC method. |
||||
|
// |
||||
|
// Each mapping specifies a URL path template and an HTTP method. The path |
||||
|
// template may refer to one or more fields in the gRPC request message, as long |
||||
|
// as each field is a non-repeated field with a primitive (non-message) type. |
||||
|
// The path template controls how fields of the request message are mapped to |
||||
|
// the URL path. |
||||
|
// |
||||
|
// Example: |
||||
|
// |
||||
|
// service Messaging { |
||||
|
// rpc GetMessage(GetMessageRequest) returns (Message) { |
||||
|
// option (google.api.http) = { |
||||
|
// get: "/v1/{name=messages/*}" |
||||
|
// }; |
||||
|
// } |
||||
|
// } |
||||
|
// message GetMessageRequest { |
||||
|
// string name = 1; // Mapped to URL path. |
||||
|
// } |
||||
|
// message Message { |
||||
|
// string text = 1; // The resource content. |
||||
|
// } |
||||
|
// |
||||
|
// This enables an HTTP REST to gRPC mapping as below: |
||||
|
// |
||||
|
// HTTP | gRPC |
||||
|
// -----|----- |
||||
|
// `GET /v1/messages/123456` | `GetMessage(name: "messages/123456")` |
||||
|
// |
||||
|
// Any fields in the request message which are not bound by the path template |
||||
|
// automatically become HTTP query parameters if there is no HTTP request body. |
||||
|
// For example: |
||||
|
// |
||||
|
// service Messaging { |
||||
|
// rpc GetMessage(GetMessageRequest) returns (Message) { |
||||
|
// option (google.api.http) = { |
||||
|
// get:"/v1/messages/{message_id}" |
||||
|
// }; |
||||
|
// } |
||||
|
// } |
||||
|
// message GetMessageRequest { |
||||
|
// message SubMessage { |
||||
|
// string subfield = 1; |
||||
|
// } |
||||
|
// string message_id = 1; // Mapped to URL path. |
||||
|
// int64 revision = 2; // Mapped to URL query parameter `revision`. |
||||
|
// SubMessage sub = 3; // Mapped to URL query parameter `sub.subfield`. |
||||
|
// } |
||||
|
// |
||||
|
// This enables a HTTP JSON to RPC mapping as below: |
||||
|
// |
||||
|
// HTTP | gRPC |
||||
|
// -----|----- |
||||
|
// `GET /v1/messages/123456?revision=2&sub.subfield=foo` | |
||||
|
// `GetMessage(message_id: "123456" revision: 2 sub: SubMessage(subfield: |
||||
|
// "foo"))` |
||||
|
// |
||||
|
// Note that fields which are mapped to URL query parameters must have a |
||||
|
// primitive type or a repeated primitive type or a non-repeated message type. |
||||
|
// In the case of a repeated type, the parameter can be repeated in the URL |
||||
|
// as `...?param=A¶m=B`. In the case of a message type, each field of the |
||||
|
// message is mapped to a separate parameter, such as |
||||
|
// `...?foo.a=A&foo.b=B&foo.c=C`. |
||||
|
// |
||||
|
// For HTTP methods that allow a request body, the `body` field |
||||
|
// specifies the mapping. Consider a REST update method on the |
||||
|
// message resource collection: |
||||
|
// |
||||
|
// service Messaging { |
||||
|
// rpc UpdateMessage(UpdateMessageRequest) returns (Message) { |
||||
|
// option (google.api.http) = { |
||||
|
// patch: "/v1/messages/{message_id}" |
||||
|
// body: "message" |
||||
|
// }; |
||||
|
// } |
||||
|
// } |
||||
|
// message UpdateMessageRequest { |
||||
|
// string message_id = 1; // mapped to the URL |
||||
|
// Message message = 2; // mapped to the body |
||||
|
// } |
||||
|
// |
||||
|
// The following HTTP JSON to RPC mapping is enabled, where the |
||||
|
// representation of the JSON in the request body is determined by |
||||
|
// protos JSON encoding: |
||||
|
// |
||||
|
// HTTP | gRPC |
||||
|
// -----|----- |
||||
|
// `PATCH /v1/messages/123456 { "text": "Hi!" }` | `UpdateMessage(message_id: |
||||
|
// "123456" message { text: "Hi!" })` |
||||
|
// |
||||
|
// The special name `*` can be used in the body mapping to define that |
||||
|
// every field not bound by the path template should be mapped to the |
||||
|
// request body. This enables the following alternative definition of |
||||
|
// the update method: |
||||
|
// |
||||
|
// service Messaging { |
||||
|
// rpc UpdateMessage(Message) returns (Message) { |
||||
|
// option (google.api.http) = { |
||||
|
// patch: "/v1/messages/{message_id}" |
||||
|
// body: "*" |
||||
|
// }; |
||||
|
// } |
||||
|
// } |
||||
|
// message Message { |
||||
|
// string message_id = 1; |
||||
|
// string text = 2; |
||||
|
// } |
||||
|
// |
||||
|
// |
||||
|
// The following HTTP JSON to RPC mapping is enabled: |
||||
|
// |
||||
|
// HTTP | gRPC |
||||
|
// -----|----- |
||||
|
// `PATCH /v1/messages/123456 { "text": "Hi!" }` | `UpdateMessage(message_id: |
||||
|
// "123456" text: "Hi!")` |
||||
|
// |
||||
|
// Note that when using `*` in the body mapping, it is not possible to |
||||
|
// have HTTP parameters, as all fields not bound by the path end in |
||||
|
// the body. This makes this option more rarely used in practice when |
||||
|
// defining REST APIs. The common usage of `*` is in custom methods |
||||
|
// which don't use the URL at all for transferring data. |
||||
|
// |
||||
|
// It is possible to define multiple HTTP methods for one RPC by using |
||||
|
// the `additional_bindings` option. Example: |
||||
|
// |
||||
|
// service Messaging { |
||||
|
// rpc GetMessage(GetMessageRequest) returns (Message) { |
||||
|
// option (google.api.http) = { |
||||
|
// get: "/v1/messages/{message_id}" |
||||
|
// additional_bindings { |
||||
|
// get: "/v1/users/{user_id}/messages/{message_id}" |
||||
|
// } |
||||
|
// }; |
||||
|
// } |
||||
|
// } |
||||
|
// message GetMessageRequest { |
||||
|
// string message_id = 1; |
||||
|
// string user_id = 2; |
||||
|
// } |
||||
|
// |
||||
|
// This enables the following two alternative HTTP JSON to RPC mappings: |
||||
|
// |
||||
|
// HTTP | gRPC |
||||
|
// -----|----- |
||||
|
// `GET /v1/messages/123456` | `GetMessage(message_id: "123456")` |
||||
|
// `GET /v1/users/me/messages/123456` | `GetMessage(user_id: "me" message_id: |
||||
|
// "123456")` |
||||
|
// |
||||
|
// ## Rules for HTTP mapping |
||||
|
// |
||||
|
// 1. Leaf request fields (recursive expansion nested messages in the request |
||||
|
// message) are classified into three categories: |
||||
|
// - Fields referred by the path template. They are passed via the URL path. |
||||
|
// - Fields referred by the [HttpRule.body][google.api.HttpRule.body]. They |
||||
|
// are passed via the HTTP |
||||
|
// request body. |
||||
|
// - All other fields are passed via the URL query parameters, and the |
||||
|
// parameter name is the field path in the request message. A repeated |
||||
|
// field can be represented as multiple query parameters under the same |
||||
|
// name. |
||||
|
// 2. If [HttpRule.body][google.api.HttpRule.body] is "*", there is no URL |
||||
|
// query parameter, all fields |
||||
|
// are passed via URL path and HTTP request body. |
||||
|
// 3. If [HttpRule.body][google.api.HttpRule.body] is omitted, there is no HTTP |
||||
|
// request body, all |
||||
|
// fields are passed via URL path and URL query parameters. |
||||
|
// |
||||
|
// ### Path template syntax |
||||
|
// |
||||
|
// Template = "/" Segments [ Verb ] ; |
||||
|
// Segments = Segment { "/" Segment } ; |
||||
|
// Segment = "*" | "**" | LITERAL | Variable ; |
||||
|
// Variable = "{" FieldPath [ "=" Segments ] "}" ; |
||||
|
// FieldPath = IDENT { "." IDENT } ; |
||||
|
// Verb = ":" LITERAL ; |
||||
|
// |
||||
|
// The syntax `*` matches a single URL path segment. The syntax `**` matches |
||||
|
// zero or more URL path segments, which must be the last part of the URL path |
||||
|
// except the `Verb`. |
||||
|
// |
||||
|
// The syntax `Variable` matches part of the URL path as specified by its |
||||
|
// template. A variable template must not contain other variables. If a variable |
||||
|
// matches a single path segment, its template may be omitted, e.g. `{var}` |
||||
|
// is equivalent to `{var=*}`. |
||||
|
// |
||||
|
// The syntax `LITERAL` matches literal text in the URL path. If the `LITERAL` |
||||
|
// contains any reserved character, such characters should be percent-encoded |
||||
|
// before the matching. |
||||
|
// |
||||
|
// If a variable contains exactly one path segment, such as `"{var}"` or |
||||
|
// `"{var=*}"`, when such a variable is expanded into a URL path on the client |
||||
|
// side, all characters except `[-_.~0-9a-zA-Z]` are percent-encoded. The |
||||
|
// server side does the reverse decoding. Such variables show up in the |
||||
|
// [Discovery |
||||
|
// Document](https://developers.google.com/discovery/v1/reference/apis) as |
||||
|
// `{var}`. |
||||
|
// |
||||
|
// If a variable contains multiple path segments, such as `"{var=foo/*}"` |
||||
|
// or `"{var=**}"`, when such a variable is expanded into a URL path on the |
||||
|
// client side, all characters except `[-_.~/0-9a-zA-Z]` are percent-encoded. |
||||
|
// The server side does the reverse decoding, except "%2F" and "%2f" are left |
||||
|
// unchanged. Such variables show up in the |
||||
|
// [Discovery |
||||
|
// Document](https://developers.google.com/discovery/v1/reference/apis) as |
||||
|
// `{+var}`. |
||||
|
// |
||||
|
// ## Using gRPC API Service Configuration |
||||
|
// |
||||
|
// gRPC API Service Configuration (service config) is a configuration language |
||||
|
// for configuring a gRPC service to become a user-facing product. The |
||||
|
// service config is simply the YAML representation of the `google.api.Service` |
||||
|
// proto message. |
||||
|
// |
||||
|
// As an alternative to annotating your proto file, you can configure gRPC |
||||
|
// transcoding in your service config YAML files. You do this by specifying a |
||||
|
// `HttpRule` that maps the gRPC method to a REST endpoint, achieving the same |
||||
|
// effect as the proto annotation. This can be particularly useful if you |
||||
|
// have a proto that is reused in multiple services. Note that any transcoding |
||||
|
// specified in the service config will override any matching transcoding |
||||
|
// configuration in the proto. |
||||
|
// |
||||
|
// Example: |
||||
|
// |
||||
|
// http: |
||||
|
// rules: |
||||
|
// # Selects a gRPC method and applies HttpRule to it. |
||||
|
// - selector: example.v1.Messaging.GetMessage |
||||
|
// get: /v1/messages/{message_id}/{sub.subfield} |
||||
|
// |
||||
|
// ## Special notes |
||||
|
// |
||||
|
// When gRPC Transcoding is used to map a gRPC to JSON REST endpoints, the |
||||
|
// proto to JSON conversion must follow the [proto3 |
||||
|
// specification](https://developers.google.com/protocol-buffers/docs/proto3#json). |
||||
|
// |
||||
|
// While the single segment variable follows the semantics of |
||||
|
// [RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.2 Simple String |
||||
|
// Expansion, the multi segment variable **does not** follow RFC 6570 Section |
||||
|
// 3.2.3 Reserved Expansion. The reason is that the Reserved Expansion |
||||
|
// does not expand special characters like `?` and `#`, which would lead |
||||
|
// to invalid URLs. As the result, gRPC Transcoding uses a custom encoding |
||||
|
// for multi segment variables. |
||||
|
// |
||||
|
// The path variables **must not** refer to any repeated or mapped field, |
||||
|
// because client libraries are not capable of handling such variable expansion. |
||||
|
// |
||||
|
// The path variables **must not** capture the leading "/" character. The reason |
||||
|
// is that the most common use case "{var}" does not capture the leading "/" |
||||
|
// character. For consistency, all path variables must share the same behavior. |
||||
|
// |
||||
|
// Repeated message fields must not be mapped to URL query parameters, because |
||||
|
// no client library can support such complicated mapping. |
||||
|
// |
||||
|
// If an API needs to use a JSON array for request or response body, it can map |
||||
|
// the request or response body to a repeated field. However, some gRPC |
||||
|
// Transcoding implementations may not support this feature. |
||||
|
message HttpRule { |
||||
|
// Selects a method to which this rule applies. |
||||
|
// |
||||
|
// Refer to [selector][google.api.DocumentationRule.selector] for syntax |
||||
|
// details. |
||||
|
string selector = 1; |
||||
|
|
||||
|
// Determines the URL pattern is matched by this rules. This pattern can be |
||||
|
// used with any of the {get|put|post|delete|patch} methods. A custom method |
||||
|
// can be defined using the 'custom' field. |
||||
|
oneof pattern { |
||||
|
// Maps to HTTP GET. Used for listing and getting information about |
||||
|
// resources. |
||||
|
string get = 2; |
||||
|
|
||||
|
// Maps to HTTP PUT. Used for replacing a resource. |
||||
|
string put = 3; |
||||
|
|
||||
|
// Maps to HTTP POST. Used for creating a resource or performing an action. |
||||
|
string post = 4; |
||||
|
|
||||
|
// Maps to HTTP DELETE. Used for deleting a resource. |
||||
|
string delete = 5; |
||||
|
|
||||
|
// Maps to HTTP PATCH. Used for updating a resource. |
||||
|
string patch = 6; |
||||
|
|
||||
|
// The custom pattern is used for specifying an HTTP method that is not |
||||
|
// included in the `pattern` field, such as HEAD, or "*" to leave the |
||||
|
// HTTP method unspecified for this rule. The wild-card rule is useful |
||||
|
// for services that provide content to Web (HTML) clients. |
||||
|
CustomHttpPattern custom = 8; |
||||
|
} |
||||
|
|
||||
|
// The name of the request field whose value is mapped to the HTTP request |
||||
|
// body, or `*` for mapping all request fields not captured by the path |
||||
|
// pattern to the HTTP body, or omitted for not having any HTTP request body. |
||||
|
// |
||||
|
// NOTE: the referred field must be present at the top-level of the request |
||||
|
// message type. |
||||
|
string body = 7; |
||||
|
|
||||
|
// Optional. The name of the response field whose value is mapped to the HTTP |
||||
|
// response body. When omitted, the entire response message will be used |
||||
|
// as the HTTP response body. |
||||
|
// |
||||
|
// NOTE: The referred field must be present at the top-level of the response |
||||
|
// message type. |
||||
|
string response_body = 12; |
||||
|
|
||||
|
// Additional HTTP bindings for the selector. Nested bindings must |
||||
|
// not contain an `additional_bindings` field themselves (that is, |
||||
|
// the nesting may only be one level deep). |
||||
|
repeated HttpRule additional_bindings = 11; |
||||
|
} |
||||
|
|
||||
|
// A custom pattern is used for defining custom HTTP verb. |
||||
|
message CustomHttpPattern { |
||||
|
// The name of this custom HTTP verb. |
||||
|
string kind = 1; |
||||
|
|
||||
|
// The path matched by this custom verb. |
||||
|
string path = 2; |
||||
|
} |
@ -0,0 +1,238 @@ |
|||||
|
// Copyright 2023 Google LLC |
||||
|
// |
||||
|
// Licensed under the Apache License, Version 2.0 (the "License"); |
||||
|
// you may not use this file except in compliance with the License. |
||||
|
// You may obtain a copy of the License at |
||||
|
// |
||||
|
// http://www.apache.org/licenses/LICENSE-2.0 |
||||
|
// |
||||
|
// Unless required by applicable law or agreed to in writing, software |
||||
|
// distributed under the License is distributed on an "AS IS" BASIS, |
||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
|
// See the License for the specific language governing permissions and |
||||
|
// limitations under the License. |
||||
|
|
||||
|
syntax = "proto3"; |
||||
|
|
||||
|
package google.api; |
||||
|
|
||||
|
import "google/protobuf/descriptor.proto"; |
||||
|
|
||||
|
option cc_enable_arenas = true; |
||||
|
option go_package = "google.golang.org/genproto/googleapis/api/annotations;annotations"; |
||||
|
option java_multiple_files = true; |
||||
|
option java_outer_classname = "ResourceProto"; |
||||
|
option java_package = "com.google.api"; |
||||
|
option objc_class_prefix = "GAPI"; |
||||
|
|
||||
|
extend google.protobuf.FieldOptions { |
||||
|
// An annotation that describes a resource reference, see |
||||
|
// [ResourceReference][]. |
||||
|
google.api.ResourceReference resource_reference = 1055; |
||||
|
} |
||||
|
|
||||
|
extend google.protobuf.FileOptions { |
||||
|
// An annotation that describes a resource definition without a corresponding |
||||
|
// message; see [ResourceDescriptor][]. |
||||
|
repeated google.api.ResourceDescriptor resource_definition = 1053; |
||||
|
} |
||||
|
|
||||
|
extend google.protobuf.MessageOptions { |
||||
|
// An annotation that describes a resource definition, see |
||||
|
// [ResourceDescriptor][]. |
||||
|
google.api.ResourceDescriptor resource = 1053; |
||||
|
} |
||||
|
|
||||
|
// A simple descriptor of a resource type. |
||||
|
// |
||||
|
// ResourceDescriptor annotates a resource message (either by means of a |
||||
|
// protobuf annotation or use in the service config), and associates the |
||||
|
// resource's schema, the resource type, and the pattern of the resource name. |
||||
|
// |
||||
|
// Example: |
||||
|
// |
||||
|
// message Topic { |
||||
|
// // Indicates this message defines a resource schema. |
||||
|
// // Declares the resource type in the format of {service}/{kind}. |
||||
|
// // For Kubernetes resources, the format is {api group}/{kind}. |
||||
|
// option (google.api.resource) = { |
||||
|
// type: "pubsub.googleapis.com/Topic" |
||||
|
// pattern: "projects/{project}/topics/{topic}" |
||||
|
// }; |
||||
|
// } |
||||
|
// |
||||
|
// The ResourceDescriptor Yaml config will look like: |
||||
|
// |
||||
|
// resources: |
||||
|
// - type: "pubsub.googleapis.com/Topic" |
||||
|
// pattern: "projects/{project}/topics/{topic}" |
||||
|
// |
||||
|
// Sometimes, resources have multiple patterns, typically because they can |
||||
|
// live under multiple parents. |
||||
|
// |
||||
|
// Example: |
||||
|
// |
||||
|
// message LogEntry { |
||||
|
// option (google.api.resource) = { |
||||
|
// type: "logging.googleapis.com/LogEntry" |
||||
|
// pattern: "projects/{project}/logs/{log}" |
||||
|
// pattern: "folders/{folder}/logs/{log}" |
||||
|
// pattern: "organizations/{organization}/logs/{log}" |
||||
|
// pattern: "billingAccounts/{billing_account}/logs/{log}" |
||||
|
// }; |
||||
|
// } |
||||
|
// |
||||
|
// The ResourceDescriptor Yaml config will look like: |
||||
|
// |
||||
|
// resources: |
||||
|
// - type: 'logging.googleapis.com/LogEntry' |
||||
|
// pattern: "projects/{project}/logs/{log}" |
||||
|
// pattern: "folders/{folder}/logs/{log}" |
||||
|
// pattern: "organizations/{organization}/logs/{log}" |
||||
|
// pattern: "billingAccounts/{billing_account}/logs/{log}" |
||||
|
message ResourceDescriptor { |
||||
|
// A description of the historical or future-looking state of the |
||||
|
// resource pattern. |
||||
|
enum History { |
||||
|
// The "unset" value. |
||||
|
HISTORY_UNSPECIFIED = 0; |
||||
|
|
||||
|
// The resource originally had one pattern and launched as such, and |
||||
|
// additional patterns were added later. |
||||
|
ORIGINALLY_SINGLE_PATTERN = 1; |
||||
|
|
||||
|
// The resource has one pattern, but the API owner expects to add more |
||||
|
// later. (This is the inverse of ORIGINALLY_SINGLE_PATTERN, and prevents |
||||
|
// that from being necessary once there are multiple patterns.) |
||||
|
FUTURE_MULTI_PATTERN = 2; |
||||
|
} |
||||
|
|
||||
|
// A flag representing a specific style that a resource claims to conform to. |
||||
|
enum Style { |
||||
|
// The unspecified value. Do not use. |
||||
|
STYLE_UNSPECIFIED = 0; |
||||
|
|
||||
|
// This resource is intended to be "declarative-friendly". |
||||
|
// |
||||
|
// Declarative-friendly resources must be more strictly consistent, and |
||||
|
// setting this to true communicates to tools that this resource should |
||||
|
// adhere to declarative-friendly expectations. |
||||
|
// |
||||
|
// Note: This is used by the API linter (linter.aip.dev) to enable |
||||
|
// additional checks. |
||||
|
DECLARATIVE_FRIENDLY = 1; |
||||
|
} |
||||
|
|
||||
|
// The resource type. It must be in the format of |
||||
|
// {service_name}/{resource_type_kind}. The `resource_type_kind` must be |
||||
|
// singular and must not include version numbers. |
||||
|
// |
||||
|
// Example: `storage.googleapis.com/Bucket` |
||||
|
// |
||||
|
// The value of the resource_type_kind must follow the regular expression |
||||
|
// /[A-Za-z][a-zA-Z0-9]+/. It should start with an upper case character and |
||||
|
// should use PascalCase (UpperCamelCase). The maximum number of |
||||
|
// characters allowed for the `resource_type_kind` is 100. |
||||
|
string type = 1; |
||||
|
|
||||
|
// Optional. The relative resource name pattern associated with this resource |
||||
|
// type. The DNS prefix of the full resource name shouldn't be specified here. |
||||
|
// |
||||
|
// The path pattern must follow the syntax, which aligns with HTTP binding |
||||
|
// syntax: |
||||
|
// |
||||
|
// Template = Segment { "/" Segment } ; |
||||
|
// Segment = LITERAL | Variable ; |
||||
|
// Variable = "{" LITERAL "}" ; |
||||
|
// |
||||
|
// Examples: |
||||
|
// |
||||
|
// - "projects/{project}/topics/{topic}" |
||||
|
// - "projects/{project}/knowledgeBases/{knowledge_base}" |
||||
|
// |
||||
|
// The components in braces correspond to the IDs for each resource in the |
||||
|
// hierarchy. It is expected that, if multiple patterns are provided, |
||||
|
// the same component name (e.g. "project") refers to IDs of the same |
||||
|
// type of resource. |
||||
|
repeated string pattern = 2; |
||||
|
|
||||
|
// Optional. The field on the resource that designates the resource name |
||||
|
// field. If omitted, this is assumed to be "name". |
||||
|
string name_field = 3; |
||||
|
|
||||
|
// Optional. The historical or future-looking state of the resource pattern. |
||||
|
// |
||||
|
// Example: |
||||
|
// |
||||
|
// // The InspectTemplate message originally only supported resource |
||||
|
// // names with organization, and project was added later. |
||||
|
// message InspectTemplate { |
||||
|
// option (google.api.resource) = { |
||||
|
// type: "dlp.googleapis.com/InspectTemplate" |
||||
|
// pattern: |
||||
|
// "organizations/{organization}/inspectTemplates/{inspect_template}" |
||||
|
// pattern: "projects/{project}/inspectTemplates/{inspect_template}" |
||||
|
// history: ORIGINALLY_SINGLE_PATTERN |
||||
|
// }; |
||||
|
// } |
||||
|
History history = 4; |
||||
|
|
||||
|
// The plural name used in the resource name and permission names, such as |
||||
|
// 'projects' for the resource name of 'projects/{project}' and the permission |
||||
|
// name of 'cloudresourcemanager.googleapis.com/projects.get'. It is the same |
||||
|
// concept of the `plural` field in k8s CRD spec |
||||
|
// https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions/ |
||||
|
// |
||||
|
// Note: The plural form is required even for singleton resources. See |
||||
|
// https://aip.dev/156 |
||||
|
string plural = 5; |
||||
|
|
||||
|
// The same concept of the `singular` field in k8s CRD spec |
||||
|
// https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions/ |
||||
|
// Such as "project" for the `resourcemanager.googleapis.com/Project` type. |
||||
|
string singular = 6; |
||||
|
|
||||
|
// Style flag(s) for this resource. |
||||
|
// These indicate that a resource is expected to conform to a given |
||||
|
// style. See the specific style flags for additional information. |
||||
|
repeated Style style = 10; |
||||
|
} |
||||
|
|
||||
|
// Defines a proto annotation that describes a string field that refers to |
||||
|
// an API resource. |
||||
|
message ResourceReference { |
||||
|
// The resource type that the annotated field references. |
||||
|
// |
||||
|
// Example: |
||||
|
// |
||||
|
// message Subscription { |
||||
|
// string topic = 2 [(google.api.resource_reference) = { |
||||
|
// type: "pubsub.googleapis.com/Topic" |
||||
|
// }]; |
||||
|
// } |
||||
|
// |
||||
|
// Occasionally, a field may reference an arbitrary resource. In this case, |
||||
|
// APIs use the special value * in their resource reference. |
||||
|
// |
||||
|
// Example: |
||||
|
// |
||||
|
// message GetIamPolicyRequest { |
||||
|
// string resource = 2 [(google.api.resource_reference) = { |
||||
|
// type: "*" |
||||
|
// }]; |
||||
|
// } |
||||
|
string type = 1; |
||||
|
|
||||
|
// The resource type of a child collection that the annotated field |
||||
|
// references. This is useful for annotating the `parent` field that |
||||
|
// doesn't have a fixed resource type. |
||||
|
// |
||||
|
// Example: |
||||
|
// |
||||
|
// message ListLogEntriesRequest { |
||||
|
// string parent = 1 [(google.api.resource_reference) = { |
||||
|
// child_type: "logging.googleapis.com/LogEntry" |
||||
|
// }; |
||||
|
// } |
||||
|
string child_type = 2; |
||||
|
} |
@ -0,0 +1,35 @@ |
|||||
|
syntax = "proto3"; |
||||
|
|
||||
|
package public_pb; |
||||
|
|
||||
|
import "google/api/annotations.proto"; |
||||
|
|
||||
|
option go_package = "github.com/seaweedfs/seaweedfs/weed/pb/public_pb"; |
||||
|
option java_package = "seaweedfs.client"; |
||||
|
option java_outer_classname = "PublicProto"; |
||||
|
|
||||
|
///////////// |
||||
|
// Service // |
||||
|
///////////// |
||||
|
|
||||
|
// Public SeaweedFS API |
||||
|
service SeaweedFS { |
||||
|
rpc V1GetInfo (V1GetInfoRequest) returns (V1GetInfoResponse) { |
||||
|
option (google.api.http) = { |
||||
|
get: "/v1/info" |
||||
|
}; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
////////////// |
||||
|
// Messages // |
||||
|
////////////// |
||||
|
|
||||
|
// Request message for SeaweedFS.v1GetInfo |
||||
|
message V1GetInfoRequest {} |
||||
|
|
||||
|
// Response message for SeaweedFS.v1GetInfo |
||||
|
message V1GetInfoResponse { |
||||
|
// Version of the API |
||||
|
string version = 1; |
||||
|
} |
@ -0,0 +1,213 @@ |
|||||
|
// Code generated by protoc-gen-go. DO NOT EDIT.
|
||||
|
// versions:
|
||||
|
// protoc-gen-go v1.28.1
|
||||
|
// protoc v3.21.12
|
||||
|
// source: public.proto
|
||||
|
|
||||
|
package public_pb |
||||
|
|
||||
|
import ( |
||||
|
_ "google.golang.org/genproto/googleapis/api/annotations" |
||||
|
protoreflect "google.golang.org/protobuf/reflect/protoreflect" |
||||
|
protoimpl "google.golang.org/protobuf/runtime/protoimpl" |
||||
|
reflect "reflect" |
||||
|
sync "sync" |
||||
|
) |
||||
|
|
||||
|
const ( |
||||
|
// Verify that this generated code is sufficiently up-to-date.
|
||||
|
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) |
||||
|
// Verify that runtime/protoimpl is sufficiently up-to-date.
|
||||
|
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) |
||||
|
) |
||||
|
|
||||
|
// Request message for SeaweedFS.v1GetInfo
|
||||
|
type V1GetInfoRequest struct { |
||||
|
state protoimpl.MessageState |
||||
|
sizeCache protoimpl.SizeCache |
||||
|
unknownFields protoimpl.UnknownFields |
||||
|
} |
||||
|
|
||||
|
func (x *V1GetInfoRequest) Reset() { |
||||
|
*x = V1GetInfoRequest{} |
||||
|
if protoimpl.UnsafeEnabled { |
||||
|
mi := &file_public_proto_msgTypes[0] |
||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
||||
|
ms.StoreMessageInfo(mi) |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
func (x *V1GetInfoRequest) String() string { |
||||
|
return protoimpl.X.MessageStringOf(x) |
||||
|
} |
||||
|
|
||||
|
func (*V1GetInfoRequest) ProtoMessage() {} |
||||
|
|
||||
|
func (x *V1GetInfoRequest) ProtoReflect() protoreflect.Message { |
||||
|
mi := &file_public_proto_msgTypes[0] |
||||
|
if protoimpl.UnsafeEnabled && x != nil { |
||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
||||
|
if ms.LoadMessageInfo() == nil { |
||||
|
ms.StoreMessageInfo(mi) |
||||
|
} |
||||
|
return ms |
||||
|
} |
||||
|
return mi.MessageOf(x) |
||||
|
} |
||||
|
|
||||
|
// Deprecated: Use V1GetInfoRequest.ProtoReflect.Descriptor instead.
|
||||
|
func (*V1GetInfoRequest) Descriptor() ([]byte, []int) { |
||||
|
return file_public_proto_rawDescGZIP(), []int{0} |
||||
|
} |
||||
|
|
||||
|
// Response message for SeaweedFS.v1GetInfo
|
||||
|
type V1GetInfoResponse struct { |
||||
|
state protoimpl.MessageState |
||||
|
sizeCache protoimpl.SizeCache |
||||
|
unknownFields protoimpl.UnknownFields |
||||
|
|
||||
|
// Version of the API
|
||||
|
Version string `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"` |
||||
|
} |
||||
|
|
||||
|
func (x *V1GetInfoResponse) Reset() { |
||||
|
*x = V1GetInfoResponse{} |
||||
|
if protoimpl.UnsafeEnabled { |
||||
|
mi := &file_public_proto_msgTypes[1] |
||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
||||
|
ms.StoreMessageInfo(mi) |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
func (x *V1GetInfoResponse) String() string { |
||||
|
return protoimpl.X.MessageStringOf(x) |
||||
|
} |
||||
|
|
||||
|
func (*V1GetInfoResponse) ProtoMessage() {} |
||||
|
|
||||
|
func (x *V1GetInfoResponse) ProtoReflect() protoreflect.Message { |
||||
|
mi := &file_public_proto_msgTypes[1] |
||||
|
if protoimpl.UnsafeEnabled && x != nil { |
||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
||||
|
if ms.LoadMessageInfo() == nil { |
||||
|
ms.StoreMessageInfo(mi) |
||||
|
} |
||||
|
return ms |
||||
|
} |
||||
|
return mi.MessageOf(x) |
||||
|
} |
||||
|
|
||||
|
// Deprecated: Use V1GetInfoResponse.ProtoReflect.Descriptor instead.
|
||||
|
func (*V1GetInfoResponse) Descriptor() ([]byte, []int) { |
||||
|
return file_public_proto_rawDescGZIP(), []int{1} |
||||
|
} |
||||
|
|
||||
|
func (x *V1GetInfoResponse) GetVersion() string { |
||||
|
if x != nil { |
||||
|
return x.Version |
||||
|
} |
||||
|
return "" |
||||
|
} |
||||
|
|
||||
|
var File_public_proto protoreflect.FileDescriptor |
||||
|
|
||||
|
var file_public_proto_rawDesc = []byte{ |
||||
|
0x0a, 0x0c, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x09, |
||||
|
0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x70, 0x62, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, |
||||
|
0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, |
||||
|
0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x12, 0x0a, 0x10, 0x56, 0x31, 0x47, 0x65, 0x74, |
||||
|
0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x2d, 0x0a, 0x11, 0x56, |
||||
|
0x31, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, |
||||
|
0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, |
||||
|
0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x32, 0x65, 0x0a, 0x09, 0x53, 0x65, |
||||
|
0x61, 0x77, 0x65, 0x65, 0x64, 0x46, 0x53, 0x12, 0x58, 0x0a, 0x09, 0x56, 0x31, 0x47, 0x65, 0x74, |
||||
|
0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1b, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x70, 0x62, |
||||
|
0x2e, 0x56, 0x31, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, |
||||
|
0x74, 0x1a, 0x1c, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x70, 0x62, 0x2e, 0x56, 0x31, |
||||
|
0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, |
||||
|
0x10, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0a, 0x12, 0x08, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x66, |
||||
|
0x6f, 0x42, 0x51, 0x0a, 0x10, 0x73, 0x65, 0x61, 0x77, 0x65, 0x65, 0x64, 0x66, 0x73, 0x2e, 0x63, |
||||
|
0x6c, 0x69, 0x65, 0x6e, 0x74, 0x42, 0x0b, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x50, 0x72, 0x6f, |
||||
|
0x74, 0x6f, 0x5a, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, |
||||
|
0x65, 0x61, 0x77, 0x65, 0x65, 0x64, 0x66, 0x73, 0x2f, 0x73, 0x65, 0x61, 0x77, 0x65, 0x65, 0x64, |
||||
|
0x66, 0x73, 0x2f, 0x77, 0x65, 0x65, 0x64, 0x2f, 0x70, 0x62, 0x2f, 0x70, 0x75, 0x62, 0x6c, 0x69, |
||||
|
0x63, 0x5f, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, |
||||
|
} |
||||
|
|
||||
|
var ( |
||||
|
file_public_proto_rawDescOnce sync.Once |
||||
|
file_public_proto_rawDescData = file_public_proto_rawDesc |
||||
|
) |
||||
|
|
||||
|
func file_public_proto_rawDescGZIP() []byte { |
||||
|
file_public_proto_rawDescOnce.Do(func() { |
||||
|
file_public_proto_rawDescData = protoimpl.X.CompressGZIP(file_public_proto_rawDescData) |
||||
|
}) |
||||
|
return file_public_proto_rawDescData |
||||
|
} |
||||
|
|
||||
|
var file_public_proto_msgTypes = make([]protoimpl.MessageInfo, 2) |
||||
|
var file_public_proto_goTypes = []interface{}{ |
||||
|
(*V1GetInfoRequest)(nil), // 0: public_pb.V1GetInfoRequest
|
||||
|
(*V1GetInfoResponse)(nil), // 1: public_pb.V1GetInfoResponse
|
||||
|
} |
||||
|
var file_public_proto_depIdxs = []int32{ |
||||
|
0, // 0: public_pb.SeaweedFS.V1GetInfo:input_type -> public_pb.V1GetInfoRequest
|
||||
|
1, // 1: public_pb.SeaweedFS.V1GetInfo:output_type -> public_pb.V1GetInfoResponse
|
||||
|
1, // [1:2] is the sub-list for method output_type
|
||||
|
0, // [0:1] is the sub-list for method input_type
|
||||
|
0, // [0:0] is the sub-list for extension type_name
|
||||
|
0, // [0:0] is the sub-list for extension extendee
|
||||
|
0, // [0:0] is the sub-list for field type_name
|
||||
|
} |
||||
|
|
||||
|
func init() { file_public_proto_init() } |
||||
|
func file_public_proto_init() { |
||||
|
if File_public_proto != nil { |
||||
|
return |
||||
|
} |
||||
|
if !protoimpl.UnsafeEnabled { |
||||
|
file_public_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { |
||||
|
switch v := v.(*V1GetInfoRequest); i { |
||||
|
case 0: |
||||
|
return &v.state |
||||
|
case 1: |
||||
|
return &v.sizeCache |
||||
|
case 2: |
||||
|
return &v.unknownFields |
||||
|
default: |
||||
|
return nil |
||||
|
} |
||||
|
} |
||||
|
file_public_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { |
||||
|
switch v := v.(*V1GetInfoResponse); i { |
||||
|
case 0: |
||||
|
return &v.state |
||||
|
case 1: |
||||
|
return &v.sizeCache |
||||
|
case 2: |
||||
|
return &v.unknownFields |
||||
|
default: |
||||
|
return nil |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
type x struct{} |
||||
|
out := protoimpl.TypeBuilder{ |
||||
|
File: protoimpl.DescBuilder{ |
||||
|
GoPackagePath: reflect.TypeOf(x{}).PkgPath(), |
||||
|
RawDescriptor: file_public_proto_rawDesc, |
||||
|
NumEnums: 0, |
||||
|
NumMessages: 2, |
||||
|
NumExtensions: 0, |
||||
|
NumServices: 1, |
||||
|
}, |
||||
|
GoTypes: file_public_proto_goTypes, |
||||
|
DependencyIndexes: file_public_proto_depIdxs, |
||||
|
MessageInfos: file_public_proto_msgTypes, |
||||
|
}.Build() |
||||
|
File_public_proto = out.File |
||||
|
file_public_proto_rawDesc = nil |
||||
|
file_public_proto_goTypes = nil |
||||
|
file_public_proto_depIdxs = nil |
||||
|
} |
@ -0,0 +1,105 @@ |
|||||
|
// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
|
||||
|
// versions:
|
||||
|
// - protoc-gen-go-grpc v1.2.0
|
||||
|
// - protoc v3.21.12
|
||||
|
// source: public.proto
|
||||
|
|
||||
|
package public_pb |
||||
|
|
||||
|
import ( |
||||
|
context "context" |
||||
|
grpc "google.golang.org/grpc" |
||||
|
codes "google.golang.org/grpc/codes" |
||||
|
status "google.golang.org/grpc/status" |
||||
|
) |
||||
|
|
||||
|
// This is a compile-time assertion to ensure that this generated file
|
||||
|
// is compatible with the grpc package it is being compiled against.
|
||||
|
// Requires gRPC-Go v1.32.0 or later.
|
||||
|
const _ = grpc.SupportPackageIsVersion7 |
||||
|
|
||||
|
// SeaweedFSClient is the client API for SeaweedFS service.
|
||||
|
//
|
||||
|
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
|
||||
|
type SeaweedFSClient interface { |
||||
|
V1GetInfo(ctx context.Context, in *V1GetInfoRequest, opts ...grpc.CallOption) (*V1GetInfoResponse, error) |
||||
|
} |
||||
|
|
||||
|
type seaweedFSClient struct { |
||||
|
cc grpc.ClientConnInterface |
||||
|
} |
||||
|
|
||||
|
func NewSeaweedFSClient(cc grpc.ClientConnInterface) SeaweedFSClient { |
||||
|
return &seaweedFSClient{cc} |
||||
|
} |
||||
|
|
||||
|
func (c *seaweedFSClient) V1GetInfo(ctx context.Context, in *V1GetInfoRequest, opts ...grpc.CallOption) (*V1GetInfoResponse, error) { |
||||
|
out := new(V1GetInfoResponse) |
||||
|
err := c.cc.Invoke(ctx, "/public_pb.SeaweedFS/V1GetInfo", in, out, opts...) |
||||
|
if err != nil { |
||||
|
return nil, err |
||||
|
} |
||||
|
return out, nil |
||||
|
} |
||||
|
|
||||
|
// SeaweedFSServer is the server API for SeaweedFS service.
|
||||
|
// All implementations must embed UnimplementedSeaweedFSServer
|
||||
|
// for forward compatibility
|
||||
|
type SeaweedFSServer interface { |
||||
|
V1GetInfo(context.Context, *V1GetInfoRequest) (*V1GetInfoResponse, error) |
||||
|
mustEmbedUnimplementedSeaweedFSServer() |
||||
|
} |
||||
|
|
||||
|
// UnimplementedSeaweedFSServer must be embedded to have forward compatible implementations.
|
||||
|
type UnimplementedSeaweedFSServer struct { |
||||
|
} |
||||
|
|
||||
|
func (UnimplementedSeaweedFSServer) V1GetInfo(context.Context, *V1GetInfoRequest) (*V1GetInfoResponse, error) { |
||||
|
return nil, status.Errorf(codes.Unimplemented, "method V1GetInfo not implemented") |
||||
|
} |
||||
|
func (UnimplementedSeaweedFSServer) mustEmbedUnimplementedSeaweedFSServer() {} |
||||
|
|
||||
|
// UnsafeSeaweedFSServer may be embedded to opt out of forward compatibility for this service.
|
||||
|
// Use of this interface is not recommended, as added methods to SeaweedFSServer will
|
||||
|
// result in compilation errors.
|
||||
|
type UnsafeSeaweedFSServer interface { |
||||
|
mustEmbedUnimplementedSeaweedFSServer() |
||||
|
} |
||||
|
|
||||
|
func RegisterSeaweedFSServer(s grpc.ServiceRegistrar, srv SeaweedFSServer) { |
||||
|
s.RegisterService(&SeaweedFS_ServiceDesc, srv) |
||||
|
} |
||||
|
|
||||
|
func _SeaweedFS_V1GetInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { |
||||
|
in := new(V1GetInfoRequest) |
||||
|
if err := dec(in); err != nil { |
||||
|
return nil, err |
||||
|
} |
||||
|
if interceptor == nil { |
||||
|
return srv.(SeaweedFSServer).V1GetInfo(ctx, in) |
||||
|
} |
||||
|
info := &grpc.UnaryServerInfo{ |
||||
|
Server: srv, |
||||
|
FullMethod: "/public_pb.SeaweedFS/V1GetInfo", |
||||
|
} |
||||
|
handler := func(ctx context.Context, req interface{}) (interface{}, error) { |
||||
|
return srv.(SeaweedFSServer).V1GetInfo(ctx, req.(*V1GetInfoRequest)) |
||||
|
} |
||||
|
return interceptor(ctx, in, info, handler) |
||||
|
} |
||||
|
|
||||
|
// SeaweedFS_ServiceDesc is the grpc.ServiceDesc for SeaweedFS service.
|
||||
|
// It's only intended for direct use with grpc.RegisterService,
|
||||
|
// and not to be introspected or modified (even as a copy)
|
||||
|
var SeaweedFS_ServiceDesc = grpc.ServiceDesc{ |
||||
|
ServiceName: "public_pb.SeaweedFS", |
||||
|
HandlerType: (*SeaweedFSServer)(nil), |
||||
|
Methods: []grpc.MethodDesc{ |
||||
|
{ |
||||
|
MethodName: "V1GetInfo", |
||||
|
Handler: _SeaweedFS_V1GetInfo_Handler, |
||||
|
}, |
||||
|
}, |
||||
|
Streams: []grpc.StreamDesc{}, |
||||
|
Metadata: "public.proto", |
||||
|
} |
Write
Preview
Loading…
Cancel
Save
Reference in new issue