Search in sources :

Example 6 with GenericData

use of com.google.api.client.util.GenericData in project google-auth-library-java by google.

the class ServiceAccountCredentials method refreshAccessToken.

/**
 * Refreshes the OAuth2 access token by getting a new access token using a JSON Web Token (JWT).
 */
@Override
public AccessToken refreshAccessToken() throws IOException {
    if (createScopedRequired()) {
        throw new IOException("Scopes not configured for service account. Scoped should be specified" + " by calling createScoped or passing scopes to constructor.");
    }
    JsonFactory jsonFactory = OAuth2Utils.JSON_FACTORY;
    long currentTime = clock.currentTimeMillis();
    String assertion = createAssertion(jsonFactory, currentTime);
    GenericData tokenRequest = new GenericData();
    tokenRequest.set("grant_type", GRANT_TYPE);
    tokenRequest.set("assertion", assertion);
    UrlEncodedContent content = new UrlEncodedContent(tokenRequest);
    HttpRequestFactory requestFactory = transportFactory.create().createRequestFactory();
    HttpRequest request = requestFactory.buildPostRequest(new GenericUrl(tokenServerUri), content);
    request.setParser(new JsonObjectParser(jsonFactory));
    request.setIOExceptionHandler(new HttpBackOffIOExceptionHandler(new ExponentialBackOff()));
    request.setUnsuccessfulResponseHandler(new HttpBackOffUnsuccessfulResponseHandler(new ExponentialBackOff()).setBackOffRequired(new BackOffRequired() {

        public boolean isRequired(HttpResponse response) {
            int code = response.getStatusCode();
            return (// Server error --- includes timeout errors, which use 500 instead of 408
            code / 100 == 5 || // https://github.com/google/google-api-java-client/issues/662
            code == 403);
        }
    }));
    HttpResponse response;
    try {
        response = request.execute();
    } catch (IOException e) {
        throw new IOException("Error getting access token for service account: ", e);
    }
    GenericData responseData = response.parseAs(GenericData.class);
    String accessToken = OAuth2Utils.validateString(responseData, "access_token", PARSE_ERROR_PREFIX);
    int expiresInSeconds = OAuth2Utils.validateInt32(responseData, "expires_in", PARSE_ERROR_PREFIX);
    long expiresAtMilliseconds = clock.currentTimeMillis() + expiresInSeconds * 1000L;
    return new AccessToken(accessToken, new Date(expiresAtMilliseconds));
}
Also used : HttpRequest(com.google.api.client.http.HttpRequest) HttpBackOffIOExceptionHandler(com.google.api.client.http.HttpBackOffIOExceptionHandler) HttpBackOffUnsuccessfulResponseHandler(com.google.api.client.http.HttpBackOffUnsuccessfulResponseHandler) HttpRequestFactory(com.google.api.client.http.HttpRequestFactory) JsonFactory(com.google.api.client.json.JsonFactory) UrlEncodedContent(com.google.api.client.http.UrlEncodedContent) HttpResponse(com.google.api.client.http.HttpResponse) IOException(java.io.IOException) GenericUrl(com.google.api.client.http.GenericUrl) BackOffRequired(com.google.api.client.http.HttpBackOffUnsuccessfulResponseHandler.BackOffRequired) GenericData(com.google.api.client.util.GenericData) ExponentialBackOff(com.google.api.client.util.ExponentialBackOff) Date(java.sql.Date) JsonObjectParser(com.google.api.client.json.JsonObjectParser)

Example 7 with GenericData

use of com.google.api.client.util.GenericData in project google-auth-library-java by google.

the class UserCredentials method refreshAccessToken.

/**
 * Refreshes the OAuth2 access token by getting a new access token from the refresh token
 */
@Override
public AccessToken refreshAccessToken() throws IOException {
    if (refreshToken == null) {
        throw new IllegalStateException("UserCredentials instance cannot refresh because there is no" + " refresh token.");
    }
    GenericData tokenRequest = new GenericData();
    tokenRequest.set("client_id", clientId);
    tokenRequest.set("client_secret", clientSecret);
    tokenRequest.set("refresh_token", refreshToken);
    tokenRequest.set("grant_type", GRANT_TYPE);
    UrlEncodedContent content = new UrlEncodedContent(tokenRequest);
    HttpRequestFactory requestFactory = transportFactory.create().createRequestFactory();
    HttpRequest request = requestFactory.buildPostRequest(new GenericUrl(tokenServerUri), content);
    request.setParser(new JsonObjectParser(JSON_FACTORY));
    HttpResponse response = request.execute();
    GenericData responseData = response.parseAs(GenericData.class);
    String accessToken = OAuth2Utils.validateString(responseData, "access_token", PARSE_ERROR_PREFIX);
    int expiresInSeconds = OAuth2Utils.validateInt32(responseData, "expires_in", PARSE_ERROR_PREFIX);
    long expiresAtMilliseconds = clock.currentTimeMillis() + expiresInSeconds * 1000;
    return new AccessToken(accessToken, new Date(expiresAtMilliseconds));
}
Also used : HttpRequest(com.google.api.client.http.HttpRequest) HttpRequestFactory(com.google.api.client.http.HttpRequestFactory) UrlEncodedContent(com.google.api.client.http.UrlEncodedContent) HttpResponse(com.google.api.client.http.HttpResponse) GenericUrl(com.google.api.client.http.GenericUrl) GenericData(com.google.api.client.util.GenericData) Date(java.util.Date) JsonObjectParser(com.google.api.client.json.JsonObjectParser)

