All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.infobip.auth.OAuthOkHttpClient Maven / Gradle / Ivy

There is a newer version: 5.1.0
Show newest version
package com.infobip.auth;

import java.io.IOException;
import java.util.Map;
import java.util.Map.Entry;
import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
import org.apache.oltu.oauth2.client.HttpClient;
import org.apache.oltu.oauth2.client.request.OAuthClientRequest;
import org.apache.oltu.oauth2.client.response.OAuthClientResponse;
import org.apache.oltu.oauth2.client.response.OAuthClientResponseFactory;
import org.apache.oltu.oauth2.common.exception.OAuthProblemException;
import org.apache.oltu.oauth2.common.exception.OAuthSystemException;

public class OAuthOkHttpClient implements HttpClient {
  private OkHttpClient client;

  public OAuthOkHttpClient() {
    this.client = new OkHttpClient();
  }

  public OAuthOkHttpClient(OkHttpClient client) {
    this.client = client;
  }

  @Override
  public  T execute(
      OAuthClientRequest request,
      Map headers,
      String requestMethod,
      Class responseClass)
      throws OAuthSystemException, OAuthProblemException {

    MediaType mediaType = MediaType.parse("application/json");
    Request.Builder requestBuilder = new Request.Builder().url(request.getLocationUri());

    if (headers != null) {
      for (Entry entry : headers.entrySet()) {
        if (entry.getKey().equalsIgnoreCase("Content-Type")) {
          mediaType = MediaType.parse(entry.getValue());
        } else {
          requestBuilder.addHeader(entry.getKey(), entry.getValue());
        }
      }
    }

    RequestBody body =
        request.getBody() != null ? RequestBody.create(mediaType, request.getBody()) : null;
    requestBuilder.method(requestMethod, body);

    try {
      Response response = client.newCall(requestBuilder.build()).execute();
      return OAuthClientResponseFactory.createCustomResponse(
          response.body().string(),
          response.body().contentType().toString(),
          response.code(),
          responseClass);
    } catch (IOException e) {
      throw new OAuthSystemException(e);
    }
  }

  @Override
  public void shutdown() {
    // Nothing to do here
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy