mirror of
				https://github.com/owncloud/android-library.git
				synced 2025-10-31 10:27:45 +00:00 
			
		
		
		
	Compare commits
	
		
			No commits in common. "53290cb799ca884e467494638e90c4ca3f318ab8" and "22bb4eaf219683dfa0bd51ccd91a3f7246103b7a" have entirely different histories.
		
	
	
		
			53290cb799
			...
			22bb4eaf21
		
	
		
| @ -1,99 +0,0 @@ | |||||||
| /* ownCloud Android Library is available under MIT license |  | ||||||
|  *   Copyright (C) 2022 ownCloud GmbH. |  | ||||||
|  * |  | ||||||
|  *   Permission is hereby granted, free of charge, to any person obtaining a copy |  | ||||||
|  *   of this software and associated documentation files (the "Software"), to deal |  | ||||||
|  *   in the Software without restriction, including without limitation the rights |  | ||||||
|  *   to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |  | ||||||
|  *   copies of the Software, and to permit persons to whom the Software is |  | ||||||
|  *   furnished to do so, subject to the following conditions: |  | ||||||
|  * |  | ||||||
|  *   The above copyright notice and this permission notice shall be included in |  | ||||||
|  *   all copies or substantial portions of the Software. |  | ||||||
|  * |  | ||||||
|  *   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, |  | ||||||
|  *   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF |  | ||||||
|  *   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND |  | ||||||
|  *   NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS |  | ||||||
|  *   BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN |  | ||||||
|  *   ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN |  | ||||||
|  *   CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |  | ||||||
|  *   THE SOFTWARE. |  | ||||||
|  */ |  | ||||||
| package com.owncloud.android.lib.resources.spaces |  | ||||||
| 
 |  | ||||||
| import android.net.Uri |  | ||||||
| import com.owncloud.android.lib.common.OwnCloudClient |  | ||||||
| import com.owncloud.android.lib.common.http.HttpConstants |  | ||||||
| import com.owncloud.android.lib.common.http.methods.nonwebdav.GetMethod |  | ||||||
| import com.owncloud.android.lib.common.operations.RemoteOperation |  | ||||||
| import com.owncloud.android.lib.common.operations.RemoteOperationResult |  | ||||||
| import com.owncloud.android.lib.resources.spaces.responses.SpaceResponse |  | ||||||
| import com.owncloud.android.lib.resources.spaces.responses.SpacesResponseWrapper |  | ||||||
| import com.squareup.moshi.JsonAdapter |  | ||||||
| import com.squareup.moshi.Moshi |  | ||||||
| import timber.log.Timber |  | ||||||
| import java.net.URL |  | ||||||
| 
 |  | ||||||
