Skip to content

Commit 67daf8d

Browse files
饺子wjmattheis
authored andcommitted
Support URLs with path prefix (gotify#46)
See gotify/server#127 gotify/server#122
1 parent f74e792 commit 67daf8d

File tree

4 files changed

+36
-7
lines changed

4 files changed

+36
-7
lines changed

app/src/main/java/com/github/gotify/Utils.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,10 @@
1818
import java.io.IOException;
1919
import java.io.InputStream;
2020
import java.io.InputStreamReader;
21+
import java.net.MalformedURLException;
22+
import java.net.URI;
23+
import java.net.URISyntaxException;
24+
import java.net.URL;
2125
import okio.Buffer;
2226
import org.threeten.bp.OffsetDateTime;
2327

@@ -36,6 +40,22 @@ public static String dateToRelative(OffsetDateTime data) {
3640
.toString();
3741
}
3842

43+
public static String resolveAbsoluteUrl(String baseURL, String target) {
44+
if (target == null) {
45+
return null;
46+
}
47+
try {
48+
URI targetUri = new URI(target);
49+
if (targetUri.isAbsolute()) {
50+
return target;
51+
}
52+
return new URL(new URL(baseURL), target).toString();
53+
} catch (MalformedURLException | URISyntaxException e) {
54+
Log.e("Could not resolve absolute url", e);
55+
return target;
56+
}
57+
}
58+
3959
public static Target toDrawable(Resources resources, DrawableReceiver drawableReceiver) {
4060
return new Target() {
4161
@Override

app/src/main/java/com/github/gotify/api/ClientFactory.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,20 +11,21 @@
1111
public class ClientFactory {
1212
public static com.github.gotify.client.ApiClient unauthorized(
1313
String baseUrl, SSLSettings sslSettings) {
14-
return defaultClient(new String[0], baseUrl, sslSettings);
14+
return defaultClient(new String[0], baseUrl + "/", sslSettings);
1515
}
1616

1717
public static ApiClient basicAuth(
1818
String baseUrl, SSLSettings sslSettings, String username, String password) {
19-
ApiClient client = defaultClient(new String[] {"basicAuth"}, baseUrl, sslSettings);
19+
ApiClient client = defaultClient(new String[] {"basicAuth"}, baseUrl + "/", sslSettings);
2020
HttpBasicAuth auth = (HttpBasicAuth) client.getApiAuthorizations().get("basicAuth");
2121
auth.setUsername(username);
2222
auth.setPassword(password);
2323
return client;
2424
}
2525

2626
public static ApiClient clientToken(String baseUrl, SSLSettings sslSettings, String token) {
27-
ApiClient client = defaultClient(new String[] {"clientTokenHeader"}, baseUrl, sslSettings);
27+
ApiClient client =
28+
defaultClient(new String[] {"clientTokenHeader"}, baseUrl + "/", sslSettings);
2829
ApiKeyAuth tokenAuth = (ApiKeyAuth) client.getApiAuthorizations().get("clientTokenHeader");
2930
tokenAuth.setApiKey(token);
3031
return client;

app/src/main/java/com/github/gotify/messages/ListMessageAdapter.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import butterknife.BindView;
1313
import butterknife.ButterKnife;
1414
import com.github.gotify.R;
15+
import com.github.gotify.Settings;
1516
import com.github.gotify.Utils;
1617
import com.github.gotify.client.model.Message;
1718
import com.github.gotify.messages.provider.MessageWithImage;
@@ -24,11 +25,17 @@ public class ListMessageAdapter extends BaseAdapter {
2425
private Picasso picasso;
2526
private List<MessageWithImage> items;
2627
private Delete delete;
28+
private Settings settings;
2729

2830
ListMessageAdapter(
29-
Context context, Picasso picasso, List<MessageWithImage> items, Delete delete) {
31+
Context context,
32+
Settings settings,
33+
Picasso picasso,
34+
List<MessageWithImage> items,
35+
Delete delete) {
3036
super();
3137
this.content = context;
38+
this.settings = settings;
3239
this.picasso = picasso;
3340
this.items = items;
3441
this.delete = delete;
@@ -65,7 +72,7 @@ public View getView(int position, View convertView, ViewGroup parent) {
6572
final MessageWithImage message = items.get(position);
6673
holder.message.setText(message.message.getMessage());
6774
holder.title.setText(message.message.getTitle());
68-
picasso.load(message.image)
75+
picasso.load(Utils.resolveAbsoluteUrl(settings.url() + "/", message.image))
6976
.error(R.drawable.ic_alarm)
7077
.placeholder(R.drawable.ic_placeholder)
7178
.into(holder.image);

app/src/main/java/com/github/gotify/messages/MessagesActivity.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,8 @@ protected void onCreate(Bundle savedInstanceState) {
125125
messages = new MessageFacade(client.createService(MessageApi.class), appsHolder);
126126

127127
messagesView.setOnScrollListener(this);
128-
messagesView.setAdapter(new ListMessageAdapter(this, picasso, emptyList(), this::delete));
128+
messagesView.setAdapter(
129+
new ListMessageAdapter(this, settings, picasso, emptyList(), this::delete));
129130

130131
swipeRefreshLayout.setOnRefreshListener(this::onRefresh);
131132
drawer.addDrawerListener(
@@ -167,7 +168,7 @@ protected void onUpdateApps(List<Application> applications) {
167168
item.setCheckable(true);
168169
Target t = Utils.toDrawable(getResources(), item::setIcon);
169170
targetReferences.add(t);
170-
picasso.load(app.getImage())
171+
picasso.load(Utils.resolveAbsoluteUrl(settings.url() + "/", app.getImage()))
171172
.error(R.drawable.ic_alarm)
172173
.placeholder(R.drawable.ic_placeholder)
173174
.resize(100, 100)

0 commit comments

Comments
 (0)