Search in sources :

Example 1 with HttpResponse

use of com.azure.android.core.http.HttpResponse in project azure-sdk-for-android by Azure.

the class HttpResponseMapperTests method voidBody.

@Test
public void voidBody() throws Throwable {
    Class<VoidMethods> clazz = VoidMethods.class;
    Method headMethod = clazz.getDeclaredMethod("noBody", Callback.class);
    HttpResponseMapper mapper = new HttpResponseMapper(headMethod, extractCallbackType(headMethod), logger);
    MockHttpResponse httpResponse = new MockHttpResponse(HttpMethod.GET, "https://raw.host.com", 200, new HttpHeaders(), new byte[5]);
    Response<Boolean> restResponse = (Response<Boolean>) mapper.map(httpResponse, new JacksonSerder());
    assertNull(restResponse.getValue());
    assertTrue(httpResponse.isClosed());
}
Also used : HttpResponse(com.azure.android.core.http.HttpResponse) PagedResponse(com.azure.android.core.rest.util.paging.PagedResponse) HttpHeaders(com.azure.android.core.http.HttpHeaders) JacksonSerder(com.azure.android.core.serde.jackson.JacksonSerder) Method(java.lang.reflect.Method) HttpMethod(com.azure.android.core.http.HttpMethod) Test(org.junit.jupiter.api.Test) ParameterizedTest(org.junit.jupiter.params.ParameterizedTest)

Example 2 with HttpResponse

use of com.azure.android.core.http.HttpResponse in project azure-sdk-for-android by Azure.

the class HttpResponseMapperTests method deserializePojo.

@Test
public void deserializePojo() throws Throwable {
    Class<DeserializePojoMethods> clazz = DeserializePojoMethods.class;
    Method getPersonMethod = clazz.getDeclaredMethod("getPerson", Callback.class);
    HttpResponseMapper mapper = new HttpResponseMapper(getPersonMethod, extractCallbackType(getPersonMethod), logger);
    Person person = new Person("John Doe", 40, OffsetDateTime.parse("1980-01-01T10:00:00Z"));
    JacksonSerder jacksonSerder = new JacksonSerder();
    String wirePerson = jacksonSerder.serialize(person, SerdeEncoding.JSON);
    MockHttpResponse httpResponse = new MockHttpResponse(HttpMethod.GET, "https://raw.host.com", 200, new HttpHeaders(), wirePerson.getBytes());
    Response<Person> restStreamResponse = (Response<Person>) mapper.map(httpResponse, jacksonSerder);
    Person receivedPerson = restStreamResponse.getValue();
    assertEquals(person.getName(), receivedPerson.getName());
    assertEquals(person.getAge(), receivedPerson.getAge());
    assertEquals(person.getDob(), receivedPerson.getDob());
}
Also used : HttpResponse(com.azure.android.core.http.HttpResponse) PagedResponse(com.azure.android.core.rest.util.paging.PagedResponse) HttpHeaders(com.azure.android.core.http.HttpHeaders) JacksonSerder(com.azure.android.core.serde.jackson.JacksonSerder) Method(java.lang.reflect.Method) HttpMethod(com.azure.android.core.http.HttpMethod) Test(org.junit.jupiter.api.Test) ParameterizedTest(org.junit.jupiter.params.ParameterizedTest)

Example 3 with HttpResponse

use of com.azure.android.core.http.HttpResponse in project azure-sdk-for-android by Azure.

the class HttpResponseMapperTests method head.

