Skip to content
Snippets Groups Projects

Feat/scanner

Merged Hosea Nathanael Abetnego requested to merge feat/scanner into dev
1 unresolved thread
Compare and
39 files
+ 725
43
Preferences
Compare changes
Files
39
package com.example.abe.data.network
import android.content.Context
import okhttp3.MediaType
import okhttp3.MultipartBody
import okhttp3.RequestBody
import android.preference.PreferenceManager
import com.example.abe.R
import com.example.abe.services.AuthService
@@ -9,12 +12,17 @@ import retrofit2.Callback
import retrofit2.Response
import retrofit2.Retrofit
import retrofit2.converter.gson.GsonConverterFactory
import java.io.File
interface LoginResultCallback {
fun onSuccess(loginResponse: LoginResponse)
fun onFailure(errorMessage: String)
}
interface UploadResultCallback {
fun onSuccess(uploadResponse: ItemsRoot)
fun onFailure(errorMessage: String)
interface CheckAuthResultCallback {
fun onFailure()
}
@@ -70,6 +78,39 @@ class Retrofit {
})
}
fun upload(context: Context, file: File, callback: UploadResultCallback) {
val scannerService = retrofit.create(ScannerService::class.java)
val sharedPreferences = context.getSharedPreferences("YourPreferenceName", Context.MODE_PRIVATE)
val authHeader = "Bearer " + sharedPreferences.getString("login_token", "")
// create RequestBody instance from file
val requestFile = RequestBody.create(
MediaType.parse("multipart/form-data"),
file
)
// MultipartBody.Part is used to send also the actual file name
val body = MultipartBody.Part.createFormData("file", file.name, requestFile)
val call: Call<ItemsRoot> = scannerService.uploadScan(authHeader, body)
call.enqueue(object: Callback<ItemsRoot> {
override fun onResponse(call: Call<ItemsRoot>, response: Response<ItemsRoot>) {
if (response.isSuccessful) {
response.body()?.let {
callback.onSuccess(it)
}
} else {
callback.onFailure("Scan failed")
}
}
override fun onFailure(call: Call<ItemsRoot>, t: Throwable) {
callback.onFailure("Failed to send request")
}
})
}
fun checkAuth(token: String, callback: CheckAuthResultCallback) {
val checkAuthService = retrofit.create(CheckAuthService::class.java)
val call: Call<CheckAuthResponse> = checkAuthService.checkAuth("Bearer $token")