11package com.troplo.privateuploader.api
22
3- import com.squareup.moshi.Json
4- import com.squareup.moshi.JsonClass
5- import com.squareup.moshi.Moshi
6- import kotlinx.coroutines.Deferred
3+ import com.troplo.privateuploader.data.model.Chat
4+ import com.troplo.privateuploader.data.model.LoginRequest
5+ import com.troplo.privateuploader.data.model.LoginResponse
6+ import com.troplo.privateuploader.data.model.User
77import okhttp3.OkHttpClient
88import okhttp3.logging.HttpLoggingInterceptor
99import retrofit2.Call
@@ -12,103 +12,16 @@ import retrofit2.converter.gson.GsonConverterFactory
1212import retrofit2.http.Body
1313import retrofit2.http.GET
1414import retrofit2.http.Header
15- import retrofit2.http.Headers
1615import retrofit2.http.POST
1716
18- data class User (
19- @field:Json(name = "id") val id : String ,
20- @field:Json(name = "username") val username : String ,
21- @field:Json(name = "avatar") val avatar : String
22- )
23-
24- @JsonClass(generateAdapter = true )
25- data class Message (
26- @field:Json(name = "id") val id : Int ,
27- @field:Json(name = "chatId") val chatId : Int ,
28- @field:Json(name = "userId") val userId : Int ,
29- @field:Json(name = "content") val content : String ,
30- @field:Json(name = "type") val type : String ,
31- @field:Json(name = "embeds") val embeds : List <Any >,
32- @field:Json(name = "edited") val edited : Boolean ,
33- @field:Json(name = "editedAt") val editedAt : String? ,
34- @field:Json(name = "replyId") val replyId : Int? ,
35- @field:Json(name = "legacyUserId") val legacyUserId : Int? ,
36- @field:Json(name = "tpuUser") val tpuUser : User ? ,
37- @field:Json(name = "reply") val reply : Message ? ,
38- @field:Json(name = "legacyUser") val legacyUser : User ? ,
39- @field:Json(name = "user") val user : User ? ,
40- @field:Json(name = "pending") val pending : Boolean? ,
41- @field:Json(name = "error") val error : Boolean? ,
42- @field:Json(name = "createdAt") val createdAt : String? ,
43- @field:Json(name = "updatedAt") val updatedAt : String? ,
44- @field:Json(name = "pinned") val pinned : Boolean? ,
45- @field:Json(name = "readReceipts") val readReceipts : List <ChatAssociation >
46- )
47-
48- @JsonClass(generateAdapter = true )
49- data class ChatAssociation (
50- @field:Json(name = "id") val id : Int ,
51- @field:Json(name = "chatId") val chatId : Int ,
52- @field:Json(name = "userId") val userId : Int ,
53- @field:Json(name = "rank") val rank : String ,
54- @field:Json(name = "lastRead") val lastRead : Int ,
55- @field:Json(name = "notifications") val notifications : String ,
56- @field:Json(name = "legacyUserId") val legacyUserId : Int ,
57- @field:Json(name = "tpuUser") val tpuUser : User ? ,
58- @field:Json(name = "legacyUser") val legacyUser : User ? ,
59- @field:Json(name = "user") val user : User
60- )
61-
62- @JsonClass(generateAdapter = true )
63- data class Typing (
64- @field:Json(name = "chatId") val chatId : Int ,
65- @field:Json(name = "userId") val userId : Int ,
66- @field:Json(name = "user") val user : User ,
67- @field:Json(name = "expires") val expires : String
68- )
69-
70- @JsonClass(generateAdapter = true )
71- data class Chat (
72- @field:Json(name = "id") val id : String ,
73- @field:Json(name = "name") val name : String ,
74- @field:Json(name = "users") val users : List <User >,
75- @field:Json(name = "recipient") val recipient : User ? ,
76- @field:Json(name = "icon") val icon : String? ,
77- @field:Json(name = "type") val type : String? ,
78- @field:Json(name = "createdAt") val createdAt : String? ,
79- @field:Json(name = "updatedAt") val updatedAt : String? ,
80- @field:Json(name = "legacyUserId") val legacyUserId : String? ,
81- @field:Json(name = "user") val user : User ? ,
82- @field:Json(name = "legacyUser") val legacyUser : User ? ,
83- @field:Json(name = "association") val association : ChatAssociation ? ,
84- @field:Json(name = "messages") val messages : List <Message >? ,
85- @field:Json(name = "unread") val unread : String? ,
86- @field:Json(name = "typers") val typers : List <Typing >?
87- )
88-
89-
90- @JsonClass(generateAdapter = true )
91- data class LoginRequest (
92- @field:Json(name = "username") val username : String ,
93- @field:Json(name = "password") val password : String ,
94- @field:Json(name = "code") val code : String
95- )
96-
97- @JsonClass(generateAdapter = true )
98- data class LoginResponse (
99- @field:Json(name = "token") val token : String ,
100- @field:Json(name = "user") val user : User
101- )
102-
10317private const val BASE_URL = " http://192.168.0.12:34582/api/v3/"
10418val client = OkHttpClient .Builder ()
10519 .addInterceptor(HttpLoggingInterceptor ().apply {
106- // add Authorization header
10720 level = HttpLoggingInterceptor .Level .BODY
108-
10921 })
11022 .build()
11123
24+
11225val retrofit: Retrofit = Retrofit .Builder ()
11326 .baseUrl(BASE_URL )
11427 .client(client)
@@ -125,6 +38,7 @@ interface TpuApiService {
12538 @POST(" auth/login" )
12639 fun login (@Body request : LoginRequest ): Call <LoginResponse >
12740
41+
12842 @GET(" user" )
12943 fun getUser (
13044 @Header(" Authorization" ) token : String
0 commit comments