diff --git a/README.md b/README.md index e379dce..3319476 100644 --- a/README.md +++ b/README.md @@ -365,15 +365,14 @@ the terms and conditions of this license. This project has some third-party dependencies, each of which may have independent licensing: - [Jackson Databind:2.17.1](https://github.com/FasterXML/jackson) ([The Apache Software License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0.txt)) -- [Guava:33.2.1-jre](https://github.com/google/guava/) ([The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt)) - [Reactor Netty HTTP:1.1.19](https://github.com/reactor/reactor-netty) ([The Apache Software License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0.txt)) - [Reactor Core:3.6.6](https://github.com/reactor/reactor-core) ([The Apache Software License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0.txt)) - [Jakarta Validation API:3.1.0](https://www.eclipse.org) ([The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt)) - [Apache BVal JSR:3.0.0](https://bval.apache.org/) ([The Apache Software License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0.txt)) - [Apache Tika Core:2.9.2](https://tika.apache.org/) ([The Apache Software License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0.txt)) - [MapStruct:1.5.5.Final](https://mapstruct.org/mapstruct/) ([The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt)) -- [SLF4J API:2.0.13](http://www.slf4j.org) ([MIT License](http://www.opensource.org/licenses/mit-license.php)) -- [SLF4J Simple:2.0.13](http://www.slf4j.org) ([MIT License](http://www.opensource.org/licenses/mit-license.php)) +- [jsr305:3.0.2](https://mvnrepository.com/artifact/com.google.code.findbugs/jsr305/3.0.2) ([GNU Lesser General Public License, Version 2.1](https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html)) +- [checker-qual:3.46.0](https://checkerframework.org/) ([MIT License](https://opensource.org/licenses/MIT)) # How to contribute? diff --git a/build.gradle.kts b/build.gradle.kts index ba54bd8..770181b 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -34,11 +34,12 @@ dependencies { implementation("com.fasterxml.jackson.core:jackson-databind:2.17.1") - implementation("org.slf4j:slf4j-api:2.0.13") - runtimeOnly("org.slf4j:slf4j-simple:2.0.13") implementation("org.apache.tika:tika-core:2.9.2") - implementation("com.google.guava:guava:33.2.1-jre") implementation("org.mapstruct:mapstruct:1.5.5.Final") + implementation("com.google.code.findbugs:jsr305:3.0.2") + implementation("org.checkerframework:checker-qual:3.46.0") + + compileOnly("org.projectlombok:lombok:1.18.32") annotationProcessor("org.projectlombok:lombok:1.18.32") diff --git a/src/main/java/com/picsart/creativeapis/AbstractApiClient.java b/src/main/java/com/picsart/creativeapis/AbstractApiClient.java index 6e413f9..ce40fec 100644 --- a/src/main/java/com/picsart/creativeapis/AbstractApiClient.java +++ b/src/main/java/com/picsart/creativeapis/AbstractApiClient.java @@ -24,11 +24,10 @@ package com.picsart.creativeapis; -import com.google.common.annotations.VisibleForTesting; import com.picsart.creativeapis.busobj.ApiConfig; import com.picsart.creativeapis.busobj.HttpResponseWithStringBody; import com.picsart.creativeapis.http.ApiHttpClient; -import jakarta.validation.constraints.NotNull; +import com.picsart.creativeapis.utils.UrlUtils; import java.time.Duration; import lombok.AccessLevel; import lombok.RequiredArgsConstructor; @@ -40,20 +39,11 @@ public abstract class AbstractApiClient { ApiHttpClient apiHttpClient; - @NotNull - private static String removeTailingSlashIfAny(String baseUrl) { - return baseUrl.endsWith("/") ? baseUrl.substring(0, baseUrl.length() - 1) : baseUrl; - } - - @VisibleForTesting - public static String appendBaseUrl(String baseUrl, String url) { - return "%s/%s".formatted(removeTailingSlashIfAny(baseUrl), url); - } - protected Mono getAsyncResponse( ApiConfig config, String url, int repeatCount, Duration delay) { return apiHttpClient - .sendGetRequest(appendBaseUrl(config.baseUrl(), url), config.apiKey(), config.timeout()) + .sendGetRequest( + UrlUtils.appendBaseUrl(config.baseUrl(), url), config.apiKey(), config.timeout()) .filter( httpResponseWithParsedBody -> { var code = httpResponseWithParsedBody.getHttpClientResponse().status().code(); diff --git a/src/main/java/com/picsart/creativeapis/busobj/image/parameters/UpscaleParameters.java b/src/main/java/com/picsart/creativeapis/busobj/image/parameters/UpscaleParameters.java index 670c988..563174d 100644 --- a/src/main/java/com/picsart/creativeapis/busobj/image/parameters/UpscaleParameters.java +++ b/src/main/java/com/picsart/creativeapis/busobj/image/parameters/UpscaleParameters.java @@ -45,7 +45,7 @@ public class UpscaleParameters { /** The source of the image to be upscaled. */ ImageSource image; - /** The upscale factor for the upscaling. This is optional. Allowed values: 2, 4, 8, 16. */ + /** The upscale factor for the upscaling. This is optional. Allowed values: 2, 4, 6, 8. */ @Nullable Integer upscaleFactor; /** The desired format of the image after upscaling. This is optional. */ diff --git a/src/main/java/com/picsart/creativeapis/genai/client/GenAIApiClientImpl.java b/src/main/java/com/picsart/creativeapis/genai/client/GenAIApiClientImpl.java index 035f0a5..218b42b 100644 --- a/src/main/java/com/picsart/creativeapis/genai/client/GenAIApiClientImpl.java +++ b/src/main/java/com/picsart/creativeapis/genai/client/GenAIApiClientImpl.java @@ -36,12 +36,11 @@ import com.picsart.creativeapis.busobj.genai.response.Text2ImageMiddleResponse; import com.picsart.creativeapis.busobj.genai.response.Text2ImageResponse; import com.picsart.creativeapis.http.ApiHttpClient; +import com.picsart.creativeapis.utils.UrlUtils; import lombok.NonNull; import lombok.experimental.FieldDefaults; -import lombok.extern.slf4j.Slf4j; import reactor.core.publisher.Mono; -@Slf4j @FieldDefaults(makeFinal = true, level = lombok.AccessLevel.PRIVATE) public class GenAIApiClientImpl extends AbstractApiClient implements GenAIApiClient { GenAIApiClientConfig clientConfig; @@ -55,14 +54,13 @@ public GenAIApiClientImpl( @Override public Mono> text2Image( ApiConfig config, Text2ImageRequest request) { - log.debug("Text2Image request: {}", request); var apiKey = config.apiKey(); var baseUrl = config.baseUrl(); var validateRequestMono = validateRequestMono(request, ApiActions.TEXT2IMAGE.actionName()); var sendRequestMono = apiHttpClient .sendPostRequest( - appendBaseUrl(baseUrl, ApiActions.TEXT2IMAGE.url()), + UrlUtils.appendBaseUrl(baseUrl, ApiActions.TEXT2IMAGE.url()), apiKey, request, config.timeout()) @@ -79,7 +77,7 @@ private Mono> getText2ImageAsyncResult( ApiConfig config, String id) { return apiHttpClient .sendGetRequest( - appendBaseUrl( + UrlUtils.appendBaseUrl( config.baseUrl(), ApiActions.TEXT2IMAGE.url() + SLASH + INFERENCES_URL.formatted(id)), config.apiKey(), diff --git a/src/main/java/com/picsart/creativeapis/http/ApiHttpClientImpl.java b/src/main/java/com/picsart/creativeapis/http/ApiHttpClientImpl.java index 3e388d1..d48107d 100644 --- a/src/main/java/com/picsart/creativeapis/http/ApiHttpClientImpl.java +++ b/src/main/java/com/picsart/creativeapis/http/ApiHttpClientImpl.java @@ -31,18 +31,20 @@ import com.picsart.creativeapis.utils.Constants; import com.picsart.creativeapis.utils.ExceptionUtils; import com.picsart.creativeapis.utils.JacksonUtils; -import io.netty.handler.codec.http.*; +import io.netty.handler.codec.http.HttpHeaderNames; +import io.netty.handler.codec.http.HttpHeaderValues; +import io.netty.handler.codec.http.HttpHeaders; +import io.netty.handler.codec.http.HttpStatusClass; import java.time.Duration; import lombok.AccessLevel; import lombok.experimental.FieldDefaults; -import lombok.extern.slf4j.Slf4j; import reactor.core.publisher.Mono; import reactor.netty.ByteBufFlux; import reactor.netty.http.client.HttpClient; -@Slf4j @FieldDefaults(makeFinal = true, level = AccessLevel.PRIVATE) public class ApiHttpClientImpl implements ApiHttpClient { + private final System.Logger log = System.getLogger(ApiHttpClientImpl.class.getName()); HttpClient client; public ApiHttpClientImpl() { @@ -107,7 +109,8 @@ private Mono handleResponse( .asString() .doOnNext( body -> - log.debug( + log.log( + System.Logger.Level.DEBUG, """ Response received for {} request to '{}' RequestBody: {} @@ -132,8 +135,13 @@ private Mono handleResponse( .onErrorMap( e -> !(e instanceof ApiException), e -> { - log.error( - "Error sending {} request to '{}'\nRequestBody: {}", method, url, request, e); + log.log( + System.Logger.Level.ERROR, + "Error sending {} request to '{}'\nRequestBody: {}", + method, + url, + request, + e); return new ApiException("Error sending request", e); }); } diff --git a/src/main/java/com/picsart/creativeapis/image/client/ImageApiClientImpl.java b/src/main/java/com/picsart/creativeapis/image/client/ImageApiClientImpl.java index ffc375b..090d554 100644 --- a/src/main/java/com/picsart/creativeapis/image/client/ImageApiClientImpl.java +++ b/src/main/java/com/picsart/creativeapis/image/client/ImageApiClientImpl.java @@ -37,13 +37,12 @@ import com.picsart.creativeapis.busobj.image.response.*; import com.picsart.creativeapis.busobj.mapper.MetadataMapper; import com.picsart.creativeapis.http.ApiHttpClient; +import com.picsart.creativeapis.utils.UrlUtils; import io.netty.handler.codec.http.HttpResponseStatus; import lombok.NonNull; import lombok.experimental.FieldDefaults; -import lombok.extern.slf4j.Slf4j; import reactor.core.publisher.Mono; -@Slf4j @FieldDefaults(makeFinal = true, level = lombok.AccessLevel.PRIVATE) public class ImageApiClientImpl extends AbstractApiClient implements ImageApiClient { ImageApiClientConfig clientConfig; @@ -64,7 +63,7 @@ public Mono> removeBackground( var sendRequestMono = apiHttpClient .sendPostRequest( - appendBaseUrl(baseUrl, ApiActions.REMOVE_BACKGROUND.url()), + UrlUtils.appendBaseUrl(baseUrl, ApiActions.REMOVE_BACKGROUND.url()), apiKey, request, config.timeout()) @@ -81,7 +80,10 @@ public Mono> effect( var sendRequestMono = apiHttpClient .sendPostRequest( - appendBaseUrl(baseUrl, ApiActions.EFFECT.url()), apiKey, request, config.timeout()) + UrlUtils.appendBaseUrl(baseUrl, ApiActions.EFFECT.url()), + apiKey, + request, + config.timeout()) .map(response -> response.parseBody(EffectResponse.class)); return validateRequestMono.then(sendRequestMono); } @@ -92,7 +94,9 @@ public Mono> listEffects(ApiConfig con var baseUrl = config.baseUrl(); return apiHttpClient .sendGetRequest( - appendBaseUrl(baseUrl, ApiActions.LIST_EFFECTS.url()), apiKey, config.timeout()) + UrlUtils.appendBaseUrl(baseUrl, ApiActions.LIST_EFFECTS.url()), + apiKey, + config.timeout()) .map(response -> response.parseBody(ListEffectsResponse.class)); } @@ -105,7 +109,7 @@ public Mono> ultraUpscale( var sendRequestMono = apiHttpClient .sendPostRequest( - appendBaseUrl(baseUrl, ApiActions.ULTRA_UPSCALE.url()), + UrlUtils.appendBaseUrl(baseUrl, ApiActions.ULTRA_UPSCALE.url()), apiKey, request, config.timeout()) @@ -140,7 +144,10 @@ public Mono> upscale( var sendRequestMono = apiHttpClient .sendPostRequest( - appendBaseUrl(baseUrl, ApiActions.UPSCALE.url()), apiKey, request, config.timeout()) + UrlUtils.appendBaseUrl(baseUrl, ApiActions.UPSCALE.url()), + apiKey, + request, + config.timeout()) .map(response -> response.parseBody(UpscaleResponse.class)); return validateRequestMono.then(sendRequestMono); } @@ -154,7 +161,7 @@ public Mono> ultraEnhance( var sendRequestMono = apiHttpClient .sendPostRequest( - appendBaseUrl(baseUrl, ApiActions.ULTRA_ENHANCE.url()), + UrlUtils.appendBaseUrl(baseUrl, ApiActions.ULTRA_ENHANCE.url()), apiKey, request, config.timeout()) @@ -171,7 +178,7 @@ public Mono> enhanceFace( var sendRequestMono = apiHttpClient .sendPostRequest( - appendBaseUrl(baseUrl, ApiActions.ENHANCE_FACE.url()), + UrlUtils.appendBaseUrl(baseUrl, ApiActions.ENHANCE_FACE.url()), apiKey, request, config.timeout()) @@ -189,7 +196,7 @@ public Mono> effectsPreviews( var sendRequestMono = apiHttpClient .sendPostRequest( - appendBaseUrl(baseUrl, ApiActions.EFFECTS_PREVIEWS.url()), + UrlUtils.appendBaseUrl(baseUrl, ApiActions.EFFECTS_PREVIEWS.url()), apiKey, request, config.timeout()) @@ -206,7 +213,10 @@ public Mono> adjust( var sendRequestMono = apiHttpClient .sendPostRequest( - appendBaseUrl(baseUrl, ApiActions.ADJUST.url()), apiKey, request, config.timeout()) + UrlUtils.appendBaseUrl(baseUrl, ApiActions.ADJUST.url()), + apiKey, + request, + config.timeout()) .map(response -> response.parseBody(AdjustResponse.class)); return validateRequestMono.then(sendRequestMono); } @@ -221,7 +231,7 @@ public Mono> backgroundTexture( var sendRequestMono = apiHttpClient .sendPostRequest( - appendBaseUrl(baseUrl, ApiActions.BACKGROUND_TEXTURE.url()), + UrlUtils.appendBaseUrl(baseUrl, ApiActions.BACKGROUND_TEXTURE.url()), apiKey, request, config.timeout()) @@ -238,7 +248,7 @@ public Mono> surfaceMap( var sendRequestMono = apiHttpClient .sendPostRequest( - appendBaseUrl(baseUrl, ApiActions.SURFACE_MAP.url()), + UrlUtils.appendBaseUrl(baseUrl, ApiActions.SURFACE_MAP.url()), apiKey, request, config.timeout()) @@ -255,7 +265,10 @@ public Mono> upload( var sendRequestMono = apiHttpClient .sendPostRequest( - appendBaseUrl(baseUrl, ApiActions.UPLOAD.url()), apiKey, request, config.timeout()) + UrlUtils.appendBaseUrl(baseUrl, ApiActions.UPLOAD.url()), + apiKey, + request, + config.timeout()) .map(response -> response.parseBody(UploadResponse.class)); return validateRequestMono.then(sendRequestMono); } @@ -265,7 +278,8 @@ public Mono> balance(ApiConfig config) { var apiKey = config.apiKey(); var baseUrl = config.baseUrl(); return apiHttpClient - .sendGetRequest(appendBaseUrl(baseUrl, ApiActions.BALANCE.url()), apiKey, config.timeout()) + .sendGetRequest( + UrlUtils.appendBaseUrl(baseUrl, ApiActions.BALANCE.url()), apiKey, config.timeout()) .map(response -> response.parseBody(BalanceResponse.class)); } diff --git a/src/main/java/com/picsart/creativeapis/utils/ExceptionUtils.java b/src/main/java/com/picsart/creativeapis/utils/ExceptionUtils.java index 2cb4891..ac687f7 100644 --- a/src/main/java/com/picsart/creativeapis/utils/ExceptionUtils.java +++ b/src/main/java/com/picsart/creativeapis/utils/ExceptionUtils.java @@ -24,7 +24,6 @@ package com.picsart.creativeapis.utils; -import com.google.common.collect.ImmutableMap; import com.picsart.creativeapis.busobj.exception.*; import com.picsart.creativeapis.busobj.mapper.MetadataMapper; import com.picsart.creativeapis.busobj.result.Metadata; @@ -40,26 +39,26 @@ public class ExceptionUtils { HTTP_RESPONSE_TO_EXCEPTION_MAP; static { - var builder = - ImmutableMap - .>builder(); - builder.put(HttpResponseStatus.BAD_REQUEST, BadRequestException::new); - builder.put(HttpResponseStatus.UNAUTHORIZED, UnauthorizedException::new); - builder.put(HttpResponseStatus.FORBIDDEN, ForbiddenException::new); - builder.put(HttpResponseStatus.NOT_FOUND, NotFoundException::new); - builder.put(HttpResponseStatus.METHOD_NOT_ALLOWED, MethodNotAllowedException::new); - builder.put(HttpResponseStatus.REQUEST_TIMEOUT, RequestTimeoutException::new); - builder.put(HttpResponseStatus.REQUEST_ENTITY_TOO_LARGE, RequestEntityTooLargeException::new); - builder.put(HttpResponseStatus.UNSUPPORTED_MEDIA_TYPE, UnsupportedMediaTypeException::new); - builder.put(HttpResponseStatus.TOO_MANY_REQUESTS, TooManyRequestsException::new); - builder.put( - HttpResponseStatus.REQUEST_HEADER_FIELDS_TOO_LARGE, - RequestHeaderFieldsTooLargeException::new); - builder.put(HttpResponseStatus.INTERNAL_SERVER_ERROR, InternalServerErrorException::new); - builder.put(HttpResponseStatus.BAD_GATEWAY, BadGatewayException::new); - builder.put(HttpResponseStatus.SERVICE_UNAVAILABLE, ServiceUnavailableException::new); - builder.put(HttpResponseStatus.GATEWAY_TIMEOUT, GatewayTimeoutException::new); - HTTP_RESPONSE_TO_EXCEPTION_MAP = builder.build(); + HTTP_RESPONSE_TO_EXCEPTION_MAP = + Map.ofEntries( + Map.entry(HttpResponseStatus.BAD_REQUEST, BadRequestException::new), + Map.entry(HttpResponseStatus.UNAUTHORIZED, UnauthorizedException::new), + Map.entry(HttpResponseStatus.FORBIDDEN, ForbiddenException::new), + Map.entry(HttpResponseStatus.NOT_FOUND, NotFoundException::new), + Map.entry(HttpResponseStatus.METHOD_NOT_ALLOWED, MethodNotAllowedException::new), + Map.entry(HttpResponseStatus.REQUEST_TIMEOUT, RequestTimeoutException::new), + Map.entry( + HttpResponseStatus.REQUEST_ENTITY_TOO_LARGE, RequestEntityTooLargeException::new), + Map.entry( + HttpResponseStatus.UNSUPPORTED_MEDIA_TYPE, UnsupportedMediaTypeException::new), + Map.entry(HttpResponseStatus.TOO_MANY_REQUESTS, TooManyRequestsException::new), + Map.entry( + HttpResponseStatus.REQUEST_HEADER_FIELDS_TOO_LARGE, + RequestHeaderFieldsTooLargeException::new), + Map.entry(HttpResponseStatus.INTERNAL_SERVER_ERROR, InternalServerErrorException::new), + Map.entry(HttpResponseStatus.BAD_GATEWAY, BadGatewayException::new), + Map.entry(HttpResponseStatus.SERVICE_UNAVAILABLE, ServiceUnavailableException::new), + Map.entry(HttpResponseStatus.GATEWAY_TIMEOUT, GatewayTimeoutException::new)); } public FailureResponseException mapToFailureResponseException( diff --git a/src/main/java/com/picsart/creativeapis/utils/MultipartRequestBodyUtils.java b/src/main/java/com/picsart/creativeapis/utils/MultipartRequestBodyUtils.java index 79b5ad4..ecf9772 100644 --- a/src/main/java/com/picsart/creativeapis/utils/MultipartRequestBodyUtils.java +++ b/src/main/java/com/picsart/creativeapis/utils/MultipartRequestBodyUtils.java @@ -24,11 +24,10 @@ package com.picsart.creativeapis.utils; -import com.google.common.base.CaseFormat; -import com.google.common.base.Function; import java.beans.Introspector; import java.io.File; import java.util.*; +import java.util.function.Function; import java.util.stream.Collectors; import javax.annotation.Nullable; import lombok.SneakyThrows; @@ -145,7 +144,7 @@ private Map introspect(Object obj) { } private String camelToSnake(String camelCase) { - return CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, camelCase); + return camelCase.replaceAll("([a-z])([A-Z]+)", "$1_$2").toLowerCase(Locale.ROOT); } private String getMimeType(File file) { diff --git a/src/main/java/com/picsart/creativeapis/utils/UrlUtils.java b/src/main/java/com/picsart/creativeapis/utils/UrlUtils.java new file mode 100644 index 0000000..220f0a2 --- /dev/null +++ b/src/main/java/com/picsart/creativeapis/utils/UrlUtils.java @@ -0,0 +1,40 @@ +/* + * MIT License + * + * Copyright (c) 2024 PicsArt, Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +package com.picsart.creativeapis.utils; + +import jakarta.validation.constraints.NotNull; +import lombok.experimental.UtilityClass; + +@UtilityClass +public class UrlUtils { + @NotNull + private static String removeTailingSlashIfAny(String baseUrl) { + return baseUrl.endsWith("/") ? baseUrl.substring(0, baseUrl.length() - 1) : baseUrl; + } + + public static String appendBaseUrl(String baseUrl, String url) { + return "%s/%s".formatted(removeTailingSlashIfAny(baseUrl), url); + } +} diff --git a/src/main/java/com/picsart/creativeapis/utils/VersionUtils.java b/src/main/java/com/picsart/creativeapis/utils/VersionUtils.java index e25916d..ff49b1c 100644 --- a/src/main/java/com/picsart/creativeapis/utils/VersionUtils.java +++ b/src/main/java/com/picsart/creativeapis/utils/VersionUtils.java @@ -28,11 +28,11 @@ import java.io.IOException; import java.util.Properties; import lombok.experimental.UtilityClass; -import lombok.extern.slf4j.Slf4j; @UtilityClass -@Slf4j class VersionUtils { + private static final System.Logger log = System.getLogger(VersionUtils.class.getName()); + String getVersion() { var properties = new Properties(); try (var inputStream = @@ -41,10 +41,10 @@ String getVersion() { properties.load(inputStream); return properties.getProperty("version"); } else { - log.error("version.properties file not found"); + log.log(System.Logger.Level.ERROR, "version.properties file not found"); } } catch (IOException e) { - log.error("Error reading version properties file", e); + log.log(System.Logger.Level.ERROR, "Error reading version properties file", e); } return "unknown"; } diff --git a/src/test/java/com/picsart/creativeapis/genai/GenAIApiClientImplTest.java b/src/test/java/com/picsart/creativeapis/genai/GenAIApiClientImplTest.java index d094f28..8fd7463 100644 --- a/src/test/java/com/picsart/creativeapis/genai/GenAIApiClientImplTest.java +++ b/src/test/java/com/picsart/creativeapis/genai/GenAIApiClientImplTest.java @@ -29,7 +29,6 @@ import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; -import com.picsart.creativeapis.AbstractApiClient; import com.picsart.creativeapis.busobj.ApiActions; import com.picsart.creativeapis.busobj.ApiConfig; import com.picsart.creativeapis.busobj.HttpResponseWithStringBody; @@ -41,6 +40,7 @@ import com.picsart.creativeapis.busobj.result.Metadata; import com.picsart.creativeapis.genai.client.GenAIApiClientImpl; import com.picsart.creativeapis.http.ApiHttpClient; +import com.picsart.creativeapis.utils.UrlUtils; import io.netty.handler.codec.http.HttpResponseStatus; import java.time.Duration; import java.util.List; @@ -112,7 +112,7 @@ public void shouldReturnText2ImageResponseWhenText2ImageIsCalledWithValidRequest when(httpClientResponse200.status()).thenReturn(new HttpResponseStatus(200, "OK")); var expectedResponse = new Text2ImageResponse("DONE", List.of(new Image("testId", "testUrl"))); when(apiHttpClient.sendPostRequest( - AbstractApiClient.appendBaseUrl(BASE_URL, ApiActions.TEXT2IMAGE.url()), + UrlUtils.appendBaseUrl(BASE_URL, ApiActions.TEXT2IMAGE.url()), API_KEY, VALID_REQUEST, TIMEOUT)) @@ -121,7 +121,7 @@ public void shouldReturnText2ImageResponseWhenText2ImageIsCalledWithValidRequest HttpResponseWithStringBody.of(httpClientResponse202, validMiddleResponseBody))); when(apiHttpClient.sendGetRequest( - AbstractApiClient.appendBaseUrl( + UrlUtils.appendBaseUrl( BASE_URL, ApiActions.TEXT2IMAGE.url() + SLASH + INFERENCES_URL.formatted("testInferenceId")), API_KEY, @@ -163,7 +163,7 @@ public void shouldReturnErrorResponseWhenText2ImageFailToFinishWithinConfiguredR var httpClientResponse200 = mock(HttpClientResponse.class); var httpClientResponse202 = mock(HttpClientResponse.class); when(apiHttpClient.sendPostRequest( - AbstractApiClient.appendBaseUrl(BASE_URL, ApiActions.TEXT2IMAGE.url()), + UrlUtils.appendBaseUrl(BASE_URL, ApiActions.TEXT2IMAGE.url()), API_KEY, VALID_REQUEST, TIMEOUT)) @@ -172,7 +172,7 @@ public void shouldReturnErrorResponseWhenText2ImageFailToFinishWithinConfiguredR HttpResponseWithStringBody.of(httpClientResponse202, validMiddleResponseBody))); when(apiHttpClient.sendGetRequest( - AbstractApiClient.appendBaseUrl( + UrlUtils.appendBaseUrl( BASE_URL, ApiActions.TEXT2IMAGE.url() + SLASH + INFERENCES_URL.formatted("testInferenceId")), API_KEY, @@ -197,7 +197,7 @@ public void shouldReturnErrorResponseWhenText2ImageFailToFinishWithinConfiguredR public void shouldReturnErrorMonoWhenText2ImageIsCalledWithInvalidRequest() { // Given when(apiHttpClient.sendPostRequest( - AbstractApiClient.appendBaseUrl(BASE_URL, ApiActions.TEXT2IMAGE.url()), + UrlUtils.appendBaseUrl(BASE_URL, ApiActions.TEXT2IMAGE.url()), API_KEY, INVALID_COUNT_REQUEST, TIMEOUT)) @@ -227,7 +227,7 @@ public void shouldReturnErrorMonoWhenText2ImageIsCalledAndDownstreamServiceIsUna // Given var metadata = new Metadata(null, null, null, null, null); when(apiHttpClient.sendPostRequest( - AbstractApiClient.appendBaseUrl(BASE_URL, ApiActions.TEXT2IMAGE.url()), + UrlUtils.appendBaseUrl(BASE_URL, ApiActions.TEXT2IMAGE.url()), API_KEY, VALID_REQUEST, TIMEOUT)) diff --git a/src/test/java/com/picsart/creativeapis/image/ImageApiClientImplTest.java b/src/test/java/com/picsart/creativeapis/image/ImageApiClientImplTest.java index f2b29a5..8f64f3c 100644 --- a/src/test/java/com/picsart/creativeapis/image/ImageApiClientImplTest.java +++ b/src/test/java/com/picsart/creativeapis/image/ImageApiClientImplTest.java @@ -28,7 +28,6 @@ import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; -import com.picsart.creativeapis.AbstractApiClient; import com.picsart.creativeapis.busobj.ApiActions; import com.picsart.creativeapis.busobj.ApiConfig; import com.picsart.creativeapis.busobj.HttpResponseWithStringBody; @@ -42,6 +41,7 @@ import com.picsart.creativeapis.busobj.result.Metadata; import com.picsart.creativeapis.http.ApiHttpClient; import com.picsart.creativeapis.image.client.ImageApiClientImpl; +import com.picsart.creativeapis.utils.UrlUtils; import io.netty.handler.codec.http.HttpResponseStatus; import java.io.File; import java.time.Duration; @@ -197,7 +197,7 @@ public void shouldReturnRemoveBackgroundResponseWhenRemoveBackgroundIsCalledWith var httpClientResponse200 = mock(HttpClientResponse.class); when(httpClientResponse200.status()).thenReturn(new HttpResponseStatus(200, "OK")); when(apiHttpClient.sendPostRequest( - AbstractApiClient.appendBaseUrl(BASE_URL, ApiActions.REMOVE_BACKGROUND.url()), + UrlUtils.appendBaseUrl(BASE_URL, ApiActions.REMOVE_BACKGROUND.url()), API_KEY, VALID_RB_REQUEST, TIMEOUT)) @@ -221,7 +221,7 @@ public void shouldReturnRemoveBackgroundResponseWhenRemoveBackgroundIsCalledWith public void shouldReturnErrorMonoWhenRemoveBackgroundIsCalledWithInvalidRequest() { // Given when(apiHttpClient.sendPostRequest( - AbstractApiClient.appendBaseUrl(BASE_URL, ApiActions.REMOVE_BACKGROUND.url()), + UrlUtils.appendBaseUrl(BASE_URL, ApiActions.REMOVE_BACKGROUND.url()), API_KEY, INVALID_RB_REQUEST, TIMEOUT)) @@ -253,7 +253,7 @@ public void shouldReturnErrorMonoWhenRemoveBackgroundIsCalledWithInvalidRequest( public void shouldReturnErrorMonoWhenRemoveBackgroundIsCalledAndDownstreamServiceIsUnavailable() { // Given when(apiHttpClient.sendPostRequest( - AbstractApiClient.appendBaseUrl(BASE_URL, ApiActions.REMOVE_BACKGROUND.url()), + UrlUtils.appendBaseUrl(BASE_URL, ApiActions.REMOVE_BACKGROUND.url()), API_KEY, VALID_RB_REQUEST, TIMEOUT)) @@ -289,7 +289,7 @@ public void shouldReturnEffectResponseWhenEffectIsCalledWithValidRequest() { var httpClientResponse200 = mock(HttpClientResponse.class); when(httpClientResponse200.status()).thenReturn(new HttpResponseStatus(200, "OK")); when(apiHttpClient.sendPostRequest( - AbstractApiClient.appendBaseUrl(BASE_URL, ApiActions.EFFECT.url()), + UrlUtils.appendBaseUrl(BASE_URL, ApiActions.EFFECT.url()), API_KEY, VALID_EFFECT_REQUEST, TIMEOUT)) @@ -313,7 +313,7 @@ public void shouldReturnEffectResponseWhenEffectIsCalledWithValidRequest() { public void shouldReturnErrorMonoWhenEffectIsCalledWithInvalidRequest() { // Given when(apiHttpClient.sendPostRequest( - AbstractApiClient.appendBaseUrl(BASE_URL, ApiActions.EFFECT.url()), + UrlUtils.appendBaseUrl(BASE_URL, ApiActions.EFFECT.url()), API_KEY, INVALID_EFFECT_REQUEST, TIMEOUT)) @@ -342,7 +342,7 @@ public void shouldReturnErrorMonoWhenEffectIsCalledWithInvalidRequest() { public void shouldReturnErrorMonoWhenEffectIsCalledAndDownstreamServiceIsUnavailable() { // Given when(apiHttpClient.sendPostRequest( - AbstractApiClient.appendBaseUrl(BASE_URL, ApiActions.EFFECT.url()), + UrlUtils.appendBaseUrl(BASE_URL, ApiActions.EFFECT.url()), API_KEY, VALID_EFFECT_REQUEST, TIMEOUT)) @@ -387,7 +387,7 @@ public void shouldReturnListEffectResponseWhenListEffectsIsCalled() { var httpClientResponse200 = mock(HttpClientResponse.class); when(httpClientResponse200.status()).thenReturn(new HttpResponseStatus(200, "OK")); when(apiHttpClient.sendGetRequest( - AbstractApiClient.appendBaseUrl(BASE_URL, ApiActions.EFFECT.url()), API_KEY, TIMEOUT)) + UrlUtils.appendBaseUrl(BASE_URL, ApiActions.EFFECT.url()), API_KEY, TIMEOUT)) .thenReturn( Mono.just(HttpResponseWithStringBody.of(httpClientResponse200, validResponseBody))); @@ -409,7 +409,7 @@ public void shouldReturnListEffectResponseWhenListEffectsIsCalled() { public void shouldReturnErrorMonoWhenListEffectsIsCalledAndDownstreamServiceIsUnavailable() { // Given when(apiHttpClient.sendGetRequest( - AbstractApiClient.appendBaseUrl(BASE_URL, ApiActions.EFFECT.url()), API_KEY, TIMEOUT)) + UrlUtils.appendBaseUrl(BASE_URL, ApiActions.EFFECT.url()), API_KEY, TIMEOUT)) .thenReturn(Mono.error(new ServiceUnavailableException("Service Unavailable", METADATA))); // When @@ -451,7 +451,7 @@ public void shouldReturnUpscaleUltraResponseWhenUltraUpscaleIsCalledWithValidReq when(httpClientResponse202.status()).thenReturn(new HttpResponseStatus(202, "Accepted")); var expectedResponse = new UltraUpscaleResponse("DONE", new Image("testId", "testUrl")); when(apiHttpClient.sendPostRequest( - AbstractApiClient.appendBaseUrl(BASE_URL, ApiActions.ULTRA_UPSCALE.url()), + UrlUtils.appendBaseUrl(BASE_URL, ApiActions.ULTRA_UPSCALE.url()), API_KEY, VALID_UPSCALE_ULTRA_REQUEST, TIMEOUT)) @@ -460,7 +460,7 @@ public void shouldReturnUpscaleUltraResponseWhenUltraUpscaleIsCalledWithValidReq HttpResponseWithStringBody.of(httpClientResponse202, validMiddleResponseBody))); when(apiHttpClient.sendGetRequest( - AbstractApiClient.appendBaseUrl( + UrlUtils.appendBaseUrl( BASE_URL, ApiActions.ULTRA_UPSCALE.url() + SLASH + "testTransactionId"), API_KEY, TIMEOUT)) @@ -484,7 +484,7 @@ public void shouldReturnUpscaleUltraResponseWhenUltraUpscaleIsCalledWithValidReq public void shouldReturnErrorMonoWhenUltraUpscaleIsCalledWithInvalidRequest() { // Given when(apiHttpClient.sendPostRequest( - AbstractApiClient.appendBaseUrl(BASE_URL, ApiActions.ULTRA_UPSCALE.url()), + UrlUtils.appendBaseUrl(BASE_URL, ApiActions.ULTRA_UPSCALE.url()), API_KEY, INVALID_UPSCALE_ULTRA_REQUEST, TIMEOUT)) @@ -513,7 +513,7 @@ public void shouldReturnErrorMonoWhenUltraUpscaleIsCalledWithInvalidRequest() { public void shouldReturnErrorMonoWhenUpscaleUltrasIsCalledAndDownstreamServiceIsUnavailable() { // Given when(apiHttpClient.sendPostRequest( - AbstractApiClient.appendBaseUrl(BASE_URL, ApiActions.ULTRA_UPSCALE.url()), + UrlUtils.appendBaseUrl(BASE_URL, ApiActions.ULTRA_UPSCALE.url()), API_KEY, VALID_UPSCALE_ULTRA_REQUEST, TIMEOUT)) @@ -555,7 +555,7 @@ public void shouldReturnErrorResponseWhenUltraUpscaleFailToFinishWithinConfigure var httpClientResponse202 = mock(HttpClientResponse.class); when(httpClientResponse202.status()).thenReturn(new HttpResponseStatus(202, "Accepted")); when(apiHttpClient.sendPostRequest( - AbstractApiClient.appendBaseUrl(BASE_URL, ApiActions.ULTRA_UPSCALE.url()), + UrlUtils.appendBaseUrl(BASE_URL, ApiActions.ULTRA_UPSCALE.url()), API_KEY, VALID_UPSCALE_ULTRA_REQUEST, TIMEOUT)) @@ -564,7 +564,7 @@ public void shouldReturnErrorResponseWhenUltraUpscaleFailToFinishWithinConfigure HttpResponseWithStringBody.of(httpClientResponse202, validMiddleResponseBody))); when(apiHttpClient.sendGetRequest( - AbstractApiClient.appendBaseUrl( + UrlUtils.appendBaseUrl( BASE_URL, ApiActions.ULTRA_UPSCALE.url() + SLASH + "testTransactionId"), API_KEY, TIMEOUT)) @@ -601,7 +601,7 @@ public void shouldReturnUpscaleResponseWhenUpscaleIsCalledWithValidRequest() { var httpClientResponse200 = mock(HttpClientResponse.class); when(httpClientResponse200.status()).thenReturn(new HttpResponseStatus(200, "OK")); when(apiHttpClient.sendPostRequest( - AbstractApiClient.appendBaseUrl(BASE_URL, ApiActions.UPSCALE.url()), + UrlUtils.appendBaseUrl(BASE_URL, ApiActions.UPSCALE.url()), API_KEY, VALID_UPSCALE_REQUEST, TIMEOUT)) @@ -625,7 +625,7 @@ public void shouldReturnUpscaleResponseWhenUpscaleIsCalledWithValidRequest() { public void shouldReturnErrorMonoWhenUpscaleIsCalledWithInvalidRequest() { // Given when(apiHttpClient.sendPostRequest( - AbstractApiClient.appendBaseUrl(BASE_URL, ApiActions.UPSCALE.url()), + UrlUtils.appendBaseUrl(BASE_URL, ApiActions.UPSCALE.url()), API_KEY, INVALID_UPSCALE_REQUEST, TIMEOUT)) @@ -654,7 +654,7 @@ public void shouldReturnErrorMonoWhenUpscaleIsCalledWithInvalidRequest() { public void shouldReturnErrorMonoWhenUpscaleIsCalledAndDownstreamServiceIsUnavailable() { // Given when(apiHttpClient.sendPostRequest( - AbstractApiClient.appendBaseUrl(BASE_URL, ApiActions.UPSCALE.url()), + UrlUtils.appendBaseUrl(BASE_URL, ApiActions.UPSCALE.url()), API_KEY, VALID_UPSCALE_REQUEST, TIMEOUT)) @@ -690,7 +690,7 @@ public void shouldReturnUltraEnhanceResponseWhenUltraEnhanceIsCalledWithValidReq var httpClientResponse200 = mock(HttpClientResponse.class); when(httpClientResponse200.status()).thenReturn(new HttpResponseStatus(200, "OK")); when(apiHttpClient.sendPostRequest( - AbstractApiClient.appendBaseUrl(BASE_URL, ApiActions.ULTRA_ENHANCE.url()), + UrlUtils.appendBaseUrl(BASE_URL, ApiActions.ULTRA_ENHANCE.url()), API_KEY, VALID_ULTRA_ENHANCE_REQUEST, TIMEOUT)) @@ -714,7 +714,7 @@ public void shouldReturnUltraEnhanceResponseWhenUltraEnhanceIsCalledWithValidReq public void shouldReturnErrorMonoWhenUltraEnhanceIsCalledWithInvalidRequest() { // Given when(apiHttpClient.sendPostRequest( - AbstractApiClient.appendBaseUrl(BASE_URL, ApiActions.ULTRA_ENHANCE.url()), + UrlUtils.appendBaseUrl(BASE_URL, ApiActions.ULTRA_ENHANCE.url()), API_KEY, INVALID_ULTRA_ENHANCE_REQUEST, TIMEOUT)) @@ -743,7 +743,7 @@ public void shouldReturnErrorMonoWhenUltraEnhanceIsCalledWithInvalidRequest() { public void shouldReturnErrorMonoWhenUltraEnhanceIsCalledAndDownstreamServiceIsUnavailable() { // Given when(apiHttpClient.sendPostRequest( - AbstractApiClient.appendBaseUrl(BASE_URL, ApiActions.ULTRA_ENHANCE.url()), + UrlUtils.appendBaseUrl(BASE_URL, ApiActions.ULTRA_ENHANCE.url()), API_KEY, VALID_ULTRA_ENHANCE_REQUEST, TIMEOUT)) @@ -780,7 +780,7 @@ public void shouldReturnFaceEnhancementResponseWhenEnhanceFaceIsCalledWithValidR var httpClientResponse200 = mock(HttpClientResponse.class); when(httpClientResponse200.status()).thenReturn(new HttpResponseStatus(200, "OK")); when(apiHttpClient.sendPostRequest( - AbstractApiClient.appendBaseUrl(BASE_URL, ApiActions.ENHANCE_FACE.url()), + UrlUtils.appendBaseUrl(BASE_URL, ApiActions.ENHANCE_FACE.url()), API_KEY, VALID_FACE_ENHANCE_REQUEST, TIMEOUT)) @@ -804,7 +804,7 @@ public void shouldReturnFaceEnhancementResponseWhenEnhanceFaceIsCalledWithValidR public void shouldReturnErrorMonoWhenEnhanceFaceIsCalledWithInvalidRequest() { // Given when(apiHttpClient.sendPostRequest( - AbstractApiClient.appendBaseUrl(BASE_URL, ApiActions.ENHANCE_FACE.url()), + UrlUtils.appendBaseUrl(BASE_URL, ApiActions.ENHANCE_FACE.url()), API_KEY, INVALID_FACE_ENHANCE_REQUEST, TIMEOUT)) @@ -832,7 +832,7 @@ public void shouldReturnErrorMonoWhenEnhanceFaceIsCalledWithInvalidRequest() { public void shouldReturnErrorMonoWhenEnhanceFaceIsCalledAndDownstreamServiceIsUnavailable() { // Given when(apiHttpClient.sendPostRequest( - AbstractApiClient.appendBaseUrl(BASE_URL, ApiActions.ENHANCE_FACE.url()), + UrlUtils.appendBaseUrl(BASE_URL, ApiActions.ENHANCE_FACE.url()), API_KEY, VALID_FACE_ENHANCE_REQUEST, TIMEOUT)) @@ -882,7 +882,7 @@ public void shouldReturnEffectsPreviewsResponseWhenEffectsPreviewsIsCalledWithVa var httpClientResponse200 = mock(HttpClientResponse.class); when(httpClientResponse200.status()).thenReturn(new HttpResponseStatus(200, "OK")); when(apiHttpClient.sendPostRequest( - AbstractApiClient.appendBaseUrl(BASE_URL, ApiActions.EFFECTS_PREVIEWS.url()), + UrlUtils.appendBaseUrl(BASE_URL, ApiActions.EFFECTS_PREVIEWS.url()), API_KEY, VALID_EFFECTS_PREVIEWS_REQUEST, TIMEOUT)) @@ -906,7 +906,7 @@ public void shouldReturnEffectsPreviewsResponseWhenEffectsPreviewsIsCalledWithVa public void shouldReturnErrorMonoWhenEffectsPreviewsIsCalledWithInvalidRequest() { // Given when(apiHttpClient.sendPostRequest( - AbstractApiClient.appendBaseUrl(BASE_URL, ApiActions.EFFECTS_PREVIEWS.url()), + UrlUtils.appendBaseUrl(BASE_URL, ApiActions.EFFECTS_PREVIEWS.url()), API_KEY, INVALID_EFFECTS_PREVIEWS_REQUEST, TIMEOUT)) @@ -935,7 +935,7 @@ public void shouldReturnErrorMonoWhenEffectsPreviewsIsCalledWithInvalidRequest() public void shouldReturnErrorMonoWhenEffectsPreviewsIsCalledAndDownstreamServiceIsUnavailable() { // Given when(apiHttpClient.sendPostRequest( - AbstractApiClient.appendBaseUrl(BASE_URL, ApiActions.EFFECTS_PREVIEWS.url()), + UrlUtils.appendBaseUrl(BASE_URL, ApiActions.EFFECTS_PREVIEWS.url()), API_KEY, VALID_EFFECTS_PREVIEWS_REQUEST, TIMEOUT)) @@ -971,7 +971,7 @@ public void shouldReturnAdjustResponseWhenAdjustIsCalledWithValidRequest() { var httpClientResponse200 = mock(HttpClientResponse.class); when(httpClientResponse200.status()).thenReturn(new HttpResponseStatus(200, "OK")); when(apiHttpClient.sendPostRequest( - AbstractApiClient.appendBaseUrl(BASE_URL, ApiActions.ADJUST.url()), + UrlUtils.appendBaseUrl(BASE_URL, ApiActions.ADJUST.url()), API_KEY, VALID_ADJUST_REQUEST, TIMEOUT)) @@ -995,7 +995,7 @@ public void shouldReturnAdjustResponseWhenAdjustIsCalledWithValidRequest() { public void shouldReturnErrorMonoWhenAdjustIsCalledWithInvalidRequest() { // Given when(apiHttpClient.sendPostRequest( - AbstractApiClient.appendBaseUrl(BASE_URL, ApiActions.ADJUST.url()), + UrlUtils.appendBaseUrl(BASE_URL, ApiActions.ADJUST.url()), API_KEY, INVALID_ADJUST_REQUEST, TIMEOUT)) @@ -1034,7 +1034,7 @@ public void shouldReturnErrorMonoWhenAdjustIsCalledWithInvalidRequest() { public void shouldReturnErrorMonoWhenAdjustIsCalledAndDownstreamServiceIsUnavailable() { // Given when(apiHttpClient.sendPostRequest( - AbstractApiClient.appendBaseUrl(BASE_URL, ApiActions.ADJUST.url()), + UrlUtils.appendBaseUrl(BASE_URL, ApiActions.ADJUST.url()), API_KEY, VALID_ADJUST_REQUEST, TIMEOUT)) @@ -1071,7 +1071,7 @@ public void shouldReturnTextureGeneratorResponseWhenBackgroundTextureIsCalledWit var httpClientResponse200 = mock(HttpClientResponse.class); when(httpClientResponse200.status()).thenReturn(new HttpResponseStatus(200, "OK")); when(apiHttpClient.sendPostRequest( - AbstractApiClient.appendBaseUrl(BASE_URL, ApiActions.BACKGROUND_TEXTURE.url()), + UrlUtils.appendBaseUrl(BASE_URL, ApiActions.BACKGROUND_TEXTURE.url()), API_KEY, VALID_TEXTURE_GENERATOR_REQUEST, TIMEOUT)) @@ -1095,7 +1095,7 @@ public void shouldReturnTextureGeneratorResponseWhenBackgroundTextureIsCalledWit public void shouldReturnErrorMonoWhenBackgroundTextureIsCalledWithInvalidRequest() { // Given when(apiHttpClient.sendPostRequest( - AbstractApiClient.appendBaseUrl(BASE_URL, ApiActions.BACKGROUND_TEXTURE.url()), + UrlUtils.appendBaseUrl(BASE_URL, ApiActions.BACKGROUND_TEXTURE.url()), API_KEY, INVALID_TEXTURE_GENERATOR_REQUEST, TIMEOUT)) @@ -1129,7 +1129,7 @@ public void shouldReturnErrorMonoWhenBackgroundTextureIsCalledWithInvalidRequest shouldReturnErrorMonoWhenBackgroundTextureIsCalledAndDownstreamServiceIsUnavailable() { // Given when(apiHttpClient.sendPostRequest( - AbstractApiClient.appendBaseUrl(BASE_URL, ApiActions.BACKGROUND_TEXTURE.url()), + UrlUtils.appendBaseUrl(BASE_URL, ApiActions.BACKGROUND_TEXTURE.url()), API_KEY, VALID_TEXTURE_GENERATOR_REQUEST, TIMEOUT)) @@ -1165,7 +1165,7 @@ public void shouldReturnSurfaceMapResponseWhenSurfaceMapIsCalledWithValidRequest var httpClientResponse200 = mock(HttpClientResponse.class); when(httpClientResponse200.status()).thenReturn(new HttpResponseStatus(200, "OK")); when(apiHttpClient.sendPostRequest( - AbstractApiClient.appendBaseUrl(BASE_URL, ApiActions.SURFACE_MAP.url()), + UrlUtils.appendBaseUrl(BASE_URL, ApiActions.SURFACE_MAP.url()), API_KEY, VALID_SURFACE_MAP_REQUEST, TIMEOUT)) @@ -1189,7 +1189,7 @@ public void shouldReturnSurfaceMapResponseWhenSurfaceMapIsCalledWithValidRequest public void shouldReturnErrorMonoWhenSurfaceMapIsCalledWithInvalidRequest() { // Given when(apiHttpClient.sendPostRequest( - AbstractApiClient.appendBaseUrl(BASE_URL, ApiActions.SURFACE_MAP.url()), + UrlUtils.appendBaseUrl(BASE_URL, ApiActions.SURFACE_MAP.url()), API_KEY, INVALID_SURFACE_MAP_REQUEST, TIMEOUT)) @@ -1219,7 +1219,7 @@ public void shouldReturnErrorMonoWhenSurfaceMapIsCalledWithInvalidRequest() { public void shouldReturnErrorMonoWhenSurfaceMapIsCalledAndDownstreamServiceIsUnavailable() { // Given when(apiHttpClient.sendPostRequest( - AbstractApiClient.appendBaseUrl(BASE_URL, ApiActions.SURFACE_MAP.url()), + UrlUtils.appendBaseUrl(BASE_URL, ApiActions.SURFACE_MAP.url()), API_KEY, VALID_SURFACE_MAP_REQUEST, TIMEOUT)) @@ -1255,7 +1255,7 @@ public void shouldReturnUploadResponseWhenUploadIsCalledWithValidRequest() { var httpClientResponse200 = mock(HttpClientResponse.class); when(httpClientResponse200.status()).thenReturn(new HttpResponseStatus(200, "OK")); when(apiHttpClient.sendPostRequest( - AbstractApiClient.appendBaseUrl(BASE_URL, ApiActions.UPLOAD.url()), + UrlUtils.appendBaseUrl(BASE_URL, ApiActions.UPLOAD.url()), API_KEY, VALID_UPLOAD_REQUEST, TIMEOUT)) @@ -1279,7 +1279,7 @@ public void shouldReturnUploadResponseWhenUploadIsCalledWithValidRequest() { public void shouldReturnErrorMonoWhenUploadIsCalledWithInvalidRequest() { // Given when(apiHttpClient.sendPostRequest( - AbstractApiClient.appendBaseUrl(BASE_URL, ApiActions.UPLOAD.url()), + UrlUtils.appendBaseUrl(BASE_URL, ApiActions.UPLOAD.url()), API_KEY, INVALID_UPLOAD_REQUEST, TIMEOUT)) @@ -1307,7 +1307,7 @@ public void shouldReturnErrorMonoWhenUploadIsCalledWithInvalidRequest() { public void shouldReturnErrorMonoWhenUploadIsCalledAndDownstreamServiceIsUnavailable() { // Given when(apiHttpClient.sendPostRequest( - AbstractApiClient.appendBaseUrl(BASE_URL, ApiActions.UPLOAD.url()), + UrlUtils.appendBaseUrl(BASE_URL, ApiActions.UPLOAD.url()), API_KEY, VALID_UPLOAD_REQUEST, TIMEOUT)) @@ -1340,7 +1340,7 @@ void shouldReturnBalanceResponseWhenBalanceIsCalled() { var httpClientResponse200 = mock(HttpClientResponse.class); when(httpClientResponse200.status()).thenReturn(new HttpResponseStatus(200, "OK")); when(apiHttpClient.sendGetRequest( - AbstractApiClient.appendBaseUrl(BASE_URL, ApiActions.BALANCE.url()), API_KEY, TIMEOUT)) + UrlUtils.appendBaseUrl(BASE_URL, ApiActions.BALANCE.url()), API_KEY, TIMEOUT)) .thenReturn( Mono.just(HttpResponseWithStringBody.of(httpClientResponse200, validResponseBody))); @@ -1362,7 +1362,7 @@ void shouldReturnBalanceResponseWhenBalanceIsCalled() { void shouldReturnErrorMonoWhenBalanceIsCalledAndDownstreamServiceIsUnavailable() { // Given when(apiHttpClient.sendGetRequest( - AbstractApiClient.appendBaseUrl(BASE_URL, ApiActions.BALANCE.url()), API_KEY, TIMEOUT)) + UrlUtils.appendBaseUrl(BASE_URL, ApiActions.BALANCE.url()), API_KEY, TIMEOUT)) .thenReturn(Mono.error(new ServiceUnavailableException("Service Unavailable", METADATA))); // When