Skip to content

Commit e084cd6

Browse files
lsakeeSangwook123
authored andcommitted
[refactor] #62 fix video
1 parent 06a9836 commit e084cd6

File tree

4 files changed

+49
-43
lines changed

4 files changed

+49
-43
lines changed

feature/upload/src/main/java/com/record/upload/UploadViewModel.kt

+33-37
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,12 @@
11
package com.record.upload
22

3-
import android.content.Context
43
import android.util.Log
54
import androidx.lifecycle.viewModelScope
65
import com.record.common.util.encodingString
76
import com.record.designsystem.component.snackbar.SnackBarType
87
import com.record.keyword.repository.KeywordRepository
98
import com.record.ui.base.BaseViewModel
109
import com.record.upload.extension.GalleryVideo
11-
import com.record.upload.extension.uploadFileToS3PresignedUrl
12-
import com.record.upload.extension.uploadFileToS3ThumbnailPresignedUrl
1310
import com.record.upload.model.VideoInfo
1411
import com.record.upload.repository.UploadRepository
1512
import dagger.hilt.android.lifecycle.HiltViewModel
@@ -47,44 +44,43 @@ class UploadViewModel @Inject constructor(
4744
return cleanUrl.toString()
4845
}
4946

50-
51-
fun uploadVideoToS3Bucket(context: Context, file: File) =
52-
viewModelScope.launch {
53-
var a = ""
54-
var b = ""
55-
uploadFileToS3PresignedUrl(
56-
uiState.value.bucketUrl,
57-
file
58-
) { success, message ->
59-
println(message)
60-
a = removeQueryParameters(message)
61-
if (success) {
62-
uploadFileToS3ThumbnailPresignedUrl(
63-
context,
64-
uiState.value.thumbnailUrl,
65-
file,
66-
) { success, message ->
67-
println(message)
68-
b = removeQueryParameters(message)
69-
uploadRecord(a, b)
70-
}
71-
}
72-
}
73-
}
74-
// fun uploadVideoToS3Bucket(file: File) = viewModelScope.launch(Dispatchers.IO) {
75-
// uploadRepository.uploadVideoToS3Bucket(
47+
// fun uploadVideoToS3Bucket(context: Context, file: File) =
48+
// viewModelScope.launch {
49+
// var a = ""
50+
// var b = ""
51+
// uploadFileToS3PresignedUrl(
7652
// uiState.value.bucketUrl,
77-
// file,
78-
// ).onSuccess { videoUrl ->
79-
// uploadRepository.uploadThumbnailToS3Bucket(
80-
// uiState.value.thumbnailUrl,
81-
// file,
82-
// ).onSuccess { thumbNailUrl ->
83-
// uploadRecord(videoUrl, thumbNailUrl)
53+
// file
54+
// ) { success, message ->
55+
// println(message)
56+
// a = removeQueryParameters(message)
57+
// if (success) {
58+
// uploadFileToS3ThumbnailPresignedUrl(
59+
// context,
60+
// uiState.value.thumbnailUrl,
61+
// file,
62+
// ) { success, message ->
63+
// println(message)
64+
// b = removeQueryParameters(message)
65+
// uploadRecord(a, b)
66+
// }
8467
// }
85-
// }.onFailure {
8668
// }
8769
// }
70+
fun uploadVideoToS3Bucket(file: File) = viewModelScope.launch(Dispatchers.IO) {
71+
uploadRepository.uploadVideoToS3Bucket(
72+
uiState.value.bucketUrl,
73+
file,
74+
).onSuccess { videoUrl ->
75+
uploadRepository.uploadThumbnailToS3Bucket(
76+
uiState.value.thumbnailUrl,
77+
file,
78+
).onSuccess { thumbNailUrl ->
79+
uploadRecord(removeQueryParameters(videoUrl), thumbNailUrl)
80+
}
81+
}.onFailure {
82+
}
83+
}
8884

8985
fun uploadRecord(videoS3Url: String, thumbnailS3Url: String) {
9086
viewModelScope.launch {

feature/upload/src/main/java/com/record/upload/VideoPickerScreen.kt

+4-1
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,10 @@ fun VideoPickerRoute(
130130
state = state,
131131
onClickContentChip = viewModel::setSelectedList,
132132
onClickVideo = viewModel::setVideo,
133-
uploadVideoS3Bucket = { viewModel.uploadVideoToS3Bucket(context,it) },
133+
uploadVideoS3Bucket = {
134+
// viewModel.uploadVideoToS3Bucket(context,it)
135+
viewModel.uploadVideoToS3Bucket(it)
136+
},
134137
locationFocusRequester = locationFocusRequester,
135138
contentFocusRequester = locationFocusRequester,
136139
updateLocationTextField = viewModel::updateLocationTextField,

remote/video/src/main/java/com/record/video/api/BucketApi.kt

+1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ interface BucketApi {
1515
@Body requestBody: RequestBody,
1616
@Header("Content-Type") contentType: String = "application/octet-stream",
1717
): Response<ResponseBody>
18+
1819
@PUT
1920
suspend fun uploadThumbnailWithS3Video(
2021
@Url url: String,

remote/video/src/main/java/com/record/video/datasource/RemoteUploadDataSourceImpl.kt

+11-5
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package com.record.video.datasource
22

33
import android.content.Context
4-
import android.util.Log
54
import com.record.common.util.getVideoFrameAt1Sec
65
import com.record.video.api.BucketApi
76
import com.record.video.api.UploadApi
@@ -11,7 +10,9 @@ import com.record.video.source.remote.RemoteUploadDataSource
1110
import dagger.hilt.android.qualifiers.ApplicationContext
1211
import okhttp3.MediaType.Companion.toMediaTypeOrNull
1312
import okhttp3.RequestBody
13+
import okhttp3.RequestBody.Companion.asRequestBody
1414
import java.io.File
15+
import java.io.IOException
1516
import java.net.URL
1617
import javax.inject.Inject
1718

@@ -28,11 +29,16 @@ class RemoteUploadDataSourceImpl @Inject constructor(
2829
) = uploadApi.postRecord(requestPostVideoDto)
2930

3031
override suspend fun uploadVideoToS3Bucket(url: String, file: File): String {
31-
val videoPath = file.absolutePath
3232
val mediaType = "application/octet-stream".toMediaTypeOrNull()
33-
val requestBody = RequestBody.create(mediaType, videoPath)
34-
val url = URL(bucketApi.uploadVideoWithS3Video(url, requestBody).raw().request.url.toString())
35-
return URL(url.protocol, url.host, url.port, url.path).toString()
33+
val requestBody = file.asRequestBody(mediaType)
34+
val response = bucketApi.uploadVideoWithS3Video(url, requestBody)
35+
36+
if (response.isSuccessful) {
37+
val requestUrl = response.raw().request.url
38+
return URL(requestUrl.scheme, requestUrl.host, requestUrl.port, requestUrl.encodedPath).toString()
39+
} else {
40+
throw IOException("Upload failed: ${response.message()}")
41+
}
3642
}
3743

3844
override suspend fun uploadThumbnailToS3Bucket(url: String, file: File): String {

0 commit comments

Comments
 (0)