diff --git a/fresh.gen.ts b/fresh.gen.ts index 1ccbc3b1..43a4ca2a 100644 --- a/fresh.gen.ts +++ b/fresh.gen.ts @@ -36,24 +36,72 @@ import * as $api_v1_users_info_icon from "./routes/api/v1/users/info/icon.ts" import * as $api_v1_users_nickname from "./routes/api/v1/users/nickname.ts" import * as $api_v1_users_username from "./routes/api/v1/users/username.ts" import * as $api_v1_welcome from "./routes/api/v1/welcome.ts" +import * as $api_v2_client_block_server from "./routes/api/v2/client/block/server.ts" +import * as $api_v2_client_block_user from "./routes/api/v2/client/block/user.ts" import * as $api_v2_client_csrftoken from "./routes/api/v2/client/csrftoken.ts" -import * as $api_v2_client_friends_request_friend from "./routes/api/v2/client/friends/request/friend.ts" -import * as $api_v2_client_friends_request_join_room from "./routes/api/v2/client/friends/request/join/room.ts" +import * as $api_v2_client_friends_info_ID_icon_friend from "./routes/api/v2/client/friends/info/[ID]/icon/friend.ts" +import * as $api_v2_client_friends_info_ID_icon_friendcode from "./routes/api/v2/client/friends/info/[ID]/icon/friendcode.ts" +import * as $api_v2_client_friends_info_ID_icon_group from "./routes/api/v2/client/friends/info/[ID]/icon/group.ts" +import * as $api_v2_client_friends_info_ID_profile_friend from "./routes/api/v2/client/friends/info/[ID]/profile/friend.ts" +import * as $api_v2_client_friends_info_ID_profile_friendcode from "./routes/api/v2/client/friends/info/[ID]/profile/friendcode.ts" +import * as $api_v2_client_friends_info_ID_profile_group from "./routes/api/v2/client/friends/info/[ID]/profile/group.ts" +import * as $api_v2_client_friends_list from "./routes/api/v2/client/friends/list.ts" import * as $api_v2_client_main from "./routes/api/v2/client/main.ts" import * as $api_v2_client_sessions_login from "./routes/api/v2/client/sessions/login.ts" import * as $api_v2_client_sessions_logout from "./routes/api/v2/client/sessions/logout.ts" import * as $api_v2_client_sessions_registers_auth from "./routes/api/v2/client/sessions/registers/auth.ts" import * as $api_v2_client_sessions_registers_check from "./routes/api/v2/client/sessions/registers/check.ts" import * as $api_v2_client_sessions_registers_temp from "./routes/api/v2/client/sessions/registers/temp.ts" -import * as $api_v2_client_talks_ID_image from "./routes/api/v2/client/talks/[ID]/image.ts" -import * as $api_v2_client_talks_friendlist from "./routes/api/v2/client/talks/friendlist.ts" +import * as $api_v2_client_settings_icon from "./routes/api/v2/client/settings/icon.ts" +import * as $api_v2_client_settings_nickname from "./routes/api/v2/client/settings/nickname.ts" +import * as $api_v2_client_settings_privacy from "./routes/api/v2/client/settings/privacy.ts" +import * as $api_v2_client_talks_delete from "./routes/api/v2/client/talks/delete.ts" +import * as $api_v2_client_talks_read from "./routes/api/v2/client/talks/read.ts" +import * as $api_v2_client_talks_sending_audio from "./routes/api/v2/client/talks/sending/audio.ts" +import * as $api_v2_client_talks_sending_image from "./routes/api/v2/client/talks/sending/image.ts" +import * as $api_v2_client_talks_sending_text from "./routes/api/v2/client/talks/sending/text.ts" +import * as $api_v2_client_talks_sending_update from "./routes/api/v2/client/talks/sending/update.ts" +import * as $api_v2_client_talks_sending_video from "./routes/api/v2/client/talks/sending/video.ts" +import * as $api_v2_client_unblock_server from "./routes/api/v2/client/unblock/server.ts" +import * as $api_v2_client_unblock_user from "./routes/api/v2/client/unblock/user.ts" +import * as $api_v2_client_users_icon from "./routes/api/v2/client/users/icon.ts" +import * as $api_v2_client_users_profile from "./routes/api/v2/client/users/profile.ts" +import * as $api_v2_client_users_settings from "./routes/api/v2/client/users/settings.ts" import * as $api_v2_client_welcome from "./routes/api/v2/client/welcome.ts" -import * as $api_v2_server_talks_data_load from "./routes/api/v2/server/talks/data/load.ts" -import * as $api_v2_server_talks_data_start from "./routes/api/v2/server/talks/data/start.ts" -import * as $api_v2_server_talks_delete from "./routes/api/v2/server/talks/delete.ts" -import * as $api_v2_server_talks_read from "./routes/api/v2/server/talks/read.ts" -import * as $api_v2_server_talks_send from "./routes/api/v2/server/talks/send.ts" -import * as $api_v2_server_token from "./routes/api/v2/server/token.ts" +import * as $api_v2_server_activity_accept_friend from "./routes/api/v2/server/activity/accept/friend.ts" +import * as $api_v2_server_activity_accept_group from "./routes/api/v2/server/activity/accept/group.ts" +import * as $api_v2_server_activity_block_user from "./routes/api/v2/server/activity/block/user.ts" +import * as $api_v2_server_activity_create_community from "./routes/api/v2/server/activity/create/community.ts" +import * as $api_v2_server_activity_create_group from "./routes/api/v2/server/activity/create/group.ts" +import * as $api_v2_server_activity_delete_community from "./routes/api/v2/server/activity/delete/community.ts" +import * as $api_v2_server_activity_delete_group from "./routes/api/v2/server/activity/delete/group.ts" +import * as $api_v2_server_activity_delete_message from "./routes/api/v2/server/activity/delete/message.ts" +import * as $api_v2_server_activity_flag_community from "./routes/api/v2/server/activity/flag/community.ts" +import * as $api_v2_server_activity_flag_group from "./routes/api/v2/server/activity/flag/group.ts" +import * as $api_v2_server_activity_flag_user from "./routes/api/v2/server/activity/flag/user.ts" +import * as $api_v2_server_activity_ignore_friend from "./routes/api/v2/server/activity/ignore/friend.ts" +import * as $api_v2_server_activity_ignore_group from "./routes/api/v2/server/activity/ignore/group.ts" +import * as $api_v2_server_activity_invite_group from "./routes/api/v2/server/activity/invite/group.ts" +import * as $api_v2_server_activity_join_community from "./routes/api/v2/server/activity/join/community.ts" +import * as $api_v2_server_activity_join_group from "./routes/api/v2/server/activity/join/group.ts" +import * as $api_v2_server_activity_read_message from "./routes/api/v2/server/activity/read/message.ts" +import * as $api_v2_server_activity_read_request from "./routes/api/v2/server/activity/read/request.ts" +import * as $api_v2_server_activity_req_friend from "./routes/api/v2/server/activity/req/friend.ts" +import * as $api_v2_server_activity_talk_audio from "./routes/api/v2/server/activity/talk/audio.ts" +import * as $api_v2_server_activity_talk_image from "./routes/api/v2/server/activity/talk/image.ts" +import * as $api_v2_server_activity_talk_text from "./routes/api/v2/server/activity/talk/text.ts" +import * as $api_v2_server_activity_talk_video from "./routes/api/v2/server/activity/talk/video.ts" +import * as $api_v2_server_activity_update_profile from "./routes/api/v2/server/activity/update/profile.ts" +import * as $api_v2_server_activity_update_text from "./routes/api/v2/server/activity/update/text.ts" +import * as $api_v2_server_blocked from "./routes/api/v2/server/blocked.ts" +import * as $api_v2_server_info from "./routes/api/v2/server/info.ts" +import * as $api_v2_server_information_users_ID_icon_friend from "./routes/api/v2/server/information/users/[ID]/icon/friend.ts" +import * as $api_v2_server_information_users_ID_icon_friendcode from "./routes/api/v2/server/information/users/[ID]/icon/friendcode.ts" +import * as $api_v2_server_information_users_ID_icon_group from "./routes/api/v2/server/information/users/[ID]/icon/group.ts" +import * as $api_v2_server_information_users_ID_name from "./routes/api/v2/server/information/users/[ID]/name.ts" +import * as $api_v2_server_information_users_ID_uuid from "./routes/api/v2/server/information/users/[ID]/uuid.ts" +import * as $api_v2_server_information_users_profile from "./routes/api/v2/server/information/users/profile.ts" +import * as $api_v2_server_pubkey from "./routes/api/v2/server/pubkey.ts" import * as $home_roomid_ from "./routes/home/[roomid].tsx" import * as $home_index from "./routes/home/index.tsx" import * as $index from "./routes/index.tsx" @@ -118,24 +166,72 @@ const manifest = { "./routes/api/v1/users/nickname.ts": $api_v1_users_nickname, "./routes/api/v1/users/username.ts": $api_v1_users_username, "./routes/api/v1/welcome.ts": $api_v1_welcome, + "./routes/api/v2/client/block/server.ts": $api_v2_client_block_server, + "./routes/api/v2/client/block/user.ts": $api_v2_client_block_user, "./routes/api/v2/client/csrftoken.ts": $api_v2_client_csrftoken, - "./routes/api/v2/client/friends/request/friend.ts": $api_v2_client_friends_request_friend, - "./routes/api/v2/client/friends/request/join/room.ts": $api_v2_client_friends_request_join_room, + "./routes/api/v2/client/friends/info/[ID]/icon/friend.ts": $api_v2_client_friends_info_ID_icon_friend, + "./routes/api/v2/client/friends/info/[ID]/icon/friendcode.ts": $api_v2_client_friends_info_ID_icon_friendcode, + "./routes/api/v2/client/friends/info/[ID]/icon/group.ts": $api_v2_client_friends_info_ID_icon_group, + "./routes/api/v2/client/friends/info/[ID]/profile/friend.ts": $api_v2_client_friends_info_ID_profile_friend, + "./routes/api/v2/client/friends/info/[ID]/profile/friendcode.ts": $api_v2_client_friends_info_ID_profile_friendcode, + "./routes/api/v2/client/friends/info/[ID]/profile/group.ts": $api_v2_client_friends_info_ID_profile_group, + "./routes/api/v2/client/friends/list.ts": $api_v2_client_friends_list, "./routes/api/v2/client/main.ts": $api_v2_client_main, "./routes/api/v2/client/sessions/login.ts": $api_v2_client_sessions_login, "./routes/api/v2/client/sessions/logout.ts": $api_v2_client_sessions_logout, "./routes/api/v2/client/sessions/registers/auth.ts": $api_v2_client_sessions_registers_auth, "./routes/api/v2/client/sessions/registers/check.ts": $api_v2_client_sessions_registers_check, "./routes/api/v2/client/sessions/registers/temp.ts": $api_v2_client_sessions_registers_temp, - "./routes/api/v2/client/talks/[ID]/image.ts": $api_v2_client_talks_ID_image, - "./routes/api/v2/client/talks/friendlist.ts": $api_v2_client_talks_friendlist, + "./routes/api/v2/client/settings/icon.ts": $api_v2_client_settings_icon, + "./routes/api/v2/client/settings/nickname.ts": $api_v2_client_settings_nickname, + "./routes/api/v2/client/settings/privacy.ts": $api_v2_client_settings_privacy, + "./routes/api/v2/client/talks/delete.ts": $api_v2_client_talks_delete, + "./routes/api/v2/client/talks/read.ts": $api_v2_client_talks_read, + "./routes/api/v2/client/talks/sending/audio.ts": $api_v2_client_talks_sending_audio, + "./routes/api/v2/client/talks/sending/image.ts": $api_v2_client_talks_sending_image, + "./routes/api/v2/client/talks/sending/text.ts": $api_v2_client_talks_sending_text, + "./routes/api/v2/client/talks/sending/update.ts": $api_v2_client_talks_sending_update, + "./routes/api/v2/client/talks/sending/video.ts": $api_v2_client_talks_sending_video, + "./routes/api/v2/client/unblock/server.ts": $api_v2_client_unblock_server, + "./routes/api/v2/client/unblock/user.ts": $api_v2_client_unblock_user, + "./routes/api/v2/client/users/icon.ts": $api_v2_client_users_icon, + "./routes/api/v2/client/users/profile.ts": $api_v2_client_users_profile, + "./routes/api/v2/client/users/settings.ts": $api_v2_client_users_settings, "./routes/api/v2/client/welcome.ts": $api_v2_client_welcome, - "./routes/api/v2/server/talks/data/load.ts": $api_v2_server_talks_data_load, - "./routes/api/v2/server/talks/data/start.ts": $api_v2_server_talks_data_start, - "./routes/api/v2/server/talks/delete.ts": $api_v2_server_talks_delete, - "./routes/api/v2/server/talks/read.ts": $api_v2_server_talks_read, - "./routes/api/v2/server/talks/send.ts": $api_v2_server_talks_send, - "./routes/api/v2/server/token.ts": $api_v2_server_token, + "./routes/api/v2/server/activity/accept/friend.ts": $api_v2_server_activity_accept_friend, + "./routes/api/v2/server/activity/accept/group.ts": $api_v2_server_activity_accept_group, + "./routes/api/v2/server/activity/block/user.ts": $api_v2_server_activity_block_user, + "./routes/api/v2/server/activity/create/community.ts": $api_v2_server_activity_create_community, + "./routes/api/v2/server/activity/create/group.ts": $api_v2_server_activity_create_group, + "./routes/api/v2/server/activity/delete/community.ts": $api_v2_server_activity_delete_community, + "./routes/api/v2/server/activity/delete/group.ts": $api_v2_server_activity_delete_group, + "./routes/api/v2/server/activity/delete/message.ts": $api_v2_server_activity_delete_message, + "./routes/api/v2/server/activity/flag/community.ts": $api_v2_server_activity_flag_community, + "./routes/api/v2/server/activity/flag/group.ts": $api_v2_server_activity_flag_group, + "./routes/api/v2/server/activity/flag/user.ts": $api_v2_server_activity_flag_user, + "./routes/api/v2/server/activity/ignore/friend.ts": $api_v2_server_activity_ignore_friend, + "./routes/api/v2/server/activity/ignore/group.ts": $api_v2_server_activity_ignore_group, + "./routes/api/v2/server/activity/invite/group.ts": $api_v2_server_activity_invite_group, + "./routes/api/v2/server/activity/join/community.ts": $api_v2_server_activity_join_community, + "./routes/api/v2/server/activity/join/group.ts": $api_v2_server_activity_join_group, + "./routes/api/v2/server/activity/read/message.ts": $api_v2_server_activity_read_message, + "./routes/api/v2/server/activity/read/request.ts": $api_v2_server_activity_read_request, + "./routes/api/v2/server/activity/req/friend.ts": $api_v2_server_activity_req_friend, + "./routes/api/v2/server/activity/talk/audio.ts": $api_v2_server_activity_talk_audio, + "./routes/api/v2/server/activity/talk/image.ts": $api_v2_server_activity_talk_image, + "./routes/api/v2/server/activity/talk/text.ts": $api_v2_server_activity_talk_text, + "./routes/api/v2/server/activity/talk/video.ts": $api_v2_server_activity_talk_video, + "./routes/api/v2/server/activity/update/profile.ts": $api_v2_server_activity_update_profile, + "./routes/api/v2/server/activity/update/text.ts": $api_v2_server_activity_update_text, + "./routes/api/v2/server/blocked.ts": $api_v2_server_blocked, + "./routes/api/v2/server/info.ts": $api_v2_server_info, + "./routes/api/v2/server/information/users/[ID]/icon/friend.ts": $api_v2_server_information_users_ID_icon_friend, + "./routes/api/v2/server/information/users/[ID]/icon/friendcode.ts": $api_v2_server_information_users_ID_icon_friendcode, + "./routes/api/v2/server/information/users/[ID]/icon/group.ts": $api_v2_server_information_users_ID_icon_group, + "./routes/api/v2/server/information/users/[ID]/name.ts": $api_v2_server_information_users_ID_name, + "./routes/api/v2/server/information/users/[ID]/uuid.ts": $api_v2_server_information_users_ID_uuid, + "./routes/api/v2/server/information/users/profile.ts": $api_v2_server_information_users_profile, + "./routes/api/v2/server/pubkey.ts": $api_v2_server_pubkey, "./routes/home/[roomid].tsx": $home_roomid_, "./routes/home/index.tsx": $home_index, "./routes/index.tsx": $index, diff --git a/models/activity.ts b/models/activity.ts index e69de29b..f52d72db 100644 --- a/models/activity.ts +++ b/models/activity.ts @@ -0,0 +1,19 @@ +import mongoose from "mongoose" + +export const activitySchama = new mongoose.Schema({ + userid: { + type: String, + }, + activity: { + type: String, + required: true, + enum: ["login", "logout", "register", "delete", "update","accept","group","block","create","delete","flag","ignore","invite","join","read","req","talk","update"], + }, + activityObject: { + type: Object, + required: true, + }, + timestamp: { type: Date, default: Date.now, expires: 60 * 60 * 24 }, +}) +const activity = mongoose.model("activity", activitySchama) +export default activity \ No newline at end of file diff --git a/models/friendconfig.ts b/models/friendconfig.ts new file mode 100644 index 00000000..15257e40 --- /dev/null +++ b/models/friendconfig.ts @@ -0,0 +1,20 @@ +import mongoose from "mongoose" + +export const friendConfigSchama = new mongoose.Schema({ + userid: { + type: String, + required: true, + unique: true, + }, + addFriendById: { + type: Boolean, + required: true, + }, + blockUsers: [String], + allowOtherServerUsers: { + type: Boolean, + required: true, + }, +}) +const friendConfig = mongoose.model("friendconfig", friendConfigSchama) +export default friendConfig \ No newline at end of file diff --git a/models/users.ts b/models/users.ts index 67db09a4..acf6d959 100644 --- a/models/users.ts +++ b/models/users.ts @@ -72,35 +72,6 @@ const usersSchema = new mongoose.Schema({ addFriendKey: { type: String, }, - config: { - type: { - theme: { - type: String, - enum: ["light", "dark"], - default: "light", - }, - language: { - type: String, - enum: ["ja", "en"], - default: "ja", - }, - notification: { - type: Boolean, - default: true, - }, - //外部サーバーのユーザーを許可するかどうか - allowOtherUser: { - type: Boolean, - default: true, - }, - //idによる友達追加を許可するかどうか - allowAddFriendByID: { - type: Boolean, - default: true, - }, - // - }, - }, timestamp: { type: Date, default: Date.now }, }) const users = mongoose.model("users", usersSchema) diff --git a/routes/api/v2/client/block/server.ts b/routes/api/v2/client/block/server.ts index ab0c0141..43c42502 100644 --- a/routes/api/v2/client/block/server.ts +++ b/routes/api/v2/client/block/server.ts @@ -1 +1,4 @@ -// \ No newline at end of file +//サーバーをブロックする +//POST /api/v2/client/block/server +// { domain: string, csrftoken: string } +// -> { status: boolean, message: string } \ No newline at end of file diff --git a/routes/api/v2/client/block/user.ts b/routes/api/v2/client/block/user.ts index e69de29b..3eceae3b 100644 --- a/routes/api/v2/client/block/user.ts +++ b/routes/api/v2/client/block/user.ts @@ -0,0 +1,4 @@ +//ユーザーをブロックする +//POST: /api/v2/client/block/user +// { userid: string, csrftoken: string } +// -> { status: boolean, message: string } \ No newline at end of file diff --git a/routes/api/v2/client/csrftoken.ts b/routes/api/v2/client/csrftoken.ts index e69de29b..86c1724e 100644 --- a/routes/api/v2/client/csrftoken.ts +++ b/routes/api/v2/client/csrftoken.ts @@ -0,0 +1,3 @@ +//csrftokenを発行 +// GET /api/v2/client/csrftoken +// -> { status: boolean, message: string, csrftoken: string } \ No newline at end of file diff --git a/routes/api/v2/client/friends/info/[ID]/icon/friend.ts b/routes/api/v2/client/friends/info/[ID]/icon/friend.ts index e69de29b..caaa5472 100644 --- a/routes/api/v2/client/friends/info/[ID]/icon/friend.ts +++ b/routes/api/v2/client/friends/info/[ID]/icon/friend.ts @@ -0,0 +1,4 @@ +//友達のアイコンを取得 +// GET /api/v2/client/friends/info/:id/icon/friend +// { uuid: string } +// -> { status: boolean, message: string, icon: any } \ No newline at end of file diff --git a/routes/api/v2/client/friends/info/[ID]/icon/friendcode.ts b/routes/api/v2/client/friends/info/[ID]/icon/friendcode.ts index e69de29b..52d14e4f 100644 --- a/routes/api/v2/client/friends/info/[ID]/icon/friendcode.ts +++ b/routes/api/v2/client/friends/info/[ID]/icon/friendcode.ts @@ -0,0 +1,4 @@ +//addfriendkeyを利用してフレンドのアイコンを取得する +// GET /api/v2/client/friends/info/:id/icon/friend +// { addFriendKey: string } +// -> { status: boolean, message: string, icon: any } \ No newline at end of file diff --git a/routes/api/v2/client/friends/info/[ID]/icon/group.ts b/routes/api/v2/client/friends/info/[ID]/icon/group.ts index e69de29b..28ba0c42 100644 --- a/routes/api/v2/client/friends/info/[ID]/icon/group.ts +++ b/routes/api/v2/client/friends/info/[ID]/icon/group.ts @@ -0,0 +1,4 @@ +//グループチャットの友達のアイコンを取得する +// GET /api/v2/client/friends/info/:id/icon/group +// { groupid: string, uuid: string } +// -> { status: boolean, message: string, icon: any } \ No newline at end of file diff --git a/routes/api/v2/client/friends/info/[ID]/profile/friend.ts b/routes/api/v2/client/friends/info/[ID]/profile/friend.ts new file mode 100644 index 00000000..8d008b07 --- /dev/null +++ b/routes/api/v2/client/friends/info/[ID]/profile/friend.ts @@ -0,0 +1,4 @@ +//友達のプロフィールを取得 +// GET /api/v2/client/friends/info/:id/profile/friend +// { uuid: string, requirement: object } +// -> { status: boolean, message: string, profile: Profile } \ No newline at end of file diff --git a/routes/api/v2/client/friends/info/[ID]/profile/friendcode.ts b/routes/api/v2/client/friends/info/[ID]/profile/friendcode.ts new file mode 100644 index 00000000..1e67f646 --- /dev/null +++ b/routes/api/v2/client/friends/info/[ID]/profile/friendcode.ts @@ -0,0 +1,4 @@ +//フレンドコードを使用してプロフィールを取得する +// GET /api/v2/client/friends/info/:id/profile/friendcode +// { addFriendKey: string } +// -> { status: boolean, message: string, profile: Profile } \ No newline at end of file diff --git a/routes/api/v2/client/friends/info/[ID]/profile/group.ts b/routes/api/v2/client/friends/info/[ID]/profile/group.ts new file mode 100644 index 00000000..f413ea28 --- /dev/null +++ b/routes/api/v2/client/friends/info/[ID]/profile/group.ts @@ -0,0 +1,4 @@ +//グループのメンバーの情報を取得 +// GET /api/v2/client/friends/info/:id/profile/group +// { groupid: string, uuid: string } +// -> { status: boolean, message: string, profile: Profile } \ No newline at end of file diff --git a/routes/api/v2/client/friends/list.ts b/routes/api/v2/client/friends/list.ts index e69de29b..12cfe048 100644 --- a/routes/api/v2/client/friends/list.ts +++ b/routes/api/v2/client/friends/list.ts @@ -0,0 +1,3 @@ +//友達の情報のオブジェクトを配列で返す +//GET /api/v2/client/friends/list +// -> { status: boolean, message: string, friends: [{userName, nickName,latestMessage,latestMessageTime}] } \ No newline at end of file diff --git a/routes/api/v2/client/main.ts b/routes/api/v2/client/main.ts index e69de29b..56feeb06 100644 --- a/routes/api/v2/client/main.ts +++ b/routes/api/v2/client/main.ts @@ -0,0 +1 @@ +//websocket \ No newline at end of file diff --git a/routes/api/v2/client/sessions/login.ts b/routes/api/v2/client/sessions/login.ts index e69de29b..a992e97d 100644 --- a/routes/api/v2/client/sessions/login.ts +++ b/routes/api/v2/client/sessions/login.ts @@ -0,0 +1,4 @@ +//ログインしてcookieをセットする +// POST /api/v2/client/sessions/login +// { email?: string, userName?: string, password: string} +// -> { status: boolean, message: string } cookie: sessionid=string; path=/; max-age=number; httpOnly; SameSite=Strict; \ No newline at end of file diff --git a/routes/api/v2/client/sessions/logout.ts b/routes/api/v2/client/sessions/logout.ts index e69de29b..3f23e408 100644 --- a/routes/api/v2/client/sessions/logout.ts +++ b/routes/api/v2/client/sessions/logout.ts @@ -0,0 +1,3 @@ +//sessionidを削除してcookieを削除する +// POST /api/v2/client/sessions/logout +// -> { status: boolean, message: string } \ No newline at end of file diff --git a/routes/api/v2/client/sessions/registers/auth.ts b/routes/api/v2/client/sessions/registers/auth.ts index e69de29b..79497a77 100644 --- a/routes/api/v2/client/sessions/registers/auth.ts +++ b/routes/api/v2/client/sessions/registers/auth.ts @@ -0,0 +1,4 @@ +//本登録するapi +//POST /api/v2/client/sessions/registers/auth +// { email: string, password: string, nickName: string,age: string, token: string, recaptcha: string } +// -> { status: boolean, message: string } \ No newline at end of file diff --git a/routes/api/v2/client/sessions/registers/check.ts b/routes/api/v2/client/sessions/registers/check.ts index e69de29b..249d4db4 100644 --- a/routes/api/v2/client/sessions/registers/check.ts +++ b/routes/api/v2/client/sessions/registers/check.ts @@ -0,0 +1,3 @@ +//メールアドレスに送られた確認コードを認証する +// POST /api/v2/client/sessions/registers/check +// { email: string, code: string, token: string, recaptcha: string } \ No newline at end of file diff --git a/routes/api/v2/client/sessions/registers/temp.ts b/routes/api/v2/client/sessions/registers/temp.ts index e69de29b..ac3796b6 100644 --- a/routes/api/v2/client/sessions/registers/temp.ts +++ b/routes/api/v2/client/sessions/registers/temp.ts @@ -0,0 +1,4 @@ +//メールアドレスによる仮登録 +// POST /api/v2/client/sessions/registers/temp +// { email: string, recaptcha: string } +// -> { status: boolean, message: string, token: string } \ No newline at end of file diff --git a/routes/api/v2/client/settings/icon.ts b/routes/api/v2/client/settings/icon.ts index e69de29b..7da6c0a2 100644 --- a/routes/api/v2/client/settings/icon.ts +++ b/routes/api/v2/client/settings/icon.ts @@ -0,0 +1,4 @@ +//iconを変更 +// POST /api/v2/client/settings/icon +// { icon: file, csrftoken: string } +// -> { status: boolean, message: string } \ No newline at end of file diff --git a/routes/api/v2/client/settings/nickname.ts b/routes/api/v2/client/settings/nickname.ts index e69de29b..26582168 100644 --- a/routes/api/v2/client/settings/nickname.ts +++ b/routes/api/v2/client/settings/nickname.ts @@ -0,0 +1,4 @@ +//nickNameを変更するapi +//POST /api/v2/client/settings/nickname +// { nickName: string, csrftoken: string } +// -> { status: boolean, message: string } \ No newline at end of file diff --git a/routes/api/v2/client/settings/privacy.ts b/routes/api/v2/client/settings/privacy.ts index e69de29b..51d6d90c 100644 --- a/routes/api/v2/client/settings/privacy.ts +++ b/routes/api/v2/client/settings/privacy.ts @@ -0,0 +1,4 @@ +//設定を変更するapi +//POST /api/v2/client/settings/privacy +// { setting: { ... }, csrftoken: string } +// -> { status: boolean, message: string } \ No newline at end of file diff --git a/routes/api/v2/client/talks/delete.ts b/routes/api/v2/client/talks/delete.ts index e69de29b..a1691b8b 100644 --- a/routes/api/v2/client/talks/delete.ts +++ b/routes/api/v2/client/talks/delete.ts @@ -0,0 +1,4 @@ +//メッセージを削除する +// POST /api/v2/client/talks/delete +// { messageid: string, csrftoken: string, roomid: string, channel: string } +// -> { status: boolean, message: string } diff --git a/routes/api/v2/client/talks/read.ts b/routes/api/v2/client/talks/read.ts index e69de29b..728d1c25 100644 --- a/routes/api/v2/client/talks/read.ts +++ b/routes/api/v2/client/talks/read.ts @@ -0,0 +1,4 @@ +//メッセージを読んだことをサーバーに通知する +// POST /api/v2/client/talks/read +// { messageid: string, csrftoken: string, roomid: string, channel: string } +// -> { status: boolean, message: string } \ No newline at end of file diff --git a/routes/api/v2/client/talks/sending/audio.ts b/routes/api/v2/client/talks/sending/audio.ts index e69de29b..3a39fa9d 100644 --- a/routes/api/v2/client/talks/sending/audio.ts +++ b/routes/api/v2/client/talks/sending/audio.ts @@ -0,0 +1,4 @@ +//音声メッセージを送信 +// POST /api/v2/client/talks/sending/audio +// { audio: file, csrftoken: string, roomid: string, channel: string } +// -> { status: boolean, message: string } \ No newline at end of file diff --git a/routes/api/v2/client/talks/sending/image.ts b/routes/api/v2/client/talks/sending/image.ts index e69de29b..a0083637 100644 --- a/routes/api/v2/client/talks/sending/image.ts +++ b/routes/api/v2/client/talks/sending/image.ts @@ -0,0 +1,4 @@ +//画像を送信 +// POST /api/v2/client/talks/sending/image +// { image: file, csrftoken: string, roomid: string, channel: string } +// -> { status: boolean, message: string } \ No newline at end of file diff --git a/routes/api/v2/client/talks/sending/text.ts b/routes/api/v2/client/talks/sending/text.ts index e69de29b..7ce88b8f 100644 --- a/routes/api/v2/client/talks/sending/text.ts +++ b/routes/api/v2/client/talks/sending/text.ts @@ -0,0 +1,4 @@ +//textメッセージを送信する +// POST /api/v2/client/talks/sending/text +// { text: string, csrftoken: string, roomid: string, channel: string } +// -> { status: boolean, message: string } \ No newline at end of file diff --git a/routes/api/v2/client/talks/sending/update.ts b/routes/api/v2/client/talks/sending/update.ts index e69de29b..e8fc9652 100644 --- a/routes/api/v2/client/talks/sending/update.ts +++ b/routes/api/v2/client/talks/sending/update.ts @@ -0,0 +1,4 @@ +//textメッセージを編集する +// POST /api/v2/client/talks/sending/update +// { text: string, csrftoken: string, roomid: string, channel: string, messageid: string } +// -> { status: boolean, message: string } \ No newline at end of file diff --git a/routes/api/v2/client/talks/sending/video.ts b/routes/api/v2/client/talks/sending/video.ts index e69de29b..4b360d18 100644 --- a/routes/api/v2/client/talks/sending/video.ts +++ b/routes/api/v2/client/talks/sending/video.ts @@ -0,0 +1,4 @@ +//動画を送信するapi +// POST /api/v2/client/talks/sending/video +// { video: file, csrftoken: string, roomid: string, channel: string } +// -> { status: boolean, message: string } \ No newline at end of file diff --git a/routes/api/v2/client/unblock/server.ts b/routes/api/v2/client/unblock/server.ts index e69de29b..4b2e9353 100644 --- a/routes/api/v2/client/unblock/server.ts +++ b/routes/api/v2/client/unblock/server.ts @@ -0,0 +1,4 @@ +//サーバーブロックを解除 +//POST /api/v2/client/block/unblock/server +// { doamin: string, csrftoken: string } +// -> { status: boolean, message: string } \ No newline at end of file diff --git a/routes/api/v2/client/unblock/user.ts b/routes/api/v2/client/unblock/user.ts index e69de29b..9ce595b6 100644 --- a/routes/api/v2/client/unblock/user.ts +++ b/routes/api/v2/client/unblock/user.ts @@ -0,0 +1,4 @@ +//ユーザーのブロックを解除する +//POST /api/v2/client/block/unblock/user +// { userid: string, csrftoken: string } +// -> { status: boolean, message: string } \ No newline at end of file diff --git a/routes/api/v2/client/users/icon.ts b/routes/api/v2/client/users/icon.ts index e69de29b..e9e6d267 100644 --- a/routes/api/v2/client/users/icon.ts +++ b/routes/api/v2/client/users/icon.ts @@ -0,0 +1,3 @@ +//iconを取得 +// GET /api/v2/client/users/icon +// -> { status: boolean, message: string, icon: file } \ No newline at end of file diff --git a/routes/api/v2/client/users/profile.ts b/routes/api/v2/client/users/profile.ts new file mode 100644 index 00000000..d9c45a0b --- /dev/null +++ b/routes/api/v2/client/users/profile.ts @@ -0,0 +1,3 @@ +//profileを取得 +// GET /api/v2/client/users/profile +// -> { status: boolean, message: string, profile: Profile } \ No newline at end of file diff --git a/routes/api/v2/client/users/settings.ts b/routes/api/v2/client/users/settings.ts new file mode 100644 index 00000000..8acaf17e --- /dev/null +++ b/routes/api/v2/client/users/settings.ts @@ -0,0 +1,3 @@ +//現在の設定を取得 +// GET /api/v2/client/users/settings +// -> { status: boolean, message: string, settings: Settings } \ No newline at end of file diff --git a/routes/api/v2/client/welcome.ts b/routes/api/v2/client/welcome.ts index e69de29b..9c3c93ba 100644 --- a/routes/api/v2/client/welcome.ts +++ b/routes/api/v2/client/welcome.ts @@ -0,0 +1,88 @@ +import users from "../../../../models/users.ts" +import remoteServers from "../../../../models/remoteServers.ts" +import serverInfo from "../../../../models/serverInfo.ts" +import { load } from "$std/dotenv/mod.ts" +const env = await load() +const serverDomain = env["serverDomain"] +// Denoの標準ライブラリから必要な関数をインポート + +async function loadDenoConfig() { + try { + // deno.jsonファイルの内容を読み込む + const content = await Deno.readTextFile("./deno.json") + // 読み込んだ内容をJSONとしてパース + const config = JSON.parse(content) + return config.version + } catch (error) { + console.error("deno.jsonファイルの読み込みに失敗しました:", error) + } +} +const version = await loadDenoConfig() +//deno.jsonの中身を取得 +export const handler = { + async GET() { + const CacheServerData = await serverInfo.findOne({ serverDomain }) + if (!CacheServerData) { + //ユーザーの数を取得 + const usersCount = await users.countDocuments() + //リモートサーバーの数を取得 + const remoteServersCount = await remoteServers.countDocuments() + await serverInfo.create({ + serverDomain, + users: usersCount, + remoteServers: remoteServersCount, + lastUpdate: new Date(), + }) + const result = { + users: usersCount, + remoteServers: remoteServersCount, + version: version, + status: true, + } + return new Response(JSON.stringify(result), { + headers: { "Content-Type": "application/json" }, + status: 200, + }) + } else { + const lastUpdate = new Date(CacheServerData.lastUpdate) + const now = new Date() + //一時間以上経っていたら更新 + if (now.getTime() - lastUpdate.getTime() > 60 * 60 * 1000) { + //ユーザーの数を取得 + const usersCount = await users.countDocuments() + //リモートサーバーの数を取得 + const remoteServersCount = await remoteServers.countDocuments() + await serverInfo.updateOne({ + serverDomain, + }, { + $set: { + users: usersCount, + remoteServers: remoteServersCount, + lastUpdate: new Date(), + }, + }) + const result = { + users: usersCount, + remoteServers: remoteServersCount, + version: version, + status: true, + } + return new Response(JSON.stringify(result), { + headers: { "Content-Type": "application/json" }, + status: 200, + }) + } else { + const result = { + users: CacheServerData.users, + remoteServers: CacheServerData.remoteServers, + version: version, + status: true, + } + return new Response(JSON.stringify(result), { + headers: { "Content-Type": "application/json" }, + status: 200, + }) + } + } + }, +} diff --git a/routes/api/v2/client/users/info.ts b/routes/api/v2/server/activity/accept/group.ts similarity index 100% rename from routes/api/v2/client/users/info.ts rename to routes/api/v2/server/activity/accept/group.ts diff --git a/routes/api/v2/server/activity/accept/groupe.ts b/routes/api/v2/server/activity/update/profile.ts similarity index 100% rename from routes/api/v2/server/activity/accept/groupe.ts rename to routes/api/v2/server/activity/update/profile.ts diff --git a/routes/api/v2/server/activity/update/text.ts b/routes/api/v2/server/activity/update/text.ts index e69de29b..76444f6e 100644 --- a/routes/api/v2/server/activity/update/text.ts +++ b/routes/api/v2/server/activity/update/text.ts @@ -0,0 +1,4 @@ +//テキストメッセージを更新する +// POST /api/v2/server/activity/update/text +// { messageId: "messageId", text: "text", userId: "userId" } +// 200 { "messageId": "messageId", "text": "text", "userId": "userId" } \ No newline at end of file diff --git a/routes/api/v2/server/information/users/icon.ts b/routes/api/v2/server/information/users/[ID]/icon/friend.ts similarity index 100% rename from routes/api/v2/server/information/users/icon.ts rename to routes/api/v2/server/information/users/[ID]/icon/friend.ts diff --git a/routes/api/v2/server/information/users/[ID]/icon/friendcode.ts b/routes/api/v2/server/information/users/[ID]/icon/friendcode.ts new file mode 100644 index 00000000..e69de29b diff --git a/routes/api/v2/server/information/users/[ID]/icon/group.ts b/routes/api/v2/server/information/users/[ID]/icon/group.ts new file mode 100644 index 00000000..e69de29b diff --git a/routes/api/v2/server/information/users/profile.ts b/routes/api/v2/server/information/users/profile.ts index e69de29b..1ccec11a 100644 --- a/routes/api/v2/server/information/users/profile.ts +++ b/routes/api/v2/server/information/users/profile.ts @@ -0,0 +1,2 @@ +//ユーザーのプロフィールを取得 +//POST /api/v2/server/information/users/profile \ No newline at end of file diff --git a/util/types.ts b/util/types.ts new file mode 100644 index 00000000..cc287a4c --- /dev/null +++ b/util/types.ts @@ -0,0 +1,21 @@ +interface serverRequest { + host: string; + body: string; +} +interface profileRequest { + userName?: string; + userId?: string; + friendName?: string; + friendId?: string; +} +interface profileResonse { + userName: string; + userId: string; + nickName: string; +} +interface Profile { + userName: string; + userId: string; + nickName: string; + age?: number; +} \ No newline at end of file