Skip to content

Commit

Permalink
Merge pull request #4 from Kyutech-C3/feat/auth-signup
Browse files Browse the repository at this point in the history
feat: implement /api/v1/auth/sign_up
  • Loading branch information
tosaken1116 authored Apr 6, 2024
2 parents 9045f9e + 3d32a31 commit d47b283
Show file tree
Hide file tree
Showing 5 changed files with 331 additions and 0 deletions.
162 changes: 162 additions & 0 deletions openapi/api_definition.swagger.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ info:
tags:
- name: DiscordCallbackService
- name: TokenService
- name: SignUpService
- name: TagsService
consumes:
- application/json
Expand Down Expand Up @@ -37,6 +38,48 @@ paths:
type: string
tags:
- DiscordCallbackService
/v1/auth/sign_up:
post:
operationId: SignUpService_PostSignUp
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: name
in: query
required: false
type: string
- name: email
in: query
required: false
type: string
- name: password
in: query
required: false
type: string
- name: display_name
in: query
required: false
type: string
- name: avatar_url
in: query
required: false
type: string
tags:
- SignUpService
/v1/auth/token:
post:
operationId: TokenService_PostToken
Expand Down Expand Up @@ -103,6 +146,37 @@ paths:
tags:
- TagsService
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:
$ref: '#/definitions/typeDateTime'
updated_at:
$ref: '#/definitions/typeDateTime'
resourcesDiscordToken:
type: object
example:
Expand Down Expand Up @@ -146,3 +220,91 @@ definitions:
type: string
color:
type: string
typeDateTime:
type: object
properties:
year:
type: integer
format: int32
description: |-
Optional. Year of date. Must be from 1 to 9999, or 0 if specifying a
datetime without a year.
month:
type: integer
format: int32
description: Required. Month of year. Must be from 1 to 12.
day:
type: integer
format: int32
description: |-
Required. Day of month. Must be from 1 to 31 and valid for the year and
month.
hours:
type: integer
format: int32
description: |-
Required. Hours of day in 24 hour format. Should be from 0 to 23. An API
may choose to allow the value "24:00:00" for scenarios like business
closing time.
minutes:
type: integer
format: int32
description: Required. Minutes of hour of day. Must be from 0 to 59.
seconds:
type: integer
format: int32
description: |-
Required. Seconds of minutes of the time. Must normally be from 0 to 59. An
API may allow the value 60 if it allows leap-seconds.
nanos:
type: integer
format: int32
description: |-
Required. Fractions of seconds in nanoseconds. Must be from 0 to
999,999,999.
utc_offset:
type: string
description: |-
UTC offset. Must be whole seconds, between -18 hours and +18 hours.
For example, a UTC offset of -4:00 would be represented as
{ seconds: -14400 }.
time_zone:
$ref: '#/definitions/typeTimeZone'
description: Time zone.
description: |-
Represents civil time (or occasionally physical time).
This type can represent a civil time in one of a few possible ways:
* When utc_offset is set and time_zone is unset: a civil time on a calendar
day with a particular offset from UTC.
* When time_zone is set and utc_offset is unset: a civil time on a calendar
day in a particular time zone.
* When neither time_zone nor utc_offset is set: a civil time on a calendar
day in local time.
The date is relative to the Proleptic Gregorian Calendar.
If year is 0, the DateTime is considered not to have a specific year. month
and day must have valid, non-zero values.
This type may also be used to represent a physical time if all the date and
time fields are set and either case of the `time_offset` oneof is set.
Consider using `Timestamp` message for physical time instead. If your use
case also would like to store the user's timezone, that can be done in
another field.
This type is more flexible than some applications may want. Make sure to
document and validate your application's limitations.
typeTimeZone:
type: object
properties:
id:
type: string
description: IANA Time Zone Database time zone, e.g. "America/New_York".
version:
type: string
description: Optional. IANA Time Zone Database version number, e.g. "2019a".
description: |-
Represents a time zone from the
[IANA Time Zone Database](https://www.iana.org/time-zones).
13 changes: 13 additions & 0 deletions proto/schema/auth/sign_up/resources/signup.proto
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
syntax = "proto3";

package proto.schema.auth.sign_up.resources;

option go_package = "./";

message InitialAccountTemplate {
string name = 1;
string email = 2;
string password = 3;
string display_name = 4;
string avatar_url = 5;
}
19 changes: 19 additions & 0 deletions proto/schema/auth/sign_up/signup.proto
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
syntax = "proto3";

package proto.schema.auth.sign_up;

import "proto/schema/auth/sign_up/resources/signup.proto";
import "proto/schema/users/me/resources/me.proto";

import "proto/third_party/google/api/annotations.proto";

option go_package = "./";

service SignUpService {
rpc PostSignUp(proto.schema.auth.sign_up.resources.InitialAccountTemplate)
returns (proto.schema.users.me.resources.Account) {
option (google.api.http) = {
post : "/v1/auth/sign_up"
};
};
}
33 changes: 33 additions & 0 deletions proto/schema/users/me/resources/me.proto
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
syntax = "proto3";

package proto.schema.users.me.resources;
import "proto/third_party/grpc/openapiv2/options/annotations.proto";
import "proto/third_party/google/api/type/datetime.proto";

option go_package = "./";

message Account {
string id = 1;
string name = 2;
string display_name = 3;
string avatar_url = 4;
string profile = 5;
string twitter_id = 6;
string github_id = 7;
google.type.DateTime created_at = 8;
google.type.DateTime updated_at = 9;

option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_schema) = {
example : "{"
"\"id\": \"string\","
"\"name\": \"string\","
"\"display_name\": \"string\","
"\"avatar_url\": \"https://example.com/\","
"\"profile\": \"string\","
"\"twitter_id\": \"string\","
"\"github_id\": \"string\","
"\"created_at\": \"2024-01-11T07:56:02.206Z\","
"\"updated_at\": \"2024-01-11T07:56:02.206Z\""
"}"
};
}
104 changes: 104 additions & 0 deletions proto/third_party/google/api/type/datetime.proto
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
// Copyright 2021 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.type;

