From 871323d629c7af401b7195a2cc6bd72d632abbbe Mon Sep 17 00:00:00 2001 From: siloneco Date: Thu, 11 Jan 2024 08:14:19 +0000 Subject: [PATCH 1/4] refactor: rename directory for auth/discord/callback --- .../auth/{discord/callback => discord-callback}/callback.proto | 0 .../callback => discord-callback}/resources/callback.proto | 0 .../{discord/callback => discord-callback}/rpc/callback.proto | 0 3 files changed, 0 insertions(+), 0 deletions(-) rename proto/schema/auth/{discord/callback => discord-callback}/callback.proto (100%) rename proto/schema/auth/{discord/callback => discord-callback}/resources/callback.proto (100%) rename proto/schema/auth/{discord/callback => discord-callback}/rpc/callback.proto (100%) diff --git a/proto/schema/auth/discord/callback/callback.proto b/proto/schema/auth/discord-callback/callback.proto similarity index 100% rename from proto/schema/auth/discord/callback/callback.proto rename to proto/schema/auth/discord-callback/callback.proto diff --git a/proto/schema/auth/discord/callback/resources/callback.proto b/proto/schema/auth/discord-callback/resources/callback.proto similarity index 100% rename from proto/schema/auth/discord/callback/resources/callback.proto rename to proto/schema/auth/discord-callback/resources/callback.proto diff --git a/proto/schema/auth/discord/callback/rpc/callback.proto b/proto/schema/auth/discord-callback/rpc/callback.proto similarity index 100% rename from proto/schema/auth/discord/callback/rpc/callback.proto rename to proto/schema/auth/discord-callback/rpc/callback.proto From c917cae194fa69d76c413b28dbaeb710c9d65f86 Mon Sep 17 00:00:00 2001 From: siloneco Date: Thu, 11 Jan 2024 08:20:01 +0000 Subject: [PATCH 2/4] wip --- proto/schema/auth/discord/discord.proto | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 proto/schema/auth/discord/discord.proto diff --git a/proto/schema/auth/discord/discord.proto b/proto/schema/auth/discord/discord.proto new file mode 100644 index 0000000..5a5de32 --- /dev/null +++ b/proto/schema/auth/discord/discord.proto @@ -0,0 +1,16 @@ +syntax = "proto3"; + +package proto.discord; + +import "proto/Discord/rpc/Discord.proto"; +import "proto/third_party/google/api/annotations.proto"; + +option go_package = "./"; + +service DiscordService { + rpc GetDiscord(google.protobuf.Empty) returns (string) { + option (google.api.http) = { + post : "/v1/auth/discord" + }; + }; +} From a7025ced6f6f7a8eea2c9746ba9a9cf9aa528306 Mon Sep 17 00:00:00 2001 From: siloneco Date: Thu, 11 Jan 2024 08:50:53 +0000 Subject: [PATCH 3/4] feat: implement auth/discord --- openapi/api_definition.swagger.yaml | 226 ++++++++++++++++++++ proto/schema/auth/discord/discord.proto | 7 +- proto/third_party/google/api/wrappers.proto | 123 +++++++++++ 3 files changed, 353 insertions(+), 3 deletions(-) create mode 100644 openapi/api_definition.swagger.yaml create mode 100644 proto/third_party/google/api/wrappers.proto diff --git a/openapi/api_definition.swagger.yaml b/openapi/api_definition.swagger.yaml new file mode 100644 index 0000000..11c0c07 --- /dev/null +++ b/openapi/api_definition.swagger.yaml @@ -0,0 +1,226 @@ +swagger: "2.0" +info: + title: proto/schema/tags/tags.proto + version: version not set +tags: + - name: TagsService + - name: DiscordService + - name: DiscordCallbackService + - name: MeService +consumes: + - application/json +produces: + - application/json +paths: + /v1/auth/discord: + post: + operationId: DiscordService_GetDiscord + responses: + "200": + description: A successful response. + schema: + type: string + "422": + description: Validation Error + schema: {} + examples: + application/json: + detail: + - loc: + - string + - 0 + msg: string + type: string + tags: + - DiscordService + /v1/auth/discord/callback: + get: + operationId: DiscordCallbackService_GetDiscordCallback + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/resourcesDiscordToken' + "422": + description: Validation Error + schema: {} + examples: + application/json: + detail: + - loc: + - string + - 0 + msg: string + type: string + parameters: + - name: code + in: query + required: false + type: string + tags: + - DiscordCallbackService + /v1/tags: + get: + operationId: TagsService_GetTags + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/rpcGetTagsResponse' + "422": + description: Validation Error + schema: {} + examples: + application/json: + detail: + - loc: + - string + - 0 + msg: string + type: string + parameters: + - name: limit + in: query + required: false + type: integer + format: int32 + - name: smallest_tag_id + in: query + required: false + type: string + - name: biggest_tag_id + in: query + required: false + type: string + - name: w + in: query + required: false + type: string + tags: + - TagsService + /v1/users/@me: + get: + operationId: MeService_GetMe + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/resourcesAccount' + "422": + description: Validation Error + schema: {} + examples: + application/json: + detail: + - loc: + - string + - 0 + msg: string + type: string + tags: + - MeService + put: + operationId: MeService_PutMe + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/resourcesAccount' + "422": + description: Validation Error + schema: {} + examples: + application/json: + detail: + - loc: + - string + - 0 + msg: string + type: string + parameters: + - name: display_name + in: query + required: false + type: string + - name: profile + in: query + required: false + type: string + - name: twitter_id + in: query + required: false + type: string + - name: github_id + in: query + required: false + type: string + tags: + - MeService +definitions: + resourcesAccount: + type: object + example: + avatar_url: https://example.com/ + created_at: "2024-01-11T07:56:02.206Z" + display_name: string + github_id: string + id: string + name: string + profile: string + twitter_id: string + updated_at: "2024-01-11T07:56:02.206Z" + properties: + id: + type: string + name: + type: string + display_name: + type: string + avatar_url: + type: string + profile: + type: string + twitter_id: + type: string + github_id: + type: string + created_at: + type: string + title: google.type.Date ? + updated_at: + type: string + title: google.type.Date ? + resourcesDiscordToken: + type: object + example: + access_token: token + expired_at: expire-time + refresh_token: refresh-token + properties: + access_token: + type: string + refresh_token: + type: string + expired_at: + type: string + rpcGetTagsResponse: + type: object + properties: + tags: + type: array + items: + type: object + $ref: '#/definitions/tagsresourcesTag' + tagsresourcesTag: + type: object + example: + color: '#000000' + id: "1" + name: tag1 + properties: + id: + type: string + name: + type: string + color: + type: string diff --git a/proto/schema/auth/discord/discord.proto b/proto/schema/auth/discord/discord.proto index 5a5de32..ce85a88 100644 --- a/proto/schema/auth/discord/discord.proto +++ b/proto/schema/auth/discord/discord.proto @@ -1,14 +1,15 @@ syntax = "proto3"; -package proto.discord; +package proto.schema.auth.discord; -import "proto/Discord/rpc/Discord.proto"; import "proto/third_party/google/api/annotations.proto"; +import "proto/third_party/google/api/empty.proto"; +import "proto/third_party/google/api/wrappers.proto"; option go_package = "./"; service DiscordService { - rpc GetDiscord(google.protobuf.Empty) returns (string) { + rpc GetDiscord(google.protobuf.Empty) returns (google.protobuf.StringValue) { option (google.api.http) = { post : "/v1/auth/discord" }; diff --git a/proto/third_party/google/api/wrappers.proto b/proto/third_party/google/api/wrappers.proto new file mode 100644 index 0000000..6c4b5ac --- /dev/null +++ b/proto/third_party/google/api/wrappers.proto @@ -0,0 +1,123 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// https://developers.google.com/protocol-buffers/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Wrappers for primitive (non-message) types. These types are useful +// for embedding primitives in the `google.protobuf.Any` type and for places +// where we need to distinguish between the absence of a primitive +// typed field and its default value. +// +// These wrappers have no meaningful use within repeated fields as they lack +// the ability to detect presence on individual elements. +// These wrappers have no meaningful use within a map or a oneof since +// individual entries of a map or fields of a oneof can already detect presence. + +syntax = "proto3"; + +package google.protobuf; + +option cc_enable_arenas = true; +option go_package = "google.golang.org/protobuf/types/known/wrapperspb"; +option java_package = "com.google.protobuf"; +option java_outer_classname = "WrappersProto"; +option java_multiple_files = true; +option objc_class_prefix = "GPB"; +option csharp_namespace = "Google.Protobuf.WellKnownTypes"; + +// Wrapper message for `double`. +// +// The JSON representation for `DoubleValue` is JSON number. +message DoubleValue { + // The double value. + double value = 1; +} + +// Wrapper message for `float`. +// +// The JSON representation for `FloatValue` is JSON number. +message FloatValue { + // The float value. + float value = 1; +} + +// Wrapper message for `int64`. +// +// The JSON representation for `Int64Value` is JSON string. +message Int64Value { + // The int64 value. + int64 value = 1; +} + +// Wrapper message for `uint64`. +// +// The JSON representation for `UInt64Value` is JSON string. +message UInt64Value { + // The uint64 value. + uint64 value = 1; +} + +// Wrapper message for `int32`. +// +// The JSON representation for `Int32Value` is JSON number. +message Int32Value { + // The int32 value. + int32 value = 1; +} + +// Wrapper message for `uint32`. +// +// The JSON representation for `UInt32Value` is JSON number. +message UInt32Value { + // The uint32 value. + uint32 value = 1; +} + +// Wrapper message for `bool`. +// +// The JSON representation for `BoolValue` is JSON `true` and `false`. +message BoolValue { + // The bool value. + bool value = 1; +} + +// Wrapper message for `string`. +// +// The JSON representation for `StringValue` is JSON string. +message StringValue { + // The string value. + string value = 1; +} + +// Wrapper message for `bytes`. +// +// The JSON representation for `BytesValue` is JSON string. +message BytesValue { + // The bytes value. + bytes value = 1; +} \ No newline at end of file From 3395c581adb965480e1323e662961ab593b706c9 Mon Sep 17 00:00:00 2001 From: siloneco Date: Thu, 11 Jan 2024 08:51:04 +0000 Subject: [PATCH 4/4] fix: compile error due to directory renaming --- .../auth/discord-callback/callback.proto | 21 ++++--------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/proto/schema/auth/discord-callback/callback.proto b/proto/schema/auth/discord-callback/callback.proto index 2f96f24..5d2281e 100644 --- a/proto/schema/auth/discord-callback/callback.proto +++ b/proto/schema/auth/discord-callback/callback.proto @@ -2,25 +2,12 @@ syntax = "proto3"; package proto.schema.auth.discord.callback; -import "proto/schema/auth/discord/callback/rpc/callback.proto"; -import "proto/schema/auth/discord/callback/resources/callback.proto"; +import "proto/schema/auth/discord-callback/rpc/callback.proto"; +import "proto/schema/auth/discord-callback/resources/callback.proto"; + import "proto/third_party/google/api/annotations.proto"; -import "proto/third_party/grpc/openapiv2/options/annotations.proto"; -option go_package = "./"; -option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_swagger) = { - responses : {key : "422"; -value : { -description: - "Validation Error" examples : { - key: - "application/json" value : "{\"detail\":[{\"loc\":[\"string\",0],\"msg\":" - "\"string\",\"type\":\"string\"}]}" - } -} -} -} -; +option go_package = "./"; message ErrorResponse { int32 status = 1;