Package io.fathom.cloud.image.imports

Source Code of io.fathom.cloud.image.imports.ImportImageClient

package io.fathom.cloud.image.imports;

import io.fathom.cloud.blobs.TempFile;
import io.fathom.cloud.openstack.client.RestClientException;
import io.fathom.cloud.openstack.client.SimpleRestClient;
import io.fathom.http.HttpClient;
import io.fathom.http.HttpMethod;
import io.fathom.http.HttpRequest;
import io.fathom.http.HttpResponse;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URI;

import com.google.common.io.ByteStreams;

public class ImportImageClient extends SimpleRestClient {
    public ImportImageClient(HttpClient httpClient, URI baseUri) {
        super(httpClient, baseUri);
    }

    public ImageImportMetadata getMetadata(URI uri) throws RestClientException {
        HttpRequest request = getHttpClient().buildRequest(HttpMethod.GET, uri);
        addHeaders(request);

        ImageImportMetadata metadata = doRequest(request, ImageImportMetadata.class);
        return metadata;
    }

    public TempFile downloadImage(URI metadataUri, ImageImportMetadata metadata) throws IOException,
            RestClientException {
        URI uri = metadataUri.resolve(metadata.image);

        HttpRequest request = getHttpClient().buildRequest(HttpMethod.GET, uri);
        addHeaders(request);

        HttpResponse response = executeRawRequest(request);

        try {
            try (InputStream is = response.getInputStream()) {
                if (is == null) {
                    return null;
                }

                TempFile tempFile = TempFile.create();
                try {
                    try (FileOutputStream os = new FileOutputStream(tempFile.getFile())) {
                        ByteStreams.copy(is, os);
                    }

                    TempFile ret = tempFile;
                    tempFile = null;
                    return ret;
                } finally {
                    if (tempFile != null) {
                        tempFile.close();
                    }
                }
            }
        } finally {
            closeQuietly(response);
        }
    }
}
TOP

Related Classes of io.fathom.cloud.image.imports.ImportImageClient

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.