Example usage for com.squareup.okhttp HttpUrl port

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

Introduction

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

Prototype

int port

To view the source code for com.squareup.okhttp HttpUrl port.

Click Source Link

Document

Either 80, 443 or a user-specified port.

Usage

From source file:at.bitfire.dav4android.DavResource.java

License:Open Source License

private void parseMultiStatus_Response(XmlPullParser parser)
        throws IOException, XmlPullParserException, HttpException, UnsupportedDavException {
    /* <!ELEMENT response (href, ((href*, status)|(propstat+)),
                               error?, responsedescription? , location?) > */
    final int depth = parser.getDepth();

    HttpUrl href = null;
    StatusLine status = null;/*from  w  ww .j  ava 2  s  . c o m*/
    PropertyCollection properties = new PropertyCollection();

    int eventType = parser.getEventType();
    while (!(eventType == XmlPullParser.END_TAG && parser.getDepth() == depth)) {
        if (eventType == XmlPullParser.START_TAG && parser.getDepth() == depth + 1) {
            String ns = parser.getNamespace(), name = parser.getName();
            if (XmlUtils.NS_WEBDAV.equals(ns))
                switch (name) {
                case "href":
                    String sHref = parser.nextText();
                    if (!sHref.startsWith("/")) {
                        /* According to RFC 4918 8.3 URL Handling, only absolute paths are allowed as relative
                           URLs. However, some servers reply with relative paths. */
                        int firstColon = sHref.indexOf(':');
                        if (firstColon != -1) {
                            /* There are some servers which return not only relative paths, but relative paths like "a:b.vcf",
                               which would be interpreted as scheme: "a", scheme-specific part: "b.vcf" normally.
                               For maximum compatibility, we prefix all relative paths which contain ":" (but not "://"),
                               with "./" to allow resolving by HttpUrl. */
                            boolean hierarchical = false;
                            try {
                                if ("://".equals(sHref.substring(firstColon, firstColon + 3)))
                                    hierarchical = true;
                            } catch (IndexOutOfBoundsException e) {
                                // no "://"
                            }
                            if (!hierarchical)
                                sHref = "./" + sHref;
                        }
                    }
                    href = location.resolve(sHref);
                    break;
                case "status":
                    try {
                        status = StatusLine.parse(parser.nextText());
                    } catch (ProtocolException e) {
                        log.warn("Invalid status line, treating as 500 Server Error");
                        status = new StatusLine(Protocol.HTTP_1_1, 500, "Invalid status line");
                    }
                    break;
                case "propstat":
                    PropertyCollection prop = parseMultiStatus_PropStat(parser);
                    if (prop != null)
                        properties.merge(prop, false);
                    break;
                case "location":
                    throw new UnsupportedDavException("Redirected child resources are not supported yet");
                }
        }
        eventType = parser.next();
    }

    if (href == null) {
        log.warn("Ignoring <response> without valid <href>");
        return;
    }

    // if we know this resource is a collection, make sure href has a trailing slash (for clarity and resolving relative paths)
    ResourceType type = (ResourceType) properties.get(ResourceType.NAME);
    if (type != null && type.types.contains(ResourceType.COLLECTION))
        href = UrlUtils.withTrailingSlash(href);

    log.debug("Received <response> for " + href + ", status: " + status + ", properties: " + properties);

    if (status != null)
        // treat an HTTP error of a single response (i.e. requested resource or a member) like an HTTP error of the requested resource
        checkStatus(status);

    // Which resource does this <response> represent?
    DavResource target = null;
    if (UrlUtils.equals(UrlUtils.omitTrailingSlash(href), UrlUtils.omitTrailingSlash(location))) {
        // it's about ourselves
        target = this;
    } else if (location.scheme().equals(href.scheme()) && location.host().equals(href.host())
            && location.port() == href.port()) {
        List<String> locationSegments = location.pathSegments(), hrefSegments = href.pathSegments();

        // don't compare trailing slash segment ("")
        int nBasePathSegments = locationSegments.size();
        if ("".equals(locationSegments.get(nBasePathSegments - 1)))
            nBasePathSegments--;

        /* example:   locationSegments  = [ "davCollection", "" ]
                  nBasePathSegments = 1
                  hrefSegments      = [ "davCollection", "aMember" ]
        */

        if (hrefSegments.size() > nBasePathSegments) {
            boolean sameBasePath = true;
            for (int i = 0; i < nBasePathSegments; i++) {
                if (!locationSegments.get(i).equals(hrefSegments.get(i))) {
                    sameBasePath = false;
                    break;
                }
            }

            if (sameBasePath)
                members.add(target = new DavResource(log, httpClient, href));
        }
    }

    // set properties for target
    if (target != null)
        target.properties.merge(properties, true);
    else
        log.warn("Received <response> not for self and not for member resource");
}

