Skip to content

Commit 74a2409

Browse files
committed
Added api monitoring
1 parent 304f79f commit 74a2409

5 files changed

Lines changed: 130 additions & 1 deletion

File tree

.idea/misc.xml

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/src/main/java/com/mardillu/openai/test/MainActivity.kt

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
package com.mardillu.openai.test
22

33
import android.os.Bundle
4+
import android.util.Log
45
import androidx.appcompat.app.AppCompatActivity
56
import com.mardillu.openai.model.Message
7+
import com.mardillu.openai.network.LoggingApiService
8+
import com.mardillu.openai.network.LoggingClient
69
import com.mardillu.openai.network.OpenApiClient
710
import com.mardillu.openai.test.databinding.ActivityMainBinding
811
import java.io.File
@@ -15,6 +18,22 @@ class MainActivity : AppCompatActivity() {
1518
setContentView(binding.root)
1619

1720
val chatGptService = OpenApiClient()
21+
val loggingApiService = LoggingClient()
22+
23+
loggingApiService.logRequestTime(
24+
"user/login",
25+
200,
26+
500,
27+
300,
28+
200,
29+
){ result, error ->
30+
if (error != null){
31+
Log.d("TAG", "onCreate: =======> FAILED <============")
32+
error.printStackTrace()
33+
} else {
34+
Log.d("TAG", "onCreate: =======> SUCCESS <============")
35+
}
36+
}
1837

1938
chatGptService.getTextCompletion("Hello chat gpt! what is the meaning of life?") { result, error ->
2039
if (error != null) {
@@ -95,6 +114,8 @@ class MainActivity : AppCompatActivity() {
95114
binding.result10.text = result.text
96115
}
97116
}
117+
118+
98119
}
99120

100121
private fun imageFromAssets(name: String): File {
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package com.mardillu.openai.model.requests
2+
3+
data class LogApiRequest(
4+
val route: String,
5+
val request_time: Int,
6+
val response_time: Int,
7+
val duration: Int,
8+
val response_code: Int,
9+
)
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package com.mardillu.openai.network
2+
3+
import com.mardillu.openai.model.requests.LogApiRequest
4+
import retrofit2.Call
5+
import retrofit2.http.Body
6+
import retrofit2.http.POST
7+
8+
/**
9+
* Created on 06/04/2023 at 10:07 PM
10+
* @author mardillu
11+
*/
12+
interface LoggingApiService {
13+
@POST("log_request")
14+
fun logRequestTime(@Body request: LogApiRequest): Call<Any>
15+
}
Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
package com.mardillu.openai.network
2+
3+
import com.mardillu.openai.BuildConfig
4+
import com.mardillu.openai.OpenAiInitializer
5+
import com.mardillu.openai.model.Message
6+
import com.mardillu.openai.model.TextCompletionRequest
7+
import com.mardillu.openai.model.requests.*
8+
import com.mardillu.openai.model.response.*
9+
import okhttp3.MediaType.Companion.toMediaTypeOrNull
10+
import okhttp3.MultipartBody
11+
import okhttp3.OkHttpClient
12+
import okhttp3.RequestBody.Companion.asRequestBody
13+
import okhttp3.RequestBody.Companion.toRequestBody
14+
import okhttp3.logging.HttpLoggingInterceptor
15+
import retrofit2.*
16+
import retrofit2.converter.gson.GsonConverterFactory
17+
import java.io.File
18+
import java.util.concurrent.TimeUnit
19+
20+
/**
21+
* Created on 26/03/2023 at 12:55 PM
22+
* @author mardillu
23+
*/
24+
class LoggingClient {
25+
private val httpClient = OkHttpClient.Builder().apply {
26+
addInterceptor { chain ->
27+
val request = chain.request().newBuilder()
28+
.header("Authorization", "Bearer XoqNd8F7x9PVZcrkcQCFYqW9M1x7CbsI")
29+
.header("Content-Type", "application/json")
30+
.build()
31+
32+
chain.proceed(request)
33+
}
34+
35+
writeTimeout(1, TimeUnit.MINUTES)
36+
readTimeout(1, TimeUnit.MINUTES)
37+
connectTimeout(1, TimeUnit.MINUTES)
38+
}
39+
.build()
40+
41+
private val retrofit = Retrofit.Builder()
42+
.baseUrl("https://linkshare.flatbuffer.com/api/")
43+
.addConverterFactory(GsonConverterFactory.create())
44+
.client(httpClient)
45+
.build()
46+
47+
private val apiService = retrofit.create(LoggingApiService::class.java)
48+
49+
fun logRequestTime(
50+
route: String,
51+
request_time: Int,
52+
response_time: Int,
53+
duration: Int,
54+
responseCode: Int,
55+
completionHandler: (Any?, Throwable?) -> Unit
56+
) {
57+
val requestBody = LogApiRequest(
58+
route, request_time, response_time, duration, responseCode
59+
)
60+
val call = apiService.logRequestTime(requestBody)
61+
62+
call.enqueue(object : Callback<Any> {
63+
override fun onResponse(
64+
call: Call<Any>,
65+
response: Response<Any>
66+
) {
67+
if (response.isSuccessful) {
68+
val result = response.body()
69+
completionHandler(result, null)
70+
} else {
71+
val error = HttpException(response)
72+
completionHandler(null, error)
73+
}
74+
}
75+
76+
override fun onFailure(call: Call<Any>, t: Throwable) {
77+
completionHandler(null, t)
78+
}
79+
})
80+
}
81+
82+
}
83+
84+

0 commit comments

Comments
 (0)