@@ -2,17 +2,20 @@ package com.coder.gateway.sdk
2
2
3
3
import com.coder.gateway.models.UriScheme
4
4
import com.coder.gateway.sdk.ex.AuthenticationException
5
- import com.coder.gateway.sdk.v1.CoderV1RestFacade
6
- import com.coder.gateway.sdk.v1.LoginRequest
7
- import com.coder.gateway.sdk.v1.SSHKeys
8
- import com.coder.gateway.sdk.v1 .User
9
- import com.coder.gateway.sdk.v1 .Workspace
5
+ import com.coder.gateway.sdk.v2.CoderV2RestFacade
6
+ import com.coder.gateway.sdk.v2.models.AgentGitSSHKeys
7
+ import com.coder.gateway.sdk.v2.models.LoginWithPasswordRequest
8
+ import com.coder.gateway.sdk.v2.models .User
9
+ import com.coder.gateway.sdk.v2.models .Workspace
10
10
import com.google.gson.Gson
11
11
import com.google.gson.GsonBuilder
12
12
import com.intellij.openapi.components.Service
13
13
import com.jetbrains.gateway.sdk.convertors.InstantConverter
14
14
import com.jetbrains.gateway.sdk.convertors.RTCIceServerAdapter
15
15
import dev.onvoid.webrtc.RTCIceServer
16
+ import okhttp3.Cookie
17
+ import okhttp3.CookieJar
18
+ import okhttp3.HttpUrl
16
19
import okhttp3.OkHttpClient
17
20
import okhttp3.logging.HttpLoggingInterceptor
18
21
import retrofit2.Retrofit
@@ -21,9 +24,7 @@ import java.time.Instant
21
24
22
25
@Service(Service .Level .APP )
23
26
class CoderRestClientService {
24
- private lateinit var retroRestClient: CoderV1RestFacade
25
-
26
- lateinit var sessionToken: String
27
+ private lateinit var retroRestClient: CoderV2RestFacade
27
28
lateinit var me: User
28
29
29
30
/* *
@@ -44,19 +45,23 @@ class CoderRestClientService {
44
45
45
46
retroRestClient = Retrofit .Builder ()
46
47
.baseUrl(" ${uriScheme.scheme} ://$hostPath :$port " )
47
- .client(OkHttpClient .Builder ().addInterceptor(interceptor).build())
48
+ .client(
49
+ OkHttpClient .Builder ()
50
+ .addInterceptor(interceptor)
51
+ .cookieJar(CoderCookieJar ())
52
+ .build()
53
+ )
48
54
.addConverterFactory(GsonConverterFactory .create(gson))
49
55
.build()
50
- .create(CoderV1RestFacade ::class .java)
56
+ .create(CoderV2RestFacade ::class .java)
51
57
52
- val sessionTokenResponse = retroRestClient.authenticate(LoginRequest (email, password)).execute()
58
+ val sessionTokenResponse = retroRestClient.authenticate(LoginWithPasswordRequest (email, password)).execute()
53
59
54
60
if (! sessionTokenResponse.isSuccessful) {
55
61
throw AuthenticationException (" Authentication failed with code:${sessionTokenResponse.code()} , reason: ${sessionTokenResponse.message()} " )
56
62
}
57
- sessionToken = sessionTokenResponse.body()!! .sessionToken
58
63
59
- val userResponse = retroRestClient.me(sessionToken ).execute()
64
+ val userResponse = retroRestClient.me().execute()
60
65
61
66
if (! userResponse.isSuccessful) {
62
67
throw IllegalStateException (" Could not retrieve information about logged use:${userResponse.code()} , reason: ${userResponse.message()} " )
@@ -66,28 +71,37 @@ class CoderRestClientService {
66
71
}
67
72
68
73
fun workspaces (): List <Workspace > {
69
- val workspacesResponse = retroRestClient.workspaces(sessionToken, me.id ).execute()
74
+ val workspacesResponse = retroRestClient.workspaces().execute()
70
75
if (! workspacesResponse.isSuccessful) {
71
76
throw IllegalStateException (" Could not retrieve Coder Workspaces:${workspacesResponse.code()} , reason: ${workspacesResponse.message()} " )
72
77
}
73
78
74
79
return workspacesResponse.body()!!
75
80
}
76
81
77
- fun userSSHKeys (): SSHKeys {
78
- val sshKeysResponse = retroRestClient.sshKeys(sessionToken, me.id ).execute()
82
+ fun userSSHKeys (): AgentGitSSHKeys {
83
+ val sshKeysResponse = retroRestClient.sshKeys().execute()
79
84
if (! sshKeysResponse.isSuccessful) {
80
85
throw IllegalStateException (" Could not retrieve Coder Workspaces:${sshKeysResponse.code()} , reason: ${sshKeysResponse.message()} " )
81
86
}
82
87
83
88
return sshKeysResponse.body()!!
84
89
}
85
90
86
- fun iceServers (): List <RTCIceServer > {
87
- val iceServersResponse = retroRestClient.iceServers(sessionToken).execute()
88
- if (! iceServersResponse.isSuccessful) {
89
- throw IllegalStateException (" Could not retrieve retrieve ICE servers:${iceServersResponse.code()} , reason: ${iceServersResponse.message()} " )
91
+ private class CoderCookieJar : CookieJar {
92
+ private lateinit var coderCookies: List <Cookie >
93
+ override fun loadForRequest (url : HttpUrl ): List <Cookie > {
94
+ if (! url.encodedPath.endsWith(" user/login" )) {
95
+ return coderCookies
96
+ }
97
+ return emptyList()
98
+ }
99
+
100
+ override fun saveFromResponse (url : HttpUrl , cookies : List <Cookie >) {
101
+ if (url.encodedPath.endsWith(" user/login" )) {
102
+ coderCookies = ArrayList (cookies)
103
+ }
90
104
}
91
- return iceServersResponse.body() !! .iceServers
105
+
92
106
}
93
107
}
0 commit comments