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

software.tnb.google.api.common.service.GoogleAPIService Maven / Gradle / Ivy

The newest version!
package software.tnb.google.api.common.service;

import software.tnb.common.service.Service;
import software.tnb.common.utils.FIPSUtils;
import software.tnb.common.utils.HTTPUtils;
import software.tnb.common.validation.Validation;
import software.tnb.google.api.common.account.GoogleAPIAccount;

import org.junit.jupiter.api.extension.ExtensionContext;

import org.apache.commons.io.IOUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport;
import com.google.api.client.http.javanet.NetHttpTransport;
import com.google.api.client.json.GenericJson;
import com.google.api.client.json.JsonFactory;
import com.google.api.client.json.gson.GsonFactory;
import com.google.auth.http.HttpCredentialsAdapter;
import com.google.auth.oauth2.UserCredentials;

import java.io.IOException;

public abstract class GoogleAPIService extends Service {
    protected static final Logger LOG = LoggerFactory.getLogger(GoogleAPIService.class);
    protected static final JsonFactory JSON_FACTORY = GsonFactory.getDefaultInstance();

    protected final NetHttpTransport httpTransport;

    protected GoogleAPIService() {
        try {
            if (FIPSUtils.isFipsEnabled()) {
                httpTransport = new NetHttpTransport.Builder()
                    .setSslSocketFactory(HTTPUtils.getSslContext().getSocketFactory()).build();
            } else {
                httpTransport = GoogleNetHttpTransport.newTrustedTransport();
            }
        } catch (Exception e) {
            throw new RuntimeException("Can't create http transport", e);
        }
    }

    protected HttpCredentialsAdapter createCredentials() {
        GenericJson json = new GenericJson();
        json.put("type", "authorized_user");
        json.put("refresh_token", account().refreshToken());
        json.put("client_id", account().clientId());
        json.put("client_secret", account().clientSecret());
        json.setFactory(JSON_FACTORY);

        try {
            return new HttpCredentialsAdapter(UserCredentials.fromStream(IOUtils.toInputStream(json.toPrettyString(), "UTF-8")));
        } catch (IOException e) {
            throw new RuntimeException("Unable to create credentials", e);
        }
    }

    @Override
    public void afterAll(ExtensionContext extensionContext) throws Exception {
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy