@@ -16,7 +16,10 @@ import com.coder.gateway.sdk.v2.models.WorkspaceBuild
1616import com.coder.gateway.sdk.v2.models.WorkspaceTransition
1717import com.google.gson.Gson
1818import com.google.gson.GsonBuilder
19+ import com.intellij.ide.plugins.PluginManagerCore
1920import com.intellij.openapi.components.Service
21+ import com.intellij.openapi.extensions.PluginId
22+ import com.intellij.openapi.util.SystemInfo
2023import okhttp3.OkHttpClient
2124import okhttp3.logging.HttpLoggingInterceptor
2225import retrofit2.Retrofit
@@ -43,7 +46,14 @@ class CoderRestClientService {
4346 */
4447 fun initClientSession (url : URL , token : String ): User {
4548 val gson: Gson = GsonBuilder ().registerTypeAdapter(Instant ::class .java, InstantConverter ()).setPrettyPrinting().create()
46- httpClient = OkHttpClient .Builder ().addInterceptor { it.proceed(it.request().newBuilder().addHeader(" Coder-Session-Token" , token).build()) }.addInterceptor(HttpLoggingInterceptor ().apply { setLevel(HttpLoggingInterceptor .Level .BASIC ) }).build()
49+ val pluginVersion = PluginManagerCore .getPlugin(PluginId .getId(" com.coder.gateway" ))!! // this is the id from the plugin.xml
50+
51+ httpClient = OkHttpClient .Builder ()
52+ .addInterceptor { it.proceed(it.request().newBuilder().addHeader(" Coder-Session-Token" , token).build()) }
53+ .addInterceptor { it.proceed(it.request().newBuilder().addHeader(" User-Agent" , " Coder Gateway/${pluginVersion.version} (${SystemInfo .getOsNameAndVersion()} ; ${SystemInfo .OS_ARCH } )" ).build()) }
54+ // this should always be last if we want to see previous interceptors logged
55+ .addInterceptor(HttpLoggingInterceptor ().apply { setLevel(HttpLoggingInterceptor .Level .BASIC ) })
56+ .build()
4757
4858 retroRestClient = Retrofit .Builder ().baseUrl(url.toString()).client(httpClient).addConverterFactory(GsonConverterFactory .create(gson)).build().create(CoderV2RestFacade ::class .java)
4959
0 commit comments