Example usage for com.squareup.okhttp HttpUrl newBuilder

List of usage examples for com.squareup.okhttp HttpUrl newBuilder

Introduction

In this page you can find the example usage for com.squareup.okhttp HttpUrl newBuilder.

Prototype

public Builder newBuilder() 

Source Link

Usage

From source file:com.google.caliper.runner.resultprocessor.OkHttpUploadHandler.java

License:Apache License

@Override
public boolean upload(URI uri, String content, String mediaType, Optional<UUID> apiKey, Trial trial) {
    HttpUrl url = HttpUrl.get(uri);
    if (apiKey.isPresent()) {
        url = url.newBuilder().addQueryParameter("key", apiKey.get().toString()).build();
    }//from  www  .ja  va  2s .  c o  m

    RequestBody body = RequestBody.create(MediaType.parse(mediaType), content);
    Request request = new Request.Builder().url(url).post(body).build();

    try {
        Response response = client.newCall(request).execute();
        if (response.isSuccessful()) {
            return true;
        } else {
            ResultsUploader.logger.fine("Failed upload response: " + response.code());
        }
    } catch (IOException e) {
        ResultsUploader.logUploadFailure(trial, e);
    }
    return false;
}

From source file:com.quarterfull.newsAndroid.reader.HttpJsonRequest.java

License:Open Source License

public int performCreateFeedRequest(HttpUrl url, String feedUrlString, long folderId) throws Exception {
    HttpUrl feedUrl = url.newBuilder().setQueryParameter("url", feedUrlString)
            .setQueryParameter("folderId", String.valueOf(folderId)).build();

    Request request = new Request.Builder().url(feedUrl).post(RequestBody.create(JSON, "")).build();

    Response response = client.newCall(request).execute();

    return response.code();
}

From source file:com.quarterfull.newsAndroid.reader.HttpJsonRequest.java

License:Open Source License

public int performRemoveFeedRequest(HttpUrl url, long feedId) throws Exception {
    HttpUrl feedUrl = url.newBuilder().addPathSegment(String.valueOf(feedId)).build();

    Request request = new Request.Builder().url(feedUrl).delete().build();

    Response response = client.newCall(request).execute();

    return response.code();
}

From source file:com.quarterfull.newsAndroid.reader.HttpJsonRequest.java

License:Open Source License

public int performRenameFeedRequest(HttpUrl url, long feedId, String newFeedName) throws Exception {
    HttpUrl feedUrl = url.newBuilder().addPathSegment(String.valueOf(feedId)).addPathSegment("rename").build();

    Request request = new Request.Builder().url(feedUrl)
            .put(RequestBody.create(JSON, new JSONObject().put("feedTitle", newFeedName).toString())).build();

    Response response = client.newCall(request).execute();

    return response.code();
}

From source file:io.minio.MinioClient.java

License:Apache License

/**
 * Creates Minio client object using given endpoint, port, access key, secret key and secure option.
 *
 * </p><b>Example:</b><br>
 * <pre>{@code MinioClient minioClient =
 *          new MinioClient("play.minio.io", 9000, "YOUR-ACCESSKEYID", "YOUR-SECRETACCESSKEY", false);
 * }</pre>/* w w  w.  j  a  va  2s .  c  o m*/
 *
 * @param endpoint  Request endpoint. Endpoint is an URL, domain name, IPv4 or IPv6 address.<pre>
 *              Valid endpoints:
 *              * https://s3.amazonaws.com
 *              * https://s3.amazonaws.com/
 *              * https://play.minio.io:9000
 *              * http://play.minio.io:9010/
 *              * localhost
 *              * localhost.localdomain
 *              * play.minio.io
 *              * 127.0.0.1
 *              * 192.168.1.60
 *              * ::1</pre>
 *
 * @param port      Valid port.  It should be in between 1 and 65535.  Unused if endpoint is an URL.
 * @param accessKey Access key to access service in endpoint.
 * @param secretKey Secret key to access service in endpoint.
 * @param secure    If true, access endpoint using HTTPS else access it using HTTP.
 *
 * @see #MinioClient(String endpoint)
 * @see #MinioClient(URL url)
 * @see #MinioClient(String endpoint, String accessKey, String secretKey)
 * @see #MinioClient(URL url, String accessKey, String secretKey)
 * @see #MinioClient(String endpoint, int port, String accessKey, String secretKey)
 * @see #MinioClient(String endpoint, String accessKey, String secretKey, boolean secure)
 */
