Skip to content
Merged
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
3 changes: 3 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,9 @@ jobs:

env:
AWS_REGION: eu-west-3
AIRBUS_SEARCHAPI_BASEURL: ${{ secrets.AIRBUS_SEARCHAPI_URL }}
AIRBUS_AUTHENTICATION_BASEURL: ${{ secrets.AIRBUS_AUTHENTICATION_BASEURL }}
AIRBUS_API_KEY: ${{ secrets.AIRBUS_API_KEY }}


steps:
Expand Down
11 changes: 0 additions & 11 deletions .github/workflows/tile19-request-body.json
Original file line number Diff line number Diff line change
Expand Up @@ -98,17 +98,6 @@
"latitude": 43.548050434476295,
"longitude": 4.681549072265625
},
{
"x": 524712,
"y": 359841,
"z": 20,
"server": "geoserver",
"layer": "Ortho_Lisieux_Normandie_2022",
"shiftNb": 0,
"isCropped": true,
"latitude": 49.05924487573084,
"longitude": 0.14556884765625
},
{
"x": 519529,
"y": 357258,
Expand Down
47 changes: 47 additions & 0 deletions src/main/java/fr/birdia/tile19/conf/RestTemplateConf.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
package fr.birdia.tile19.conf;

import static fr.birdia.tile19.model.exception.ApiException.ExceptionType.SERVER_EXCEPTION;

import fr.birdia.tile19.model.exception.ApiException;
import java.io.IOException;
import java.time.Duration;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.web.client.RestTemplateBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.client.ClientHttpResponse;
import org.springframework.web.client.ResponseErrorHandler;
import org.springframework.web.client.RestTemplate;

@Configuration
@Slf4j
public class RestTemplateConf {
@Bean
public RestTemplate restTemplate(RestTemplateBuilder restTemplateBuilder) {
return restTemplateBuilder
.setReadTimeout(Duration.ofMinutes(10))
.setConnectTimeout(Duration.ofMinutes(10))
.errorHandler(new RestTemplateErrorHandler())
.build();
}

private static class RestTemplateErrorHandler implements ResponseErrorHandler {
@Override
public boolean hasError(ClientHttpResponse response) throws IOException {
return response.getStatusCode().is4xxClientError()
|| response.getStatusCode().is5xxServerError();
}

@Override
public void handleError(ClientHttpResponse response) throws IOException {
var statusCode = response.getStatusCode();
if (statusCode.is4xxClientError()) {
throw new ApiException(
SERVER_EXCEPTION, "client exception with status " + response.getStatusCode());
} else if (statusCode.is5xxServerError()) {
throw new ApiException(
SERVER_EXCEPTION, "server exception with status " + response.getStatusCode());
}
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package fr.birdia.tile19.model.airbus;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Data;

@Data
@AllArgsConstructor
public class AirbusAuthResponse {
@JsonProperty("access_token")
private String accessToken;

@JsonProperty("token_type")
private String tokenType;

@JsonProperty("expires_in")
private int expiresIn;

@JsonProperty("refresh_expires_in")
private int refreshExpiresIn;
}
15 changes: 15 additions & 0 deletions src/main/java/fr/birdia/tile19/model/airbus/AirbusFeature.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package fr.birdia.tile19.model.airbus;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;

@Data
public class AirbusFeature {
@JsonProperty("_links")
private FeatureLinks links;

private Geometry geometry;
private Properties properties;
private Rights rights;
private String type;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package fr.birdia.tile19.model.airbus;

import java.util.List;
import lombok.Data;

@Data
public class AirbusPNEOResponse {
private boolean error;
private int itemsPerPage;
private int startIndex;
private int totalResults;
private String type;
private List<AirbusFeature> features;
}
11 changes: 11 additions & 0 deletions src/main/java/fr/birdia/tile19/model/airbus/AirbusProperties.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package fr.birdia.tile19.model.airbus;

import lombok.Builder;
import lombok.Data;

@Builder
@Data
public class AirbusProperties {
private String wmtsUrl;
private String bearer;
}
22 changes: 22 additions & 0 deletions src/main/java/fr/birdia/tile19/model/airbus/AirbusRequestBody.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package fr.birdia.tile19.model.airbus;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.ToString;

@Data
@AllArgsConstructor
@Builder
@ToString
public class AirbusRequestBody {
private int itemsPerPage;
private int startPage;
private String cloudCover;
private String constellation;
private String sortBy;
private String workspace;
private String processingLevel;
private String relation;
private Geometry geometry;
}
15 changes: 15 additions & 0 deletions src/main/java/fr/birdia/tile19/model/airbus/FeatureLinks.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package fr.birdia.tile19.model.airbus;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Data;

@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public class FeatureLinks {
private SimpleLink delete;
private SimpleLink monitor;
private SimpleLink quicklook;
private SimpleLink thumbnail;
private SimpleLink wms;
private SimpleLink wmts;
}
17 changes: 17 additions & 0 deletions src/main/java/fr/birdia/tile19/model/airbus/Geometry.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package fr.birdia.tile19.model.airbus;

import java.math.BigDecimal;
import java.util.List;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.ToString;

@Data
@AllArgsConstructor
@Builder
@ToString
public class Geometry {
private String type;
private List<List<List<BigDecimal>>> coordinates;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package fr.birdia.tile19.model.airbus;

import lombok.Data;

@Data
public class GeometryCentroid {
private double lat;
private double lon;
}
48 changes: 48 additions & 0 deletions src/main/java/fr/birdia/tile19/model/airbus/Properties.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
package fr.birdia.tile19.model.airbus;

import lombok.Data;

@Data
public class Properties {
private String acquisitionDate;
private String acquisitionIdentifier;
private String activityId;
private double azimuthAngle;
private double cloudCover;
private String commercialReference;
private String constellation;
private String contractId;
private String correlationId;
private String customerReference;
private String expirationDate;
private String format;
private GeometryCentroid geometryCentroid;
private String id;
private double illuminationAzimuthAngle;
private double illuminationElevationAngle;
private double incidenceAngle;
private double incidenceAngleAcrossTrack;
private double incidenceAngleAlongTrack;
private String internalLine;
private String internalReference;
private String lastUpdateDate;
private String organisationName;
private String platform;
private String processingCenter;
private String processingDate;
private String processingLevel;
private String processorName;
private String productCategory;
private String productType;
private String productionStatus;
private String publicationDate;
private boolean qualified;
private double resolution;
private String sensorType;
private double snowCover;
private String spectralRange;
private double surfaceArea;
private String workspaceId;
private String workspaceName;
private String workspaceTitle;
}
11 changes: 11 additions & 0 deletions src/main/java/fr/birdia/tile19/model/airbus/Rights.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package fr.birdia.tile19.model.airbus;

import java.util.Map;
import lombok.Data;

@Data
public class Rights {
private Map<String, Object> browse;
private Map<String, Object> wms;
private Map<String, Object> wmts;
}
10 changes: 10 additions & 0 deletions src/main/java/fr/birdia/tile19/model/airbus/SimpleLink.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package fr.birdia.tile19.model.airbus;

import lombok.Data;

@Data
public class SimpleLink {
private String href;
private String name;
private String type;
}
23 changes: 23 additions & 0 deletions src/main/java/fr/birdia/tile19/model/exception/ApiException.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package fr.birdia.tile19.model.exception;

import lombok.Getter;

public class ApiException extends RuntimeException {

@Getter private final ExceptionType type;

public ApiException(ExceptionType type, String message) {
super(message);
this.type = type;
}

public ApiException(ExceptionType type, Exception source) {
super(source);
this.type = type;
}

public enum ExceptionType {
CLIENT_EXCEPTION,
SERVER_EXCEPTION
}
}
Loading
Loading