From source file:com.baidu.oped.apm.plugin.okhttp.interceptor.HttpEngineSendRequestMethodInterceptor.java

License:Apache License

private String getDestinationId(HttpUrl httpUrl) {
    if (httpUrl == null || httpUrl.host() == null) {
        return "UnknownHttpClient";
    }//w  w  w .j  a va2 s .com
    if (httpUrl.port() == HttpUrl.defaultPort(httpUrl.scheme())) {
        return httpUrl.host();
    }
    final StringBuilder sb = new StringBuilder();
    sb.append(httpUrl.host());
    sb.append(':');
    sb.append(httpUrl.port());
    return sb.toString();
}

From source file:com.navercorp.pinpoint.plugin.okhttp.interceptor.RequestBuilderBuildMethodInterceptor.java

License:Apache License

private String getDestinationId(HttpUrl httpUrl) {
    if (httpUrl == null || httpUrl.host() == null) {
        return "UnknownHttpClient";
    }//from  w  w w .  j a  va  2s  . c om
    if (httpUrl.port() <= 0 || httpUrl.port() == HttpUrl.defaultPort(httpUrl.scheme())) {
        return httpUrl.host();
    }
    final StringBuilder sb = new StringBuilder();
    sb.append(httpUrl.host());
    sb.append(':');
    sb.append(httpUrl.port());
    return sb.toString();
}

From source file:com.navercorp.pinpoint.plugin.okhttp.v2.interceptor.HttpEngineConnectMethodFromUserRequestInterceptor.java

License:Apache License

@Override
protected void doInAfterTrace(SpanEventRecorder recorder, Object target, Object[] args, Object result,
        Throwable throwable) {/*from  w  w  w. ja  v a2  s.co m*/
    recorder.recordApi(methodDescriptor);
    recorder.recordServiceType(OkHttpConstants.OK_HTTP_CLIENT_INTERNAL);
    recorder.recordException(throwable);

    if (target instanceof UserRequestGetter) {
        final Request request = ((UserRequestGetter) target)._$PINPOINT$_getUserRequest();
        if (request != null && request.httpUrl() != null) {
            final HttpUrl httpUrl = request.httpUrl();
            final String hostAndPort = HostAndPort.toHostAndPortString(httpUrl.host(), httpUrl.port());
            recorder.recordAttribute(AnnotationKey.HTTP_INTERNAL_DISPLAY, hostAndPort);
        }
    }
}

From source file:com.navercorp.pinpoint.plugin.okhttp.v2.interceptor.RequestBuilderBuildMethodInterceptor.java

License:Apache License

private String getDestinationId(HttpUrl httpUrl) {
    if (httpUrl == null || httpUrl.host() == null) {
        return "UnknownHttpClient";
    }//from  w w w. ja v a2 s  .c  o  m
    final int port = EndPointUtils.getPort(httpUrl.port(), HttpUrl.defaultPort(httpUrl.scheme()));
    return HostAndPort.toHostAndPortString(httpUrl.host(), port);
}

From source file:io.minio.MinioClient.java

License:Apache License

/**
 * Creates Request object for given request parameters.
 *
 * @param method         HTTP method.//ww w.  java2s . c  o 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();
}