Example 8 with GenericData

use of com.google.api.client.util.GenericData in project googleads-java-lib by googleads.

the class ReportServiceLoggerTest method setUp.

/**
 * Sets all instance variables to values for a successful request. Tests that require failed
 * requests or null/empty values should mutate the instance variables accordingly.
 */
@Before
public void setUp() throws Exception {
    MockitoAnnotations.initMocks(this);
    requestMethod = "POST";
    url = "http://www.foo.com/bar";
    reportServiceLogger = new ReportServiceLogger(loggerDelegate);
    requestFactory = new NetHttpTransport().createRequestFactory();
    // Constructs the request headers and adds headers that should be scrubbed
    rawRequestHeaders = ReportServiceLogger.SCRUBBED_HEADERS.stream().collect(Collectors.toMap(h -> h, h -> "foo" + h));
    // Adds headers that should not be scrubbed.
    rawRequestHeaders.put("clientCustomerId", "123-456-7890");
    rawRequestHeaders.put("someOtherHeader", "SomeOtherValue");
    GenericData postData = new GenericData();
    postData.put("__rdquery", "SELECT CampaignId FROM CAMPAIGN_PERFORMANCE_REPORT");
    httpRequest = requestFactory.buildPostRequest(new GenericUrl(url), new UrlEncodedContent(postData));
    for (Entry<String, String> rawHeaderEntry : rawRequestHeaders.entrySet()) {
        String key = rawHeaderEntry.getKey();
        if ("authorization".equalsIgnoreCase(key)) {
            httpRequest.getHeaders().setAuthorization(Collections.<String>singletonList(rawHeaderEntry.getValue()));
        } else {
            httpRequest.getHeaders().put(key, rawHeaderEntry.getValue());
        }
    }
    httpRequest.getResponseHeaders().setContentType("text/csv; charset=UTF-8");
    httpRequest.getResponseHeaders().put("someOtherResponseHeader", "foo");
    httpRequest.getResponseHeaders().put("multiValueHeader", Arrays.<String>asList("value1", "value2"));
}
Also used : NetHttpTransport(com.google.api.client.http.javanet.NetHttpTransport) UrlEncodedContent(com.google.api.client.http.UrlEncodedContent) GenericUrl(com.google.api.client.http.GenericUrl) Matchers.containsString(org.hamcrest.Matchers.containsString) GenericData(com.google.api.client.util.GenericData) Before(org.junit.Before)

Aggregations

GenericData (com.google.api.client.util.GenericData)8 GenericUrl (com.google.api.client.http.GenericUrl)6 HttpRequest (com.google.api.client.http.HttpRequest)5 HttpResponse (com.google.api.client.http.HttpResponse)5 UrlEncodedContent (com.google.api.client.http.UrlEncodedContent)5 JsonObjectParser (com.google.api.client.json.JsonObjectParser)5 HttpRequestFactory (com.google.api.client.http.HttpRequestFactory)4 Date (java.util.Date)3 ClassInfo (com.google.api.client.util.ClassInfo)2 BufferedReader (java.io.BufferedReader)2 IOException (java.io.IOException)2 Field (java.lang.reflect.Field)2 Map (java.util.Map)2 HttpBackOffIOExceptionHandler (com.google.api.client.http.HttpBackOffIOExceptionHandler)1 HttpBackOffUnsuccessfulResponseHandler (com.google.api.client.http.HttpBackOffUnsuccessfulResponseHandler)1 BackOffRequired (com.google.api.client.http.HttpBackOffUnsuccessfulResponseHandler.BackOffRequired)1 NetHttpTransport (com.google.api.client.http.javanet.NetHttpTransport)1 GenericJson (com.google.api.client.json.GenericJson)1 JsonFactory (com.google.api.client.json.JsonFactory)1 ExponentialBackOff (com.google.api.client.util.ExponentialBackOff)1