@Test
public void head() throws Throwable {
    Class<HeadMethods> clazz = HeadMethods.class;
    Method headMethod = clazz.getDeclaredMethod("resourceExists", Callback.class);
    HttpResponseMapper mapper = new HttpResponseMapper(headMethod, extractCallbackType(headMethod), logger);
    MockHttpResponse httpResponse = new MockHttpResponse(HttpMethod.HEAD, "https://raw.host.com", 200, new HttpHeaders(), new byte[0]);
    Response<Boolean> restResponse = (Response<Boolean>) mapper.map(httpResponse, new JacksonSerder());
    assertTrue(restResponse.getValue());
    assertTrue(httpResponse.isClosed());
    httpResponse = new MockHttpResponse(HttpMethod.HEAD, "https://raw.host.com", 401, new HttpHeaders(), new byte[0]);
    restResponse = (Response<Boolean>) mapper.map(httpResponse, new JacksonSerder());
    assertFalse(restResponse.getValue());
    assertTrue(httpResponse.isClosed());
}
Also used : HttpResponse(com.azure.android.core.http.HttpResponse) PagedResponse(com.azure.android.core.rest.util.paging.PagedResponse) HttpHeaders(com.azure.android.core.http.HttpHeaders) JacksonSerder(com.azure.android.core.serde.jackson.JacksonSerder) Method(java.lang.reflect.Method) HttpMethod(com.azure.android.core.http.HttpMethod) Test(org.junit.jupiter.api.Test) ParameterizedTest(org.junit.jupiter.params.ParameterizedTest)

Example 4 with HttpResponse

use of com.azure.android.core.http.HttpResponse in project azure-sdk-for-android by Azure.

the class HttpClientTests method sendRequest.

private String sendRequest(String requestPath, String method) {
    CountDownLatch latch = new CountDownLatch(1);
    final String[] content = new String[1];
    final Throwable[] throwable = new Throwable[1];
    content[0] = null;
    throwable[0] = null;
    createHttpClient().send(new HttpRequest(HttpMethod.GET, REQUEST_HOST + ":" + getWireMockPort() + "/" + requestPath), CancellationToken.NONE, new HttpCallback() {

        @Override
        public void onSuccess(HttpResponse response) {
            try {
                content[0] = response.getBodyAsString();
            } finally {
                latch.countDown();
            }
        }

        @Override
        public void onError(Throwable error) {
            try {
                throwable[0] = error;
            } finally {
                latch.countDown();
            }
        }
    });
    awaitOnLatch(latch, "method");
    if (throwable[0] != null) {
        throw new RuntimeException(throwable[0]);
    } else {
        return content[0];
    }
}
Also used : HttpRequest(com.azure.android.core.http.HttpRequest) HttpCallback(com.azure.android.core.http.HttpCallback) HttpResponse(com.azure.android.core.http.HttpResponse) CountDownLatch(java.util.concurrent.CountDownLatch)

Example 5 with HttpResponse

use of com.azure.android.core.http.HttpResponse in project azure-sdk-for-android by Azure.

the class MockHttpClient method send.

