package nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.http; import java.net.MalformedURLException; import java.net.URL; import java.util.HashMap; import java.util.List; import java.util.Locale; import java.util.Map; import nodomain.freeyourgadget.gadgetbridge.proto.garmin.GdiHttpService; import nodomain.freeyourgadget.gadgetbridge.util.HttpUtils; public class GarminHttpRequest { private final GdiHttpService.HttpService.RawRequest rawRequest; private final String url; private final String path; private final Map query; private final Map headers; public GarminHttpRequest(final GdiHttpService.HttpService.RawRequest rawRequest) { this.rawRequest = rawRequest; final URL netUrl; try { netUrl = new URL(rawRequest.getUrl()); } catch (final MalformedURLException e) { throw new IllegalArgumentException("Failed to parse url", e); } this.url = rawRequest.getUrl(); this.path = netUrl.getPath(); this.query = HttpUtils.urlQueryParameters(netUrl); this.headers = headersToMap(rawRequest.getHeaderList()); } public GdiHttpService.HttpService.RawRequest getRawRequest() { return rawRequest; } public String getUrl() { return url; } public String getPath() { return path; } public Map getQuery() { return query; } public Map getHeaders() { return headers; } private static Map headersToMap(final List headers) { final Map ret = new HashMap<>(); for (final GdiHttpService.HttpService.Header header : headers) { ret.put(header.getKey().toLowerCase(Locale.ROOT), header.getValue()); } return ret; } }