Skip to content

Commit c3abaf4

Browse files
committed
Fix #240
1 parent 03a983c commit c3abaf4

2 files changed

Lines changed: 38 additions & 22 deletions

File tree

src/main/java/sc/fiji/snt/annotation/InsectBrainCompartment.java

Lines changed: 34 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@
4545
*/
4646
public class InsectBrainCompartment implements BrainAnnotation {
4747

48-
private static final String BASE_OBJ_DOWNLOAD_URL = "https://s3.eu-central-1.amazonaws.com/ibdb-file-storage/";
48+
private static final String BASE_URL = "https://insectbraindb.org/";
4949

5050
private int id;
5151
private String name;
@@ -55,6 +55,7 @@ public class InsectBrainCompartment implements BrainAnnotation {
5555
private String[] aliases;
5656

5757
private UUID uuid;
58+
private UUID fileUUID;
5859
private String objPath;
5960
private String objColor;
6061

@@ -93,37 +94,45 @@ public String[] aliases() {
9394
}
9495

9596
private String getMeshURL() {
96-
HttpUrl.Builder urlBuilder = HttpUrl.parse(BASE_OBJ_DOWNLOAD_URL).newBuilder();
97-
urlBuilder.addPathSegments(objPath);
98-
return urlBuilder.build().toString();
97+
if (fileUUID != null) {
98+
// Use the filestore API to get a signed download URL
99+
final HttpUrl.Builder urlBuilder = HttpUrl.parse(BASE_URL).newBuilder();
100+
urlBuilder.addPathSegments("filestore/download_url/");
101+
urlBuilder.addQueryParameter("uuid", fileUUID.toString());
102+
final String apiUrl = urlBuilder.build().toString();
103+
try {
104+
final OkHttpClient client = new OkHttpClient();
105+
final Request request = new Request.Builder().url(apiUrl).build();
106+
try (final Response response = client.newCall(request).execute()) {
107+
if (response.isSuccessful() && response.body() != null) {
108+
final org.json.JSONObject json = new org.json.JSONObject(response.body().string());
109+
return json.getString("url");
110+
}
111+
}
112+
} catch (final IOException | org.json.JSONException e) {
113+
SNTUtils.log("Could not resolve download URL via API for " + name + ": " + e.getMessage());
114+
}
115+
}
116+
return null;
99117
}
100118

101119
@Override
102120
public OBJMesh getMesh() {
103-
OBJMesh mesh = null;
104-
String urlPath = getMeshURL();
121+
final String urlPath = getMeshURL();
122+
if (urlPath == null) {
123+
SNTUtils.log("Could not resolve download URL for mesh: " + name);
124+
return null;
125+
}
105126
try {
106-
final OkHttpClient client = new OkHttpClient();
107-
final Request request = new Request.Builder() //
108-
.url(urlPath)
109-
.build();
110-
final Response response = client.newCall(request).execute();
111-
final boolean success = response.isSuccessful();
112-
response.close();
113-
if (!success) {
114-
System.out.println(
115-
"Server is not reachable. Mesh(es) could not be retrieved. Check your internet connection..."
116-
);
117-
return null;
118-
}
119127
final URL url = new URI(urlPath).toURL();
120-
mesh = new OBJMesh(url, GuiUtils.micrometer());
128+
final OBJMesh mesh = new OBJMesh(url, GuiUtils.micrometer());
121129
mesh.setColor(objColor, 95f);
122130
mesh.setLabel(name);
131+
return mesh;
123132
} catch (final IllegalArgumentException | IOException | URISyntaxException e) {
124133
SNTUtils.error("Could not retrieve mesh ", e);
125134
}
126-
return mesh;
135+
return null;
127136
}
128137

129138
@Override
@@ -178,6 +187,10 @@ protected void setObjPath(String objPath) {
178187
this.objPath = objPath;
179188
}
180189

190+
protected void setFileUUID(UUID fileUUID) {
191+
this.fileUUID = fileUUID;
192+
}
193+
181194
protected void setObjColor(String objColor) {
182195
this.objColor = objColor;
183196
}

src/main/java/sc/fiji/snt/annotation/InsectBrainUtils.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -196,19 +196,22 @@ public static List<InsectBrainCompartment> getBrainCompartments(final int specie
196196
JSONObject fileJson = viewerFiles.getJSONObject(i);
197197
JSONObject pFile = fileJson.getJSONObject("p_file");
198198
String objPath = pFile.getString("path");
199+
UUID pFileUUID = UUID.fromString(pFile.getString("uuid"));
199200
JSONArray structures = fileJson.optJSONArray("structures");
200201
if (structures == null || structures.isEmpty()) {
201202
InsectBrainCompartment compartment = new InsectBrainCompartment();
202203
compartment.setObjPath(objPath);
204+
compartment.setFileUUID(pFileUUID);
203205
compartment.setObjColor("#D3D3D3");
204206
compartment.setName("Mesh");
205-
compartment.setUUID(UUID.fromString(pFile.getString("uuid")));
207+
compartment.setUUID(pFileUUID);
206208
compartmentList.add(compartment);
207209
continue;
208210
}
209211
for (int j = 0; j < structures.length(); j++) {
210212
InsectBrainCompartment compartment = new InsectBrainCompartment();
211213
compartment.setObjPath(objPath);
214+
compartment.setFileUUID(pFileUUID);
212215
JSONObject structure = structures.getJSONObject(j);
213216
String hemisphere = structure.optString("hemisphere", "null");
214217
compartment.setHemisphere(hemisphere);

0 commit comments

Comments
 (0)