├── src └── main │ └── proto │ ├── common.proto │ └── hello.proto └── .gitignore /src/main/proto/common.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package dev.baseio.slackdata.common; 4 | 5 | option java_multiple_files = true; 6 | 7 | message SKByteArrayElement{ 8 | int32 byte = 1; 9 | } 10 | 11 | message Empty { 12 | string nothing = 1; 13 | } -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ### Java template 2 | # Compiled class file 3 | *.class 4 | .idea 5 | 6 | # Log file 7 | *.log 8 | 9 | # BlueJ files 10 | *.ctxt 11 | 12 | # Mobile Tools for Java (J2ME) 13 | .mtj.tmp/ 14 | 15 | # Package Files # 16 | *.jar 17 | *.war 18 | *.nar 19 | *.ear 20 | *.zip 21 | *.tar.gz 22 | *.rar 23 | 24 | # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml 25 | hs_err_pid* 26 | 27 | ### Gradle template 28 | .gradle 29 | **/build/ 30 | !src/**/build/ 31 | 32 | # Ignore Gradle GUI config 33 | gradle-app.setting 34 | 35 | # Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored) 36 | !gradle-wrapper.jar 37 | 38 | # Cache of project 39 | .gradletasknamecache 40 | 41 | # # Work around https://youtrack.jetbrains.com/issue/IDEA-116898 42 | # gradle/wrapper/gradle-wrapper.properties 43 | 44 | ### Kotlin template 45 | # Compiled class file 46 | *.class 47 | 48 | # Log file 49 | *.log 50 | 51 | # BlueJ files 52 | *.ctxt 53 | 54 | # Mobile Tools for Java (J2ME) 55 | .mtj.tmp/ 56 | 57 | # Package Files # 58 | *.jar 59 | *.war 60 | *.nar 61 | *.ear 62 | *.zip 63 | *.tar.gz 64 | *.rar 65 | 66 | # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml 67 | hs_err_pid* 68 | 69 | !/gradlew 70 | /gradlew 71 | /gradlew.bat 72 | /gradle/ 73 | -------------------------------------------------------------------------------- /src/main/proto/hello.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | import "common.proto"; 4 | 5 | package dev.baseio.slackdata.protos; 6 | 7 | option java_multiple_files = true; 8 | 9 | 10 | message SKQrCodeResponse{ 11 | repeated dev.baseio.slackdata.common.SKByteArrayElement byteArray = 1; 12 | int64 totalSize = 2; 13 | SKAuthResult authResult = 3; 14 | } 15 | 16 | message SKQrCodeGenerator{ 17 | int32 requestType = 1; 18 | } 19 | 20 | message SKQRAuthVerify{ 21 | string token = 1; 22 | } 23 | 24 | message SKEncryptedMessage{ 25 | string first = 1; 26 | string second = 2; 27 | } 28 | 29 | message SKMessage { 30 | string uuid = 1; 31 | string workspaceId = 2; 32 | string channelId = 3; 33 | SKEncryptedMessage text = 4; 34 | string sender = 5; 35 | int64 createdDate = 6; 36 | int64 modifiedDate = 7; 37 | bool isDeleted = 8; 38 | } 39 | 40 | message SKLastMessage { 41 | SKChannel channel = 1; 42 | SKMessage lastMessage = 2; 43 | } 44 | 45 | message SKWorkspace { 46 | string uuid = 1; 47 | string name = 2; 48 | string domain = 3; 49 | string picUrl = 4; 50 | int64 modifiedTime = 5; 51 | bool isDeleted = 6; 52 | } 53 | 54 | message SlackKey { 55 | repeated dev.baseio.slackdata.common.SKByteArrayElement keybytes = 4; 56 | } 57 | 58 | // A request to add the given user or update the FCM token of an existing user. 59 | message AddOrUpdateUserRequest { 60 | string deviceid = 1; 61 | string token = 2; 62 | } 63 | 64 | message SKUser { 65 | string uuid = 1; 66 | string workspaceId = 2; 67 | string gender = 3; 68 | string name = 4; 69 | string location = 5; 70 | string email = 6; 71 | string username = 7; 72 | int64 userSince = 8; 73 | string phone = 9; 74 | string avatarUrl = 10; 75 | bool isDeleted = 11; 76 | SlackKey publicKey = 12; 77 | } 78 | 79 | message SKUserChangeSnapshot{ 80 | SKUser previous = 1; 81 | SKUser latest = 2; 82 | } 83 | 84 | message SKWorkspaceChangeSnapshot{ 85 | SKWorkspace previous = 1; 86 | SKWorkspace latest = 2; 87 | } 88 | 89 | message SKMessageChangeSnapshot{ 90 | SKMessage previous = 1; 91 | SKMessage latest = 2; 92 | } 93 | 94 | message SKChannelChangeSnapshot{ 95 | SKChannel previous = 1; 96 | SKChannel latest = 2; 97 | } 98 | 99 | message SKChannelMemberChangeSnapshot{ 100 | SKChannelMember previous = 1; 101 | SKChannelMember latest = 2; 102 | } 103 | 104 | message SKDMChannelChangeSnapshot{ 105 | SKDMChannel previous = 1; 106 | SKDMChannel latest = 2; 107 | } 108 | 109 | message SKChannelMember{ 110 | string uuid = 1; 111 | string channelId = 2; 112 | string memberId = 3; 113 | string workspaceId = 4; 114 | SKEncryptedMessage channelPrivateKey = 5; 115 | } 116 | 117 | message SKChannelMembers{ 118 | repeated SKChannelMember members = 1; 119 | } 120 | 121 | message SKDMChannel{ 122 | string uuid = 1; 123 | string workspaceId = 2; 124 | string senderId = 3; 125 | string receiverId = 4; 126 | int64 createdDate = 5; 127 | int64 modifiedDate = 6; 128 | bool isDeleted = 7; 129 | SlackKey publicKey = 8; 130 | SlackKey privateKey = 9; 131 | } 132 | 133 | message SKChannel { 134 | string uuid = 1; 135 | string workspaceId = 2; 136 | string name = 3; 137 | int64 createdDate = 4; 138 | int64 modifiedDate = 5; 139 | string avatarUrl = 6; 140 | bool isDeleted = 7; 141 | SlackKey publicKey = 8; 142 | } 143 | 144 | message SKWorkspaces { 145 | repeated SKWorkspace workspaces = 1; 146 | } 147 | 148 | message SKUsers { 149 | repeated SKUser users = 1; 150 | } 151 | 152 | message SKChannels { 153 | repeated SKChannel channels = 1; 154 | } 155 | 156 | message SKDMChannels{ 157 | repeated SKDMChannel channels = 1; 158 | 159 | } 160 | 161 | message SKMessages{ 162 | repeated SKMessage messages = 1; 163 | } 164 | 165 | message SKAuthUser { 166 | string email = 1; 167 | SKUser user = 3; 168 | } 169 | 170 | message SKStatus{ 171 | string information = 1; 172 | string statusCode = 2; 173 | } 174 | 175 | message SKAuthResult{ 176 | string token = 1; 177 | string refreshToken = 2; 178 | SKStatus status = 3; 179 | } 180 | 181 | message SKPagedRequest{ 182 | int32 offset = 1; 183 | int32 limit = 2; 184 | } 185 | 186 | message SKInviteUserChannel{ 187 | string userId = 1; 188 | string channelId = 2; 189 | SKEncryptedMessage channelPrivateKey = 3; 190 | } 191 | 192 | message SKWorkspaceChannelRequest{ 193 | string workspaceId = 1; 194 | string channelId = 2; 195 | SKPagedRequest paged = 3; 196 | } 197 | 198 | message SKChannelRequest{ 199 | string workspaceId = 1; 200 | string channelId = 2; 201 | SKPagedRequest paged = 3; 202 | } 203 | 204 | message SKCreateWorkspaceRequest{ 205 | SKWorkspace workspace = 1; 206 | SKAuthUser user = 2; 207 | } 208 | 209 | 210 | 211 | message SKFindWorkspacesRequest{ 212 | string email = 1; 213 | string name = 2; 214 | SKPagedRequest paged = 3; 215 | } 216 | 217 | message SKPushToken{ 218 | string uuid = 1; 219 | string token = 2; 220 | string userId = 3; 221 | int32 platform = 4; 222 | } 223 | 224 | service WorkspaceService { 225 | rpc getWorkspaces(dev.baseio.slackdata.common.Empty) returns (SKWorkspaces); 226 | rpc registerChangeInWorkspace(SKWorkspace) returns (stream SKWorkspaceChangeSnapshot); 227 | rpc letMeIn(SKCreateWorkspaceRequest) returns (SKWorkspace); 228 | rpc findWorkspacesForEmail(SKFindWorkspacesRequest) returns(SKWorkspaces); 229 | rpc findWorkspaceForName(SKFindWorkspacesRequest) returns(SKWorkspace); 230 | rpc updateWorkspace(SKWorkspace) returns(SKWorkspace); 231 | } 232 | 233 | service ChannelsService{ 234 | rpc getAllChannels(SKChannelRequest) returns (SKChannels); 235 | rpc getAllDMChannels(SKChannelRequest) returns (SKDMChannels); 236 | 237 | rpc registerChangeInDMChannels(SKChannelRequest) returns (stream SKDMChannelChangeSnapshot); 238 | rpc registerChangeInChannels(SKChannelRequest) returns (stream SKChannelChangeSnapshot); 239 | rpc registerChangeInChannelMembers(SKChannelMember) returns (stream SKChannelMemberChangeSnapshot); 240 | 241 | rpc savePublicChannel(SKChannel) returns (SKChannel); 242 | rpc saveDMChannel(SKDMChannel) returns(SKDMChannel); 243 | 244 | rpc joinChannel(SKChannelMember) returns(SKChannelMember); 245 | rpc inviteUserToChannel(SKInviteUserChannel) returns(SKChannelMembers); 246 | 247 | rpc channelMembers(SKWorkspaceChannelRequest) returns(SKChannelMembers); 248 | } 249 | 250 | service MessagesService{ 251 | rpc getMessages(SKWorkspaceChannelRequest) returns (SKMessages); 252 | rpc registerChangeInMessage(SKWorkspaceChannelRequest) returns (stream SKMessageChangeSnapshot); 253 | rpc saveMessage(SKMessage) returns (SKMessage); 254 | rpc updateMessage(SKMessage) returns (SKMessage); 255 | } 256 | 257 | service UsersService{ 258 | rpc getUsers(SKWorkspaceChannelRequest) returns (SKUsers); 259 | rpc registerChangeInUsers(SKWorkspaceChannelRequest) returns (stream SKUserChangeSnapshot); 260 | rpc saveUser(SKUser) returns (SKUser); 261 | rpc currentLoggedInUser(dev.baseio.slackdata.common.Empty) returns (SKUser); 262 | rpc updateSKUser(SKUser) returns(SKUser); 263 | } 264 | 265 | service AuthService { 266 | rpc savePushToken(SKPushToken) returns (dev.baseio.slackdata.common.Empty); 267 | } 268 | 269 | service QrCodeService{ 270 | rpc generateQRCode(SKQrCodeGenerator) returns (stream SKQrCodeResponse); 271 | rpc verifyQrCode(SKQRAuthVerify) returns (SKAuthResult); 272 | } 273 | 274 | service SecurePushService { 275 | rpc addOrUpdateUser (AddOrUpdateUserRequest) returns (dev.baseio.slackdata.common.Empty); 276 | } 277 | 278 | --------------------------------------------------------------------------------