Skip to content
Draft
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
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package com.traveltime.sdk.dto.requests;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.traveltime.sdk.dto.requests.timemapfast.ArrivalSearches;
import lombok.*;
import lombok.experimental.SuperBuilder;

@SuperBuilder
@Getter
@EqualsAndHashCode(callSuper = true)
@JsonInclude(JsonInclude.Include.NON_NULL)
@NoArgsConstructor
public abstract class BaseTimeMapFastRequest<T> extends BaseTravelTimePostRequest<T> {

@NonNull
ArrivalSearches arrivalSearches;

@Override
protected String endpoint() {
return "time-map/fast";
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package com.traveltime.sdk.dto.requests;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.traveltime.sdk.dto.requests.timemap.*;
import jakarta.validation.Valid;
import java.util.List;
import lombok.*;
import lombok.experimental.SuperBuilder;

@SuperBuilder
@Getter
@EqualsAndHashCode(callSuper = true)
@JsonInclude(JsonInclude.Include.NON_NULL)
@NoArgsConstructor
public abstract class BaseTimeMapRequest<T> extends BaseTravelTimePostRequest<T> {

@Valid
@Singular
List<DepartureSearch> departureSearches;

@Valid
@Singular
List<ArrivalSearch> arrivalSearches;

@Singular
List<Intersection> intersections;

@Singular
List<Union> unions;

@Override
protected String endpoint() {
return "time-map";
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package com.traveltime.sdk.dto.requests;

import com.traveltime.sdk.auth.TravelTimeCredentials;
import com.traveltime.sdk.dto.responses.errors.TravelTimeError;
import com.traveltime.sdk.utils.*;
import io.vavr.control.Either;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import lombok.val;
import okhttp3.*;

@SuperBuilder
@NoArgsConstructor
public abstract class BaseTravelTimePostRequest<T> extends TravelTimeRequest<T> {

protected abstract String endpoint();

protected abstract AcceptType acceptType();

@Override
public final Either<TravelTimeError, Request> createRequest(HttpUrl baseUri, TravelTimeCredentials credentials) {
val uri = baseUri.newBuilder().addPathSegments(endpoint()).build();
return JsonUtils.toJson(this).map(json -> createPostRequest(credentials, uri, json));
}

protected final Request createPostRequest(TravelTimeCredentials credentials, HttpUrl url, String jsonString) {
return new Request.Builder()
.url(url)
.headers(credentials.getHeaders())
.addHeader("Accept", acceptType().getValue())
.addHeader("User-Agent", "Travel Time Java SDK " + Version.getVersion())
.post(RequestBody.create(jsonString, JSON))
.build();
}
}
19 changes: 8 additions & 11 deletions src/main/java/com/traveltime/sdk/dto/requests/RoutesRequest.java
Original file line number Diff line number Diff line change
@@ -1,29 +1,23 @@
package com.traveltime.sdk.dto.requests;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.traveltime.sdk.auth.TravelTimeCredentials;
import com.traveltime.sdk.dto.common.Location;
import com.traveltime.sdk.dto.requests.routes.ArrivalSearch;
import com.traveltime.sdk.dto.requests.routes.DepartureSearch;
import com.traveltime.sdk.dto.responses.RoutesResponse;
import com.traveltime.sdk.dto.responses.errors.TravelTimeError;
import com.traveltime.sdk.utils.AcceptType;
import com.traveltime.sdk.utils.JsonUtils;
import io.vavr.control.Either;
import jakarta.validation.Valid;
import java.util.List;
import lombok.*;
import lombok.extern.jackson.Jacksonized;
import okhttp3.HttpUrl;
import okhttp3.Request;

@Data
@Builder
@Jacksonized
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@JsonInclude(JsonInclude.Include.NON_NULL)
public class RoutesRequest extends TravelTimeRequest<RoutesResponse> {
public class RoutesRequest extends BaseTravelTimePostRequest<RoutesResponse> {
@NonNull
@Singular
List<Location> locations;
Expand All @@ -37,10 +31,13 @@ public class RoutesRequest extends TravelTimeRequest<RoutesResponse> {
List<ArrivalSearch> arrivalSearches;

@Override
public Either<TravelTimeError, Request> createRequest(HttpUrl baseUri, TravelTimeCredentials credentials) {
val uri = baseUri.newBuilder().addPathSegments("routes").build();
return JsonUtils.toJson(this)
.map(json -> createPostRequest(credentials, uri, json, AcceptType.APPLICATION_JSON));
protected String endpoint() {
return "routes";
}

@Override
protected AcceptType acceptType() {
return AcceptType.APPLICATION_JSON;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
@@ -1,33 +1,30 @@
package com.traveltime.sdk.dto.requests;

import com.traveltime.sdk.auth.TravelTimeCredentials;
import com.traveltime.sdk.dto.common.Location;
import com.traveltime.sdk.dto.responses.SupportedLocationsResponse;
import com.traveltime.sdk.dto.responses.errors.TravelTimeError;
import com.traveltime.sdk.utils.AcceptType;
import com.traveltime.sdk.utils.JsonUtils;
import io.vavr.control.Either;
import java.util.List;
import lombok.*;
import lombok.extern.jackson.Jacksonized;
import okhttp3.HttpUrl;
import okhttp3.Request;

@Data
@Builder
@Jacksonized
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class SupportedLocationsRequest extends TravelTimeRequest<SupportedLocationsResponse> {
public class SupportedLocationsRequest extends BaseTravelTimePostRequest<SupportedLocationsResponse> {
@NonNull
@Singular
List<Location> locations;

@Override
public Either<TravelTimeError, Request> createRequest(HttpUrl baseUri, TravelTimeCredentials credentials) {
val uri = baseUri.newBuilder().addPathSegments("supported-locations").build();
return JsonUtils.toJson(this)
.map(json -> createPostRequest(credentials, uri, json, AcceptType.APPLICATION_JSON));
protected String endpoint() {
return "supported-locations";
}

@Override
protected AcceptType acceptType() {
return AcceptType.APPLICATION_JSON;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
@@ -1,37 +1,33 @@
package com.traveltime.sdk.dto.requests;

import com.traveltime.sdk.auth.TravelTimeCredentials;
import com.traveltime.sdk.dto.requests.zones.*;
import com.traveltime.sdk.dto.requests.zones.ArrivalSearch;
import com.traveltime.sdk.dto.requests.zones.DepartureSearch;
import com.traveltime.sdk.dto.responses.TimeFilterDistrictsResponse;
import com.traveltime.sdk.dto.responses.errors.TravelTimeError;
import com.traveltime.sdk.utils.AcceptType;
import com.traveltime.sdk.utils.JsonUtils;
import io.vavr.control.Either;
import java.util.List;
import lombok.*;
import lombok.extern.jackson.Jacksonized;
import okhttp3.HttpUrl;
import okhttp3.Request;

@Data
@Builder
@Jacksonized
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class TimeFilterDistrictsRequest extends TravelTimeRequest<TimeFilterDistrictsResponse> {
public class TimeFilterDistrictsRequest extends BaseTravelTimePostRequest<TimeFilterDistrictsResponse> {
@Singular
List<DepartureSearch> departureSearches;

@Singular
List<ArrivalSearch> arrivalSearches;

@Override
public Either<TravelTimeError, Request> createRequest(HttpUrl baseUri, TravelTimeCredentials credentials) {
val uri = baseUri.newBuilder()
.addPathSegments("time-filter/postcode-districts")
.build();
return JsonUtils.toJson(this)
.map(json -> createPostRequest(credentials, uri, json, AcceptType.APPLICATION_JSON));
protected String endpoint() {
return "time-filter/postcode-districts";
}

@Override
protected AcceptType acceptType() {
return AcceptType.APPLICATION_JSON;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
@@ -1,25 +1,19 @@
package com.traveltime.sdk.dto.requests;

import com.traveltime.sdk.auth.TravelTimeCredentials;
import com.traveltime.sdk.dto.common.Location;
import com.traveltime.sdk.dto.requests.timefilterfast.ArrivalSearches;
import com.traveltime.sdk.dto.responses.TimeFilterFastResponse;
import com.traveltime.sdk.dto.responses.errors.TravelTimeError;
import com.traveltime.sdk.utils.AcceptType;
import com.traveltime.sdk.utils.JsonUtils;
import io.vavr.control.Either;
import java.util.List;
import lombok.*;
import lombok.extern.jackson.Jacksonized;
import okhttp3.HttpUrl;
import okhttp3.Request;

@Data
@Builder
@Jacksonized
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class TimeFilterFastRequest extends TravelTimeRequest<TimeFilterFastResponse> {
public class TimeFilterFastRequest extends BaseTravelTimePostRequest<TimeFilterFastResponse> {
@NonNull
@Singular
List<Location> locations;
Expand All @@ -28,10 +22,13 @@ public class TimeFilterFastRequest extends TravelTimeRequest<TimeFilterFastRespo
ArrivalSearches arrivalSearches;

@Override
public Either<TravelTimeError, Request> createRequest(HttpUrl baseUri, TravelTimeCredentials credentials) {
val uri = baseUri.newBuilder().addPathSegments("time-filter/fast").build();
return JsonUtils.toJson(this)
.map(json -> createPostRequest(credentials, uri, json, AcceptType.APPLICATION_JSON));
protected String endpoint() {
return "time-filter/fast";
}

@Override
protected AcceptType acceptType() {
return AcceptType.APPLICATION_JSON;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
@@ -1,25 +1,20 @@
package com.traveltime.sdk.dto.requests;

import com.traveltime.sdk.auth.TravelTimeCredentials;
import com.traveltime.sdk.dto.requests.postcodes.*;
import com.traveltime.sdk.dto.requests.postcodes.ArrivalSearch;
import com.traveltime.sdk.dto.requests.postcodes.DepartureSearch;
import com.traveltime.sdk.dto.responses.TimeFilterPostcodesResponse;
import com.traveltime.sdk.dto.responses.errors.TravelTimeError;
import com.traveltime.sdk.utils.AcceptType;
import com.traveltime.sdk.utils.JsonUtils;
import io.vavr.control.Either;
import jakarta.validation.Valid;
import java.util.List;
import lombok.*;
import lombok.extern.jackson.Jacksonized;
import okhttp3.HttpUrl;
import okhttp3.Request;

@Data
@Builder
@Jacksonized
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class TimeFilterPostcodesRequest extends TravelTimeRequest<TimeFilterPostcodesResponse> {
public class TimeFilterPostcodesRequest extends BaseTravelTimePostRequest<TimeFilterPostcodesResponse> {
@Valid
@Singular
List<DepartureSearch> departureSearches;
Expand All @@ -29,10 +24,13 @@ public class TimeFilterPostcodesRequest extends TravelTimeRequest<TimeFilterPost
List<ArrivalSearch> arrivalSearches;

@Override
public Either<TravelTimeError, Request> createRequest(HttpUrl baseUri, TravelTimeCredentials credentials) {
val uri = baseUri.newBuilder().addPathSegments("time-filter/postcodes").build();
return JsonUtils.toJson(this)
.map(json -> createPostRequest(credentials, uri, json, AcceptType.APPLICATION_JSON));
protected String endpoint() {
return "time-filter/postcodes";
}

@Override
protected AcceptType acceptType() {
return AcceptType.APPLICATION_JSON;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
@@ -1,29 +1,23 @@
package com.traveltime.sdk.dto.requests;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.traveltime.sdk.auth.TravelTimeCredentials;
import com.traveltime.sdk.dto.common.Location;
import com.traveltime.sdk.dto.requests.timefilter.ArrivalSearch;
import com.traveltime.sdk.dto.requests.timefilter.DepartureSearch;
import com.traveltime.sdk.dto.responses.TimeFilterResponse;
import com.traveltime.sdk.dto.responses.errors.TravelTimeError;
import com.traveltime.sdk.utils.AcceptType;
import com.traveltime.sdk.utils.JsonUtils;
import io.vavr.control.Either;
import jakarta.validation.Valid;
import java.util.List;
import lombok.*;
import lombok.extern.jackson.Jacksonized;
import okhttp3.HttpUrl;
import okhttp3.Request;

@Data
@Builder
@Jacksonized
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@JsonInclude(JsonInclude.Include.NON_NULL)
public class TimeFilterRequest extends TravelTimeRequest<TimeFilterResponse> {
public class TimeFilterRequest extends BaseTravelTimePostRequest<TimeFilterResponse> {
@NonNull
@Singular
List<Location> locations;
Expand All @@ -37,10 +31,13 @@ public class TimeFilterRequest extends TravelTimeRequest<TimeFilterResponse> {
List<ArrivalSearch> arrivalSearches;

@Override
public Either<TravelTimeError, Request> createRequest(HttpUrl baseUri, TravelTimeCredentials credentials) {
val uri = baseUri.newBuilder().addPathSegments("time-filter").build();
return JsonUtils.toJson(this)
.map(json -> createPostRequest(credentials, uri, json, AcceptType.APPLICATION_JSON));
protected String endpoint() {
return "time-filter";
}

@Override
protected AcceptType acceptType() {
return AcceptType.APPLICATION_JSON;
}

@Override
Expand Down
Loading