public MinioClient(String endpoint, int port, String accessKey, String secretKey, boolean secure)
        throws InvalidEndpointException, InvalidPortException {
    if (endpoint == null) {
        throw new InvalidEndpointException(NULL_STRING, "null endpoint");
    }

    if (port < 0 || port > 65535) {
        throw new InvalidPortException(port, "port must be in range of 1 to 65535");
    }

    HttpUrl url = HttpUrl.parse(endpoint);
    if (url != null) {
        if (!"/".equals(url.encodedPath())) {
            throw new InvalidEndpointException(endpoint, "no path allowed in endpoint");
        }

        // treat Amazon S3 host as special case
        String amzHost = url.host();
        if (amzHost.endsWith(AMAZONAWS_COM) && !amzHost.equals(S3_AMAZONAWS_COM)) {
            throw new InvalidEndpointException(endpoint,
                    "for Amazon S3, host should be 's3.amazonaws.com' in endpoint");
        }

        HttpUrl.Builder urlBuilder = url.newBuilder();
        Scheme scheme = Scheme.HTTP;
        if (secure) {
            scheme = Scheme.HTTPS;
        }

        urlBuilder.scheme(scheme.toString());

        if (port > 0) {
            urlBuilder.port(port);
        }

        this.baseUrl = urlBuilder.build();
        this.accessKey = accessKey;
        this.secretKey = secretKey;

        return;
    }

    // endpoint may be a valid hostname, IPv4 or IPv6 address
    if (!this.isValidEndpoint(endpoint)) {
        throw new InvalidEndpointException(endpoint, "invalid host");
    }

    // treat Amazon S3 host as special case
    if (endpoint.endsWith(AMAZONAWS_COM) && !endpoint.equals(S3_AMAZONAWS_COM)) {
        throw new InvalidEndpointException(endpoint, "for amazon S3, host should be 's3.amazonaws.com'");
    }

    Scheme scheme = Scheme.HTTP;
    if (secure) {
        scheme = Scheme.HTTPS;
    }

    if (port == 0) {
        this.baseUrl = new HttpUrl.Builder().scheme(scheme.toString()).host(endpoint).build();
    } else {
        this.baseUrl = new HttpUrl.Builder().scheme(scheme.toString()).host(endpoint).port(port).build();
    }
    this.accessKey = accessKey;
    this.secretKey = secretKey;
}

From source file:io.minio.MinioClient.java

License:Apache License

/**
 * Creates Request object for given request parameters.
 *
 * @param method         HTTP method.//from ww w. ja  v  a  2 s. co  m
 * @param bucketName     Bucket name.
 * @param objectName     Object name in the bucket.
 * @param region         Amazon S3 region of the bucket.
 * @param headerMap      Map of HTTP headers for the request.
 * @param queryParamMap  Map of HTTP query parameters of the request.
 * @param contentType    Content type of the request body.
 * @param body           HTTP request body.
 * @param length         Length of HTTP request body.
 */
private Request createRequest(Method method, String bucketName, String objectName, String region,
        Map<String, String> headerMap, Map<String, String> queryParamMap, final String contentType,
        final Object body, final int length)
        throws InvalidBucketNameException, NoSuchAlgorithmException, InsufficientDataException, IOException {
    if (bucketName == null && objectName != null) {
        throw new InvalidBucketNameException(NULL_STRING, "null bucket name for object '" + objectName + "'");
    }

    HttpUrl.Builder urlBuilder = this.baseUrl.newBuilder();

    if (bucketName != null) {
        checkBucketName(bucketName);

        String host = this.baseUrl.host();
        if (host.equals(S3_AMAZONAWS_COM)) {
            // special case: handle s3.amazonaws.com separately
            if (region != null) {
                host = AwsS3Endpoints.INSTANCE.endpoint(region);
            }

            boolean usePathStyle = false;
            if (method == Method.PUT && objectName == null && queryParamMap == null) {
                // use path style for make bucket to workaround "AuthorizationHeaderMalformed" error from s3.amazonaws.com
                usePathStyle = true;
            } else if (queryParamMap != null && queryParamMap.containsKey("location")) {
                // use path style for location query
                usePathStyle = true;
            } else if (bucketName.contains(".") && this.baseUrl.isHttps()) {
                // use path style where '.' in bucketName causes SSL certificate validation error
                usePathStyle = true;
            }

            if (usePathStyle) {
                urlBuilder.host(host);
                urlBuilder.addPathSegment(bucketName);
            } else {
                urlBuilder.host(bucketName + "." + host);
            }
        } else {
            urlBuilder.addPathSegment(bucketName);
        }
    }

    if (objectName != null) {
        for (String pathSegment : objectName.split("/")) {
            // Limitation:
            // 1. OkHttp does not allow to add '.' and '..' as path segment.
            // 2. Its not allowed to add path segment as '/', '//', '/usr' or 'usr/'.
            urlBuilder.addPathSegment(pathSegment);
        }
    }

    if (queryParamMap != null) {
        for (Map.Entry<String, String> entry : queryParamMap.entrySet()) {
            urlBuilder.addEncodedQueryParameter(Signer.encodeQueryString(entry.getKey()),
                    Signer.encodeQueryString(entry.getValue()));
        }
    }

    RequestBody requestBody = null;
    if (body != null) {
        requestBody = new RequestBody() {
            @Override
            public MediaType contentType() {
                if (contentType != null) {
                    return MediaType.parse(contentType);
                } else {
                    return MediaType.parse("application/octet-stream");
                }
            }

            @Override
            public long contentLength() {
                if (body instanceof InputStream || body instanceof RandomAccessFile || body instanceof byte[]) {
                    return length;
                }

                if (length == 0) {
                    return -1;
                } else {
                    return length;
                }
            }

            @Override
            public void writeTo(BufferedSink sink) throws IOException {
                byte[] data = null;

                if (body instanceof InputStream) {
                    InputStream stream = (InputStream) body;
                    sink.write(Okio.source(stream), length);
                } else if (body instanceof RandomAccessFile) {
                    RandomAccessFile file = (RandomAccessFile) body;
                    sink.write(Okio.source(Channels.newInputStream(file.getChannel())), length);
                } else if (body instanceof byte[]) {
                    sink.write(data, 0, length);
                } else {
                    sink.writeUtf8(body.toString());
                }
            }
        };
    }

    HttpUrl url = urlBuilder.build();
    // urlBuilder does not encode some characters properly for Amazon S3.
    // Encode such characters properly here.
    List<String> pathSegments = url.encodedPathSegments();
    urlBuilder = url.newBuilder();
    for (int i = 0; i < pathSegments.size(); i++) {
        urlBuilder.setEncodedPathSegment(i,
                pathSegments.get(i).replaceAll("\\!", "%21").replaceAll("\\$", "%24").replaceAll("\\&", "%26")
                        .replaceAll("\\'", "%27").replaceAll("\\(", "%28").replaceAll("\\)", "%29")
                        .replaceAll("\\*", "%2A").replaceAll("\\+", "%2B").replaceAll("\\,", "%2C")
                        .replaceAll("\\:", "%3A").replaceAll("\\;", "%3B").replaceAll("\\=", "%3D")
                        .replaceAll("\\@", "%40").replaceAll("\\[", "%5B").replaceAll("\\]", "%5D"));
    }
    url = urlBuilder.build();

    Request.Builder requestBuilder = new Request.Builder();
    requestBuilder.url(url);
    requestBuilder.method(method.toString(), requestBody);
    if (headerMap != null) {
        for (Map.Entry<String, String> entry : headerMap.entrySet()) {
            requestBuilder.header(entry.getKey(), entry.getValue());
        }
    }

    String sha256Hash = null;
    String md5Hash = null;
    if (this.accessKey != null && this.secretKey != null) {
        // No need to compute sha256 if endpoint scheme is HTTPS. Issue #415.
        if (url.isHttps()) {
            sha256Hash = "UNSIGNED-PAYLOAD";
            if (body instanceof BufferedInputStream) {
                md5Hash = Digest.md5Hash((BufferedInputStream) body, length);
            } else if (body instanceof RandomAccessFile) {
                md5Hash = Digest.md5Hash((RandomAccessFile) body, length);
            } else if (body instanceof byte[]) {
                byte[] data = (byte[]) body;
                md5Hash = Digest.md5Hash(data, length);
            }
        } else {
            if (body == null) {
                sha256Hash = Digest.sha256Hash(new byte[0]);
            } else {
                if (body instanceof BufferedInputStream) {
                    String[] hashes = Digest.sha256md5Hashes((BufferedInputStream) body, length);
                    sha256Hash = hashes[0];
                    md5Hash = hashes[1];
                } else if (body instanceof RandomAccessFile) {
                    String[] hashes = Digest.sha256md5Hashes((RandomAccessFile) body, length);
                    sha256Hash = hashes[0];
                    md5Hash = hashes[1];
                } else if (body instanceof byte[]) {
                    byte[] data = (byte[]) body;
                    sha256Hash = Digest.sha256Hash(data, length);
                    md5Hash = Digest.md5Hash(data, length);
                } else {
                    sha256Hash = Digest.sha256Hash(body.toString());
                }
            }
        }
    }

    if (md5Hash != null) {
        requestBuilder.header("Content-MD5", md5Hash);
    }
    if (url.port() == 80 || url.port() == 443) {
        requestBuilder.header("Host", url.host());
    } else {
        requestBuilder.header("Host", url.host() + ":" + url.port());
    }
    requestBuilder.header("User-Agent", this.userAgent);
    if (sha256Hash != null) {
        requestBuilder.header("x-amz-content-sha256", sha256Hash);
    }
    DateTime date = new DateTime();
    requestBuilder.header("x-amz-date", date.toString(DateFormat.AMZ_DATE_FORMAT));

    return requestBuilder.build();
}

