diff --git a/app/src/main/java/com/futo/polycentric/core/ApiMethods.kt b/app/src/main/java/com/futo/polycentric/core/ApiMethods.kt index d56b13e3ff58b8f2a1342a4bb1c27a4e5db8e944..f6ad72f0bf565b2a5f5b248c54e3a8e21e52fb62 100644 --- a/app/src/main/java/com/futo/polycentric/core/ApiMethods.kt +++ b/app/src/main/java/com/futo/polycentric/core/ApiMethods.kt @@ -77,15 +77,15 @@ class ApiMethods { return Protocol.Events.parseFrom(result.get()) } - fun getQueryIndex(server: String, system: Protocol.PublicKey, eventTypes: List<Long>, limit: Int? = null): Protocol.Events { + fun getQueryIndex(server: String, system: Protocol.PublicKey, contentType: Long, after: Int? = null, limit: Int? = null): Protocol.QueryIndexResponse { val systemQuery = system.toByteArray().toBase64Url() - val eventTypesQuery = Protocol.RepeatedUInt64.newBuilder() - .addAllNumbers(eventTypes).build().toByteArray().toBase64Url() - val path = if (limit != null) { - "/query_index?system=$systemQuery&event_types=$eventTypesQuery&limit=$limit" + val path = if (after != null && limit != null) { + "/query_index?system=$systemQuery&content_type=$contentType&after=$after&limit=$limit" + } else if (limit != null) { + "/query_index?system=$systemQuery&content_type=$contentType&limit=$limit" } else { - "/query_index?system=$systemQuery&event_types=$eventTypesQuery" + "/query_index?system=$systemQuery&content_type=$contentType" } val (_, response, result) = "$server$path".httpGet() .header(Headers.CONTENT_TYPE, "application/octet-stream") @@ -96,6 +96,25 @@ class ApiMethods { throw Exception(formattedMessage) } + return Protocol.QueryIndexResponse.parseFrom(result.get()) + } + + fun getQueryLatest(server: String, system: Protocol.PublicKey, eventTypes: List<Long>): Protocol.Events { + val systemQuery = system.toByteArray().toBase64Url() + val eventTypesQuery = Protocol.RepeatedUInt64.newBuilder() + .addAllNumbers(eventTypes).build().toByteArray().toBase64Url() + + val path = "/query_latest?system=$systemQuery&event_types=$eventTypesQuery"; + + val (_, response, result) = "$server$path".httpGet() + .header(Headers.CONTENT_TYPE, "application/octet-stream") + .response() + + if (!response.isSuccessful) { + val formattedMessage = "getQueryLatest to $server failed with status code ${response.statusCode}. Response body: ${response.body().toByteArray().decodeToString()}" + throw Exception(formattedMessage) + } + return Protocol.Events.parseFrom(result.get()) } @@ -125,4 +144,4 @@ class ApiMethods { return Protocol.QueryReferencesResponse.parseFrom(result.get()) } } -} \ No newline at end of file +}