| class GetRemoteSpacesOperation : RemoteOperation<List<SpaceResponse>>() { |  | ||||||
|     override fun run(client: OwnCloudClient): RemoteOperationResult<List<SpaceResponse>> { |  | ||||||
|         val requestUri = buildRequestUri(client.baseUri) |  | ||||||
| 
 |  | ||||||
|         val getMethod = GetMethod(URL(requestUri.toString())) |  | ||||||
| 
 |  | ||||||
|         return try { |  | ||||||
|             val status = client.executeHttpMethod(getMethod) |  | ||||||
|             val response = getMethod.getResponseBodyAsString() |  | ||||||
| 
 |  | ||||||
|             if (isSuccess(status)) { |  | ||||||
|                 onRequestSuccessful(response) |  | ||||||
|             } else { |  | ||||||
|                 onResultUnsuccessful(getMethod, response, status) |  | ||||||
|             } |  | ||||||
|         } catch (e: Exception) { |  | ||||||
|             Timber.e(e, "Exception while getting remote shares") |  | ||||||
|             RemoteOperationResult(e) |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     private fun buildRequestUri(baseUri: Uri) = |  | ||||||
|         baseUri.buildUpon() |  | ||||||
|             .appendEncodedPath(GRAPH_API_PATH) |  | ||||||
|             .appendEncodedPath(ENDPOINT_SPACES_LIST) |  | ||||||
|             .build() |  | ||||||
| 
 |  | ||||||
|     private fun parseResponse(response: String): List<SpaceResponse> { |  | ||||||
|         val moshi = Moshi.Builder().build() |  | ||||||
|         val adapter: JsonAdapter<SpacesResponseWrapper> = moshi.adapter(SpacesResponseWrapper::class.java) |  | ||||||
|         return adapter.fromJson(response)?.value ?: listOf() |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     private fun onResultUnsuccessful( |  | ||||||
|         method: GetMethod, |  | ||||||
|         response: String?, |  | ||||||
|         status: Int |  | ||||||
|     ): RemoteOperationResult<List<SpaceResponse>> { |  | ||||||
|         Timber.e("Failed response while getting spaces for user") |  | ||||||
|         if (response != null) { |  | ||||||
|             Timber.e("*** status code: $status; response message: $response") |  | ||||||
|         } else { |  | ||||||
|             Timber.e("*** status code: $status") |  | ||||||
|         } |  | ||||||
|         return RemoteOperationResult(method) |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     private fun onRequestSuccessful(response: String?): RemoteOperationResult<List<SpaceResponse>> { |  | ||||||
|         val result = RemoteOperationResult<List<SpaceResponse>>(RemoteOperationResult.ResultCode.OK) |  | ||||||
|         Timber.d("Successful response: $response") |  | ||||||
|         result.data = response?.let { parseResponse(it) } ?: listOf() |  | ||||||
|         Timber.d("*** Fetch of spaces completed and parsed to ${result.data}") |  | ||||||
|         return result |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     private fun isSuccess(status: Int) = status == HttpConstants.HTTP_OK |  | ||||||
| 
 |  | ||||||
|     companion object { |  | ||||||
|         private const val GRAPH_API_PATH = "graph/v1.0" |  | ||||||
|         private const val ENDPOINT_SPACES_LIST = "me/drives" |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -1,110 +0,0 @@ | |||||||
| /* ownCloud Android Library is available under MIT license |  | ||||||
|  *   Copyright (C) 2022 ownCloud GmbH. |  | ||||||
|  * |  | ||||||
|  *   Permission is hereby granted, free of charge, to any person obtaining a copy |  | ||||||
|  *   of this software and associated documentation files (the "Software"), to deal |  | ||||||
|  *   in the Software without restriction, including without limitation the rights |  | ||||||
|  *   to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |  | ||||||
|  *   copies of the Software, and to permit persons to whom the Software is |  | ||||||
|  *   furnished to do so, subject to the following conditions: |  | ||||||
|  * |  | ||||||
|  *   The above copyright notice and this permission notice shall be included in |  | ||||||
|  *   all copies or substantial portions of the Software. |  | ||||||
|  * |  | ||||||
|  *   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, |  | ||||||
|  *   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF |  | ||||||
|  *   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND |  | ||||||
|  *   NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS |  | ||||||
|  *   BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN |  | ||||||
|  *   ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN |  | ||||||
|  *   CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |  | ||||||
|  *   THE SOFTWARE. |  | ||||||
|  */ |  | ||||||
| package com.owncloud.android.lib.resources.spaces.responses |  | ||||||
| 
 |  | ||||||
| import com.squareup.moshi.JsonClass |  | ||||||
| 
 |  | ||||||
| @JsonClass(generateAdapter = true) |  | ||||||
| data class SpacesResponseWrapper( |  | ||||||
|     val value: List<SpaceResponse> |  | ||||||
| ) |  | ||||||
| 
 |  | ||||||
| @JsonClass(generateAdapter = true) |  | ||||||
| data class SpaceResponse( |  | ||||||
|     val description: String?, |  | ||||||
|     val driveAlias: String, |  | ||||||
|     val driveType: String, |  | ||||||
|     val id: String, |  | ||||||
|     val lastModifiedDateTime: String, |  | ||||||
|     val name: String, |  | ||||||
|     val owner: OwnerResponse, |  | ||||||
|     val quota: QuotaResponse?, |  | ||||||
|     val root: RootResponse, |  | ||||||
|     val special: List<SpecialResponse>?, |  | ||||||
|     val webUrl: String |  | ||||||
| ) |  | ||||||
| 
 |  | ||||||
| @JsonClass(generateAdapter = true) |  | ||||||
| data class OwnerResponse( |  | ||||||
|     val user: UserResponse |  | ||||||
| ) |  | ||||||
| 
 |  | ||||||
| @JsonClass(generateAdapter = true) |  | ||||||
| data class QuotaResponse( |  | ||||||
|     val remaining: Long?, |  | ||||||
|     val state: String?, |  | ||||||
|     val total: Long, |  | ||||||
|     val used: Long?, |  | ||||||
| ) |  | ||||||
| 
 |  | ||||||
| @JsonClass(generateAdapter = true) |  | ||||||
| data class RootResponse( |  | ||||||
|     val eTag: String, |  | ||||||
|     val id: String, |  | ||||||
|     val permissions: List<PermissionResponse>?, |  | ||||||
|     val webDavUrl: String, |  | ||||||
|     val deleted: DeleteResponse?, |  | ||||||
| ) |  | ||||||
| 
 |  | ||||||
| @JsonClass(generateAdapter = true) |  | ||||||
| data class SpecialResponse( |  | ||||||
|     val eTag: String, |  | ||||||
|     val file: FileResponse, |  | ||||||
|     val id: String, |  | ||||||
|     val lastModifiedDateTime: String, |  | ||||||
|     val name: String, |  | ||||||
|     val size: Int, |  | ||||||
|     val specialFolder: SpecialFolderResponse, |  | ||||||
|     val webDavUrl: String |  | ||||||
| ) |  | ||||||
| 
 |  | ||||||
| @JsonClass(generateAdapter = true) |  | ||||||
| data class UserResponse( |  | ||||||
|     val id: String |  | ||||||
| ) |  | ||||||
| 
 |  | ||||||
| @JsonClass(generateAdapter = true) |  | ||||||
| data class FileResponse( |  | ||||||
|     val mimeType: String |  | ||||||
| ) |  | ||||||
| 
 |  | ||||||
| @JsonClass(generateAdapter = true) |  | ||||||
| data class GrantedToResponse( |  | ||||||
|     val user: UserResponse |  | ||||||
| ) |  | ||||||
| 
 |  | ||||||
| @JsonClass(generateAdapter = true) |  | ||||||
| data class DeleteResponse( |  | ||||||
|     val state: String, |  | ||||||
| ) |  | ||||||
| 
 |  | ||||||
| @JsonClass(generateAdapter = true) |  | ||||||
| data class PermissionResponse( |  | ||||||
|     val grantedTo: List<GrantedToResponse>, |  | ||||||
|     val roles: List<String> |  | ||||||
| ) |  | ||||||
| 
 |  | ||||||
| @JsonClass(generateAdapter = true) |  | ||||||
| data class SpecialFolderResponse( |  | ||||||
|     val name: String |  | ||||||
| ) |  | ||||||
| @ -1,34 +0,0 @@ | |||||||
| /* ownCloud Android Library is available under MIT license |  | ||||||
|  *   Copyright (C) 2022 ownCloud GmbH. |  | ||||||
|  * |  | ||||||
|  *   Permission is hereby granted, free of charge, to any person obtaining a copy |  | ||||||
|  *   of this software and associated documentation files (the "Software"), to deal |  | ||||||
|  *   in the Software without restriction, including without limitation the rights |  | ||||||
|  *   to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |  | ||||||
|  *   copies of the Software, and to permit persons to whom the Software is |  | ||||||
|  *   furnished to do so, subject to the following conditions: |  | ||||||
|  * |  | ||||||
|  *   The above copyright notice and this permission notice shall be included in |  | ||||||
|  *   all copies or substantial portions of the Software. |  | ||||||
|  * |  | ||||||
|  *   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, |  | ||||||
|  *   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF |  | ||||||
|  *   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND |  | ||||||
|  *   NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS |  | ||||||
|  *   BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN |  | ||||||
|  *   ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN |  | ||||||
|  *   CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |  | ||||||
|  *   THE SOFTWARE. |  | ||||||
|  */ |  | ||||||
| package com.owncloud.android.lib.resources.spaces.services |  | ||||||
| 
 |  | ||||||
| import com.owncloud.android.lib.common.OwnCloudClient |  | ||||||
| import com.owncloud.android.lib.common.operations.RemoteOperationResult |  | ||||||
| import com.owncloud.android.lib.resources.spaces.GetRemoteSpacesOperation |  | ||||||
| import com.owncloud.android.lib.resources.spaces.responses.SpaceResponse |  | ||||||
| 
 |  | ||||||
| class OCSpacesService(override val client: OwnCloudClient) : SpacesService { |  | ||||||
|     override fun getSpaces(): RemoteOperationResult<List<SpaceResponse>> { |  | ||||||
|         return GetRemoteSpacesOperation().execute(client) |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -1,31 +0,0 @@ | |||||||
| /* ownCloud Android Library is available under MIT license |  | ||||||
|  *   Copyright (C) 2022 ownCloud GmbH. |  | ||||||
|  * |  | ||||||
|  *   Permission is hereby granted, free of charge, to any person obtaining a copy |  | ||||||
|  *   of this software and associated documentation files (the "Software"), to deal |  | ||||||
|  *   in the Software without restriction, including without limitation the rights |  | ||||||
|  *   to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |  | ||||||
|  *   copies of the Software, and to permit persons to whom the Software is |  | ||||||
|  *   furnished to do so, subject to the following conditions: |  | ||||||
|  * |  | ||||||
|  *   The above copyright notice and this permission notice shall be included in |  | ||||||
|  *   all copies or substantial portions of the Software. |  | ||||||
|  * |  | ||||||
|  *   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, |  | ||||||
|  *   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF |  | ||||||
|  *   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND |  | ||||||
|  *   NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS |  | ||||||
|  *   BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN |  | ||||||
|  *   ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN |  | ||||||
|  *   CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |  | ||||||
|  *   THE SOFTWARE. |  | ||||||
|  */ |  | ||||||
| package com.owncloud.android.lib.resources.spaces.services |  | ||||||
| 
 |  | ||||||
| import com.owncloud.android.lib.common.operations.RemoteOperationResult |  | ||||||
| import com.owncloud.android.lib.resources.Service |  | ||||||
| import com.owncloud.android.lib.resources.spaces.responses.SpaceResponse |  | ||||||
| 
 |  | ||||||
| interface SpacesService : Service { |  | ||||||
|     fun getSpaces(): RemoteOperationResult<List<SpaceResponse>> |  | ||||||
| } |  | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user