@Override
public void send(HttpRequest request, CancellationToken cancellationToken, HttpCallback httpCallback) {
    HttpResponse response = null;
    try {
        final URL requestUrl = request.getUrl();
        final String requestHost = requestUrl.getHost();
        final String contentType = request.getHeaders().getValue("Content-Type");
        if ("localhost".equalsIgnoreCase(requestHost)) {
            final String requestPath = requestUrl.getPath();
            final String requestPathLower = requestPath.toLowerCase();
            if (requestPathLower.startsWith("/anything")) {
                if ("HEAD".equals(request.getHttpMethod().name())) {
                    response = new MockHttpResponse(request, 200, new byte[0]);
                } else {
                    final HttpBinJSON json = new HttpBinJSON();
                    json.url(cleanseUrl(requestUrl));
                    json.headers(toMap(request.getHeaders()));
                    response = new MockHttpResponse(request, 200, json);
                }
            } else if (requestPathLower.startsWith("/bytes/")) {
                final String byteCountString = requestPath.substring("/bytes/".length());
                final int byteCount = Integer.parseInt(byteCountString);
                HttpHeaders newHeaders = new HttpHeaders(RESPONSE_HEADERS).put("Content-Type", "application/octet-stream").put("Content-Length", Integer.toString(byteCount));
                response = new MockHttpResponse(request, 200, newHeaders, byteCount == 0 ? null : new byte[byteCount]);
            } else if (requestPathLower.startsWith("/base64urlbytes/")) {
                final String byteCountString = requestPath.substring("/base64urlbytes/".length());
                final int byteCount = Integer.parseInt(byteCountString);
                final byte[] bytes = new byte[byteCount];
                for (int i = 0; i < byteCount; ++i) {
                    bytes[i] = (byte) i;
                }
                final Base64Url base64EncodedBytes = bytes.length == 0 ? null : Base64Url.encode(bytes);
                response = new MockHttpResponse(request, 200, RESPONSE_HEADERS, base64EncodedBytes);
            } else if (requestPathLower.equals("/base64urllistofbytes")) {
                final List<String> base64EncodedBytesList = new ArrayList<>();
                for (int i = 0; i < 3; ++i) {
                    final int byteCount = (i + 1) * 10;
                    final byte[] bytes = new byte[byteCount];
                    for (int j = 0; j < byteCount; ++j) {
                        bytes[j] = (byte) j;
                    }
                    base64EncodedBytesList.add(Base64Url.encode(bytes).toString());
                }
                response = new MockHttpResponse(request, 200, RESPONSE_HEADERS, base64EncodedBytesList);
            } else if (requestPathLower.equals("/base64urllistoflistofbytes")) {
                final List<List<String>> result = new ArrayList<>();
                for (int i = 0; i < 2; ++i) {
                    final List<String> innerList = new ArrayList<>();
                    for (int j = 0; j < (i + 1) * 2; ++j) {
                        final int byteCount = (j + 1) * 5;
                        final byte[] bytes = new byte[byteCount];
                        for (int k = 0; k < byteCount; ++k) {
                            bytes[k] = (byte) k;
                        }
                        innerList.add(Base64Url.encode(bytes).toString());
                    }
                    result.add(innerList);
                }
                response = new MockHttpResponse(request, 200, RESPONSE_HEADERS, result);
            } else if (requestPathLower.equals("/base64urlmapofbytes")) {
                final Map<String, String> result = new HashMap<>();
                for (int i = 0; i < 2; ++i) {
                    final String key = Integer.toString(i);
                    final int byteCount = (i + 1) * 10;
                    final byte[] bytes = new byte[byteCount];
                    for (int j = 0; j < byteCount; ++j) {
                        bytes[j] = (byte) j;
                    }
                    result.put(key, Base64Url.encode(bytes).toString());
                }
                response = new MockHttpResponse(request, 200, RESPONSE_HEADERS, result);
            } else if (requestPathLower.equals("/datetimerfc1123")) {
                final DateTimeRfc1123 now = new DateTimeRfc1123(OffsetDateTime.ofInstant(Instant.ofEpochSecond(0), ZoneOffset.UTC));
                response = new MockHttpResponse(request, 200, RESPONSE_HEADERS, now.toString());
            } else if (requestPathLower.equals("/unixtime")) {
                response = new MockHttpResponse(request, 200, RESPONSE_HEADERS, 0);
            } else if (requestPathLower.equals("/delete")) {
                final HttpBinJSON json = new HttpBinJSON();
                json.url(cleanseUrl(requestUrl));
                json.data(createHttpBinResponseDataForRequest(request));
                response = new MockHttpResponse(request, 200, json);
            } else if (requestPathLower.equals("/get")) {
                final HttpBinJSON json = new HttpBinJSON();
                json.url(cleanseUrl(requestUrl));
                json.headers(toMap(request.getHeaders()));
                response = new MockHttpResponse(request, 200, json);
            } else if (requestPathLower.equals("/patch")) {
                final HttpBinJSON json = new HttpBinJSON();
                json.url(cleanseUrl(requestUrl));
                json.data(createHttpBinResponseDataForRequest(request));
                response = new MockHttpResponse(request, 200, json);
            } else if (requestPathLower.equals("/post")) {
                if (contentType != null && contentType.contains("x-www-form-urlencoded")) {
                    Map<String, String> parsed = bodyToMap(request);
                    final HttpBinFormDataJSON json = new HttpBinFormDataJSON();
                    HttpBinFormDataJSON.Form form = new HttpBinFormDataJSON.Form();
                    form.customerName(parsed.get("custname"));
                    form.customerEmail(parsed.get("custemail"));
                    form.customerTelephone(parsed.get("custtel"));
                    form.pizzaSize(HttpBinFormDataJSON.PizzaSize.valueOf(parsed.get("size")));
                    form.toppings(Arrays.asList(parsed.get("toppings").split(",")));
                    json.form(form);
                    response = new MockHttpResponse(request, 200, RESPONSE_HEADERS, json);
                } else {
                    final HttpBinJSON json = new HttpBinJSON();
                    json.url(cleanseUrl(requestUrl));
                    json.data(createHttpBinResponseDataForRequest(request));
                    json.headers(toMap(request.getHeaders()));
                    response = new MockHttpResponse(request, 200, json);
                }
            } else if (requestPathLower.equals("/put")) {
                final HttpBinJSON json = new HttpBinJSON();
                json.url(cleanseUrl(requestUrl));
                json.data(createHttpBinResponseDataForRequest(request));
                json.headers(toMap(request.getHeaders()));
                response = new MockHttpResponse(request, 200, RESPONSE_HEADERS, json);
            } else if (requestPathLower.startsWith("/status/")) {
                final String statusCodeString = requestPathLower.substring("/status/".length());
                final int statusCode = Integer.parseInt(statusCodeString);
                response = new MockHttpResponse(request, statusCode);
            }
        } else if ("echo.org".equalsIgnoreCase(requestHost)) {
            response = new MockHttpResponse(request, 200, new HttpHeaders(request.getHeaders()), request.getBody());
        }
    } catch (Exception ex) {
        throw new RuntimeException(ex);
    }
    if (response == null) {
        response = new MockHttpResponse(request, 500);
    }
    httpCallback.onSuccess(response);
}
Also used : HttpHeaders(com.azure.android.core.http.HttpHeaders) HttpBinFormDataJSON(com.azure.android.core.test.implementation.entities.HttpBinFormDataJSON) ArrayList(java.util.ArrayList) HttpResponse(com.azure.android.core.http.HttpResponse) URL(java.net.URL) Base64Url(com.azure.android.core.util.Base64Url) DateTimeRfc1123(com.azure.android.core.util.DateTimeRfc1123) ArrayList(java.util.ArrayList) List(java.util.List) HashMap(java.util.HashMap) Map(java.util.Map) HttpBinJSON(com.azure.android.core.test.implementation.entities.HttpBinJSON)

