Skip to content
This repository was archived by the owner on Mar 19, 2024. It is now read-only.

Commit 0017079

Browse files
abelgardepJuancaG05
authored andcommitted
Allow retrieval of several instances from webfinger
1 parent 2458db1 commit 0017079

File tree

3 files changed

+19
-27
lines changed

3 files changed

+19
-27
lines changed
Lines changed: 11 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -36,11 +36,11 @@ import com.squareup.moshi.Moshi
3636
import timber.log.Timber
3737
import java.net.URL
3838

39-
class GetOCInstanceViaWebfingerOperation(
39+
class GetInstancesViaWebfingerOperation(
4040
private val lockupServerDomain: String,
4141
private val rel: String,
4242
private val resource: String,
43-
) : RemoteOperation<String>() {
43+
) : RemoteOperation<List<String>>() {
4444

4545
private fun buildRequestUri() =
4646
Uri.parse(lockupServerDomain).buildUpon()
@@ -61,30 +61,25 @@ class GetOCInstanceViaWebfingerOperation(
6161
method: HttpMethod,
6262
response: String?,
6363
status: Int
64-
): RemoteOperationResult<String> {
64+
): RemoteOperationResult<List<String>> {
6565
Timber.e("Failed requesting webfinger info")
6666
if (response != null) {
6767
Timber.e("*** status code: $status; response message: $response")
6868
} else {
6969
Timber.e("*** status code: $status")
7070
}
71-
return RemoteOperationResult<String>(method)
71+
return RemoteOperationResult<List<String>>(method)
7272
}
7373

74-
private fun onRequestSuccessful(rawResponse: String): RemoteOperationResult<String> {
74+
private fun onRequestSuccessful(rawResponse: String): RemoteOperationResult<List<String>> {
7575
val response = parseResponse(rawResponse)
76-
for (i in response.links) {
77-
if (i.rel == rel) {
78-
val operationResult = RemoteOperationResult<String>(RemoteOperationResult.ResultCode.OK)
79-
operationResult.data = i.href
80-
return operationResult
81-
}
82-
}
83-
Timber.e("Could not find ownCloud relevant information in webfinger response: $rawResponse")
84-
throw java.lang.Exception("Could not find ownCloud relevant information in webfinger response")
76+
Timber.d("Successful Webfinger request: $response")
77+
val operationResult = RemoteOperationResult<List<String>>(RemoteOperationResult.ResultCode.OK)
78+
operationResult.data = response.links.map { it.href }
79+
return operationResult
8580
}
8681

87-
override fun run(client: OwnCloudClient): RemoteOperationResult<String> {
82+
override fun run(client: OwnCloudClient): RemoteOperationResult<List<String>> {
8883
val requestUri = buildRequestUri()
8984
val getMethod = GetMethod(URL(requestUri.toString()))
9085
return try {
@@ -98,7 +93,7 @@ class GetOCInstanceViaWebfingerOperation(
9893
}
9994
} catch (e: Exception) {
10095
Timber.e(e, "Requesting webfinger info failed")
101-
RemoteOperationResult<String>(e)
96+
RemoteOperationResult<List<String>>(e)
10297
}
10398
}
10499

owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/webfinger/services/WebfingerService.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,10 @@ import com.owncloud.android.lib.common.OwnCloudClient
2121
import com.owncloud.android.lib.common.operations.RemoteOperationResult
2222

2323
interface WebfingerService {
24-
fun getInstanceFromWebfinger(
24+
fun getInstancesFromWebfinger(
2525
lookupServer: String,
2626
username: String,
27+
rel: String,
2728
client: OwnCloudClient,
28-
): RemoteOperationResult<String>
29+
): RemoteOperationResult<List<String>>
2930
}

owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/webfinger/services/implementation/OCWebfingerService.kt

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,20 +19,16 @@ package com.owncloud.android.lib.resources.webfinger.services.implementation
1919

2020
import com.owncloud.android.lib.common.OwnCloudClient
2121
import com.owncloud.android.lib.common.operations.RemoteOperationResult
22-
import com.owncloud.android.lib.resources.webfinger.GetOCInstanceViaWebfingerOperation
22+
import com.owncloud.android.lib.resources.webfinger.GetInstancesViaWebfingerOperation
2323
import com.owncloud.android.lib.resources.webfinger.services.WebfingerService
2424

2525
class OCWebfingerService : WebfingerService {
2626

27-
override fun getInstanceFromWebfinger(
27+
override fun getInstancesFromWebfinger(
2828
lookupServer: String,
2929
username: String,
30+
rel: String,
3031
client: OwnCloudClient,
31-
): RemoteOperationResult<String> =
32-
GetOCInstanceViaWebfingerOperation(lookupServer, OWNCLOUD_REL, username).execute(client)
33-
34-
companion object {
35-
private const val OWNCLOUD_REL = "http://webfinger.owncloud/rel/server-instance"
36-
}
37-
32+
): RemoteOperationResult<List<String>> =
33+
GetInstancesViaWebfingerOperation(lookupServer, rel, username).execute(client)
3834
}

0 commit comments

Comments
 (0)