Headers getCanonicalHeaders()

in src/main/java/com/twitter/whiskey/net/SpdyStream.java [219:239]


    Headers getCanonicalHeaders() {

        Headers canonical = new Headers(request.getHeaders());
        URL url = request.getUrl();
        String path = url.getPath();
        // Though RFC-3986 allows path to be empty, most user agents will send
        // a trailing slash in lieu of an empty path, and Twitter seems to
        // require it.
        if (path.length() == 0) path = "/";
        String query = url.getQuery();
        String fragment = url.getRef();
        String fullPath = path
            + (query != null ? "?" + query : "")
            + (fragment != null ? "#" + fragment : "");
        canonical.put(":path", fullPath);
        canonical.put(":method", request.getMethod().toString());
        canonical.put(":version", "HTTP/1.1");
        canonical.put(":host", url.getHost());
        canonical.put(":scheme", url.getProtocol());
        return canonical;
    }