Skip to content

Commit

Permalink
Implemented use case for create files on non-gms module
Browse files Browse the repository at this point in the history
  • Loading branch information
HectorNarvaez committed May 24, 2023
1 parent e406f71 commit ccf3917
Show file tree
Hide file tree
Showing 8 changed files with 61 additions and 11 deletions.
Original file line number Diff line number Diff line change
@@ -1,25 +1,36 @@
package com.omh.android.storage.api.drive.nongms.data

import com.omh.android.storage.api.drive.nongms.data.source.body.CreateFileBody
import com.omh.android.storage.api.drive.nongms.data.source.response.FileListRemoteResponse
import com.omh.android.storage.api.drive.nongms.data.source.response.FileRemoteResponse
import retrofit2.Call
import retrofit2.http.Body
import retrofit2.http.GET
import retrofit2.http.POST
import retrofit2.http.Query

internal interface GoogleStorageApiService {

companion object {
private const val GET_ALL_FILES_AND_FOLDERS_LIST_PARTICLE = "files"
private const val FILES_PARTICLE = "files"

private const val QUERY_Q = "q"
private const val QUERY_FIELDS = "fields"

private const val Q_VALUE = "'root' in parents and trashed = false"
private const val FIELDS_VALUE = "files(id, name, mimeType, modifiedTime)"
private const val QUERY_REQUESTED_FIELDS = "id,name,mimeType,modifiedTime"
private const val FIELDS_VALUE = "files($QUERY_REQUESTED_FIELDS)"
}

@GET(GET_ALL_FILES_AND_FOLDERS_LIST_PARTICLE)
@GET(FILES_PARTICLE)
fun getRootFilesList(
@Query(QUERY_Q) query: String = Q_VALUE,
@Query(QUERY_FIELDS) fields: String = FIELDS_VALUE
): Call<FileListRemoteResponse>

@POST(FILES_PARTICLE)
fun createFile(
@Query(QUERY_FIELDS) query: String = QUERY_REQUESTED_FIELDS,
@Body body: CreateFileBody
): Call<FileRemoteResponse>
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ internal class NonGmsFileRepositoryImpl(

override fun getRootFilesList() = dataSource.getRootFilesList()

override fun create() = Unit
override fun createFile(name: String, mimeType: String) = dataSource.createFile(name, mimeType)

override fun open() = Unit

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,12 @@ package com.omh.android.storage.api.drive.nongms.data.source
import com.omh.android.storage.api.data.source.OmhFileRemoteDataSource
import com.omh.android.storage.api.domain.model.OmhFile
import com.omh.android.storage.api.drive.nongms.data.GoogleRetrofitImpl
import com.omh.android.storage.api.drive.nongms.data.source.body.CreateFileBody
import com.omh.android.storage.api.drive.nongms.data.source.mapper.toFile
import com.omh.android.storage.api.drive.nongms.data.source.mapper.toFileList

internal class NonGmsFileRemoteDataSourceImpl(private val retrofitImpl: GoogleRetrofitImpl) : OmhFileRemoteDataSource {
internal class NonGmsFileRemoteDataSourceImpl(private val retrofitImpl: GoogleRetrofitImpl) :
OmhFileRemoteDataSource {

override fun getRootFilesList(): List<OmhFile> {
val response = retrofitImpl
Expand All @@ -19,4 +22,17 @@ internal class NonGmsFileRemoteDataSourceImpl(private val retrofitImpl: GoogleRe
emptyList()
}
}

override fun createFile(name: String, mimeType: String): OmhFile? {
val response = retrofitImpl
.getGoogleStorageApiService()
.createFile(body = CreateFileBody(mimeType, name))
.execute()

return if (response.isSuccessful) {
response.body()?.toFile()
} else {
null
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package com.omh.android.storage.api.drive.nongms.data.source.body

data class CreateFileBody(
val mimeType: String,
val name: String
)
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,6 @@ import com.omh.android.storage.api.domain.model.OmhFile
interface OmhFileRemoteDataSource {

fun getRootFilesList(): List<OmhFile>

fun createFile(name: String, mimeType: String): OmhFile?
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ interface FileRepository {

fun getRootFilesList(): List<OmhFile>

fun create()
fun createFile(name: String, mimeType: String): OmhFile?

fun open()

Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package com.omh.android.storage.api.domain.usecase

import com.omh.android.storage.api.domain.model.OmhFile
import com.omh.android.storage.api.domain.repository.FileRepository
import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.Dispatchers

class CreateFileUseCase(
private val repository: FileRepository,
dispatcher: CoroutineDispatcher = Dispatchers.Default
) : OmhSuspendUseCase<CreateFileUseCaseParams, CreateFileUseCaseResult>(dispatcher) {

override suspend fun execute(parameters: CreateFileUseCaseParams) = CreateFileUseCaseResult(
repository.createFile(parameters.name, parameters.mimeType)
)
}

data class CreateFileUseCaseParams(val name: String, val mimeType: String)

data class CreateFileUseCaseResult(val file: OmhFile?)

0 comments on commit ccf3917

Please sign in to comment.