From source file:org.sonar.batch.report.ReportPublisher.java

License:Open Source License

@VisibleForTesting
void logSuccess(@Nullable String taskId) {
    if (taskId == null) {
        LOG.info("ANALYSIS SUCCESSFUL");
    } else {// w w  w  . java  2 s.  com
        String publicUrl = publicUrl();
        HttpUrl httpUrl = HttpUrl.parse(publicUrl);

        Map<String, String> metadata = new LinkedHashMap<>();
        String effectiveKey = projectReactor.getRoot().getKeyWithBranch();
        metadata.put("projectKey", effectiveKey);
        metadata.put("serverUrl", publicUrl);

        URL dashboardUrl = httpUrl.newBuilder().addPathSegment("dashboard").addPathSegment("index")
                .addPathSegment(effectiveKey).build().url();
        metadata.put("dashboardUrl", dashboardUrl.toExternalForm());

        URL taskUrl = HttpUrl.parse(publicUrl).newBuilder().addPathSegment("api").addPathSegment("ce")
                .addPathSegment("task").addQueryParameter("id", taskId).build().url();
        metadata.put("ceTaskId", taskId);
        metadata.put("ceTaskUrl", taskUrl.toExternalForm());

        LOG.info("ANALYSIS SUCCESSFUL, you can browse {}", dashboardUrl);
        LOG.info(
                "Note that you will be able to access the updated dashboard once the server has processed the submitted analysis report");
        LOG.info("More about the report processing at {}", taskUrl);

        dumpMetadata(metadata);
    }
}