Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 41 additions & 2 deletions olca-io/src/main/java/org/openlca/io/hestia/HestiaClient.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
import org.openlca.commons.Strings;
import org.openlca.jsonld.Json;

import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;

Expand Down Expand Up @@ -69,6 +70,40 @@ public Res<User> getCurrentUser() {
: Res.ok(new User(json.value()));
}

public Res<List<Release>> getReleases() {
try {
var req = HttpRequest.newBuilder()
.uri(URI.create(api + "/users/me/releases"))
.header("accept", "application/json")
.header("x-access-token", apiKey)
.build();
var resp = http.send(req, BodyHandlers.ofString());
if (resp.statusCode() != 200)
return Res.error("request failed: "
+ resp.statusCode() + " - " + resp.body());

var elem = JsonParser.parseString(resp.body());
JsonArray array = null;
if (elem.isJsonArray()) {
array = elem.getAsJsonArray();
} else if (elem.isJsonObject()) {
array = Json.getArray(elem.getAsJsonObject(), "results");
}
if (array == null)
return Res.error("response does not contain a list of releases");

var releases = new ArrayList<Release>(array.size());
for (var e : array) {
if (e.isJsonObject()) {
releases.add(Release.of(e.getAsJsonObject()));
}
}
return Res.ok(releases);
} catch (Exception e) {
return Res.error("failed to get releases", e);
}
}

public Res<List<GlossaryFileInfo>> getGlossaryFileInfos() {
var json = getJsonObject("/glossary/lookups");
if (json.isError())
Expand Down Expand Up @@ -105,11 +140,15 @@ public Res<List<SearchResult>> search(SearchQuery query) {
try {

var queryJson = query.toJson().toString();
var req = HttpRequest.newBuilder()
var builder = HttpRequest.newBuilder()
.uri(URI.create(api + "/search"))
.header("accept", "application/json")
.header("content-type", "application/json")
.header("x-access-token", apiKey)
.header("x-access-token", apiKey);
if (!Strings.isBlank(query.dataVersion())) {
builder.header("x-data-version", query.dataVersion());
}
var req = builder
.POST(HttpRequest.BodyPublishers.ofString(queryJson))
.build();

Expand Down
14 changes: 14 additions & 0 deletions olca-io/src/main/java/org/openlca/io/hestia/Release.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package org.openlca.io.hestia;

import org.openlca.jsonld.Json;

import com.google.gson.JsonObject;

public record Release(String version, String name) {

static Release of(JsonObject obj) {
return new Release(
Json.getString(obj, "version"),
Json.getString(obj, "name"));
}
}
9 changes: 7 additions & 2 deletions olca-io/src/main/java/org/openlca/io/hestia/SearchQuery.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,15 @@
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;

public record SearchQuery(int limit, String term, boolean aggregated) {
public record SearchQuery(
int limit, String term, boolean aggregated, String dataVersion) {

public SearchQuery(int limit, String term, boolean aggregated) {
this(limit, term, aggregated, null);
}

public SearchQuery(int limit, String term) {
this(limit, term, true);
this(limit, term, true, null);
}

JsonObject toJson() {
Expand Down