Aggregations

HttpResponse (com.azure.android.core.http.HttpResponse)32 HttpCallback (com.azure.android.core.http.HttpCallback)21 CountDownLatch (java.util.concurrent.CountDownLatch)21 HttpRequest (com.azure.android.core.http.HttpRequest)20 HttpPipeline (com.azure.android.core.http.HttpPipeline)18 Test (org.junit.jupiter.api.Test)18 HttpPipelineBuilder (com.azure.android.core.http.HttpPipelineBuilder)14 CancellationToken (com.azure.android.core.util.CancellationToken)13 HttpHeaders (com.azure.android.core.http.HttpHeaders)10 ParameterizedTest (org.junit.jupiter.params.ParameterizedTest)6 IOException (java.io.IOException)5 NextPolicyCallback (com.azure.android.core.http.NextPolicyCallback)4 PolicyCompleter (com.azure.android.core.http.PolicyCompleter)4 HashMap (java.util.HashMap)4 Map (java.util.Map)4 HttpHeader (com.azure.android.core.http.HttpHeader)3 HttpMethod (com.azure.android.core.http.HttpMethod)3 PagedResponse (com.azure.android.core.rest.util.paging.PagedResponse)3 JacksonSerder (com.azure.android.core.serde.jackson.JacksonSerder)3 ByteArrayInputStream (java.io.ByteArrayInputStream)3