import "google/protobuf/duration.proto";

option cc_enable_arenas = true;
option go_package = "google.golang.org/genproto/googleapis/type/datetime;datetime";
option java_multiple_files = true;
option java_outer_classname = "DateTimeProto";
option java_package = "com.google.type";
option objc_class_prefix = "GTP";

// Represents civil time (or occasionally physical time).
//
// This type can represent a civil time in one of a few possible ways:
//
// * When utc_offset is set and time_zone is unset: a civil time on a calendar
// day with a particular offset from UTC.
// * When time_zone is set and utc_offset is unset: a civil time on a calendar
// day in a particular time zone.
// * When neither time_zone nor utc_offset is set: a civil time on a calendar
// day in local time.
//
// The date is relative to the Proleptic Gregorian Calendar.
//
// If year is 0, the DateTime is considered not to have a specific year. month
// and day must have valid, non-zero values.
//
// This type may also be used to represent a physical time if all the date and
// time fields are set and either case of the `time_offset` oneof is set.
// Consider using `Timestamp` message for physical time instead. If your use
// case also would like to store the user's timezone, that can be done in
// another field.
//
// This type is more flexible than some applications may want. Make sure to
// document and validate your application's limitations.
message DateTime {
// Optional. Year of date. Must be from 1 to 9999, or 0 if specifying a
// datetime without a year.
int32 year = 1;

// Required. Month of year. Must be from 1 to 12.
int32 month = 2;

// Required. Day of month. Must be from 1 to 31 and valid for the year and
// month.
int32 day = 3;

// Required. Hours of day in 24 hour format. Should be from 0 to 23. An API
// may choose to allow the value "24:00:00" for scenarios like business
// closing time.
int32 hours = 4;

// Required. Minutes of hour of day. Must be from 0 to 59.
int32 minutes = 5;

// Required. Seconds of minutes of the time. Must normally be from 0 to 59. An
// API may allow the value 60 if it allows leap-seconds.
int32 seconds = 6;

// Required. Fractions of seconds in nanoseconds. Must be from 0 to
// 999,999,999.
int32 nanos = 7;

// Optional. Specifies either the UTC offset or the time zone of the DateTime.
// Choose carefully between them, considering that time zone data may change
// in the future (for example, a country modifies their DST start/end dates,
// and future DateTimes in the affected range had already been stored).
// If omitted, the DateTime is considered to be in local time.
oneof time_offset {
// UTC offset. Must be whole seconds, between -18 hours and +18 hours.
// For example, a UTC offset of -4:00 would be represented as
// { seconds: -14400 }.
google.protobuf.Duration utc_offset = 8;

// Time zone.
TimeZone time_zone = 9;
}
}

// Represents a time zone from the
// [IANA Time Zone Database](https://www.iana.org/time-zones).
message TimeZone {
// IANA Time Zone Database time zone, e.g. "America/New_York".
string id = 1;

// Optional. IANA Time Zone Database version number, e.g. "2019a".
string version = 2;
}

0 comments on commit d47b283

Please sign in to comment.