Java 类org.apache.http.message.HeaderGroup 实例源码

项目:purecloud-iot    文件:HttpCacheEntry.java   
/**
 * Create a new {@link HttpCacheEntry} with variants.
 * @param requestDate
 *          Date/time when the request was made (Used for age
 *            calculations)
 * @param responseDate
 *          Date/time that the response came back (Used for age
 *            calculations)
 * @param statusLine
 *          HTTP status line from origin response
 * @param responseHeaders
 *          Header[] from original HTTP Response
 * @param resource representing origin response body
 * @param variantMap describing cache entries that are variants
 *   of this parent entry; this maps a "variant key" (derived
 *   from the varying request headers) to a "cache key" (where
 *   in the cache storage the particular variant is located)
 * @param requestMethod HTTP method used when the request was made
 */
public HttpCacheEntry(
        final Date requestDate,
        final Date responseDate,
        final StatusLine statusLine,
        final Header[] responseHeaders,
        final Resource resource,
        final Map<String,String> variantMap,
        final String requestMethod) {
    super();
    Args.notNull(requestDate, "Request date");
    Args.notNull(responseDate, "Response date");
    Args.notNull(statusLine, "Status line");
    Args.notNull(responseHeaders, "Response headers");
    this.requestDate = requestDate;
    this.responseDate = responseDate;
    this.statusLine = statusLine;
    this.responseHeaders = new HeaderGroup();
    this.responseHeaders.setHeaders(responseHeaders);
    this.resource = resource;
    this.variantMap = variantMap != null
        ? new HashMap<String,String>(variantMap)
        : null;
    this.date = parseDate();
}
项目:BUbiNG    文件:UnbufferedFileStore.java   
@Override
public synchronized void store(final URI uri, final HttpResponse response, boolean isDuplicate, final byte[] contentDigest, final String guessedCharset) throws IOException, InterruptedException {
    if (contentDigest == null) throw new NullPointerException("Content digest is null");
    final HttpResponseWarcRecord record = new HttpResponseWarcRecord(uri, response);
    HeaderGroup warcHeaders = record.getWarcHeaders();
    warcHeaders.updateHeader(new WarcHeader(WarcHeader.Name.WARC_PAYLOAD_DIGEST, "bubing:" + Hex.encodeHexString(contentDigest)));
    if (guessedCharset != null) warcHeaders.updateHeader(new WarcHeader(WarcHeader.Name.BUBING_GUESSED_CHARSET, guessedCharset));
    if (isDuplicate) warcHeaders.updateHeader(new WarcHeader(WarcHeader.Name.BUBING_IS_DUPLICATE, "true"));
    writer.write(record);
}
项目:BUbiNG    文件:WarcStore.java   
@Override
public void store(final URI uri, final HttpResponse response, final boolean isDuplicate, final byte[] contentDigest, final String guessedCharset) throws IOException, InterruptedException {
    if (contentDigest == null) throw new NullPointerException("Content digest is null");
    final HttpResponseWarcRecord record = new HttpResponseWarcRecord(uri, response);
    HeaderGroup warcHeaders = record.getWarcHeaders();
    warcHeaders.updateHeader(new WarcHeader(WarcHeader.Name.WARC_PAYLOAD_DIGEST, "bubing:" + Hex.encodeHexString(contentDigest)));
    if (guessedCharset != null) warcHeaders.updateHeader(new WarcHeader(WarcHeader.Name.BUBING_GUESSED_CHARSET, guessedCharset));
    if (isDuplicate) warcHeaders.updateHeader(new WarcHeader(WarcHeader.Name.BUBING_IS_DUPLICATE, "true"));
    writer.write(record);
}
项目:BUbiNG    文件:AbstractWarcRecord.java   
protected static void writeHeaders(final HeaderGroup headers, final OutputStream output) throws IOException {
    for (final HeaderIterator it = headers.iterator(); it.hasNext();) {
        final org.apache.http.Header header = it.nextHeader();
        Util.toOutputStream(BasicLineFormatter.formatHeader(header, null), output);
        output.write(ByteArraySessionOutputBuffer.CRLF);
    }
}
项目:BUbiNG    文件:HttpRequestWarcRecord.java   
private HttpRequestWarcRecord(final HeaderGroup warcHeaders, final URI targetURI, final HttpRequest request) {
    super(targetURI, warcHeaders);
    getWarcTargetURI(); // Check correct initialization
    this.warcHeaders.updateHeader(Type.warcHeader(Type.REQUEST));
    this.warcHeaders.updateHeader(new WarcHeader(WarcHeader.Name.CONTENT_TYPE, HTTP_REQUEST_MSGTYPE));
    this.protocolVersion = request.getProtocolVersion();
    this.requestLine = request.getRequestLine();
    this.setHeaders(request.getAllHeaders());
}
项目:BUbiNG    文件:HttpResponseWarcRecord.java   
private HttpResponseWarcRecord(final HeaderGroup warcHeaders, final URI targetURI, final HttpResponse response, final HttpEntityFactory hef) throws IOException {
    super(targetURI, warcHeaders);
    getWarcTargetURI(); // Check correct initialization
    this.warcHeaders.updateHeader(Type.warcHeader(Type.RESPONSE));
    this.warcHeaders.updateHeader(new WarcHeader(WarcHeader.Name.CONTENT_TYPE, HTTP_RESPONSE_MSGTYPE));
    this.protocolVersion = response.getProtocolVersion();
    this.statusLine = response.getStatusLine();
    this.setHeaders(response.getAllHeaders());
    this.entity = (hef == null ? IdentityHttpEntityFactory.INSTANCE : hef).newEntity(response.getEntity());
}
项目:BUbiNG    文件:InputStreamTestMocks.java   
public static Set<String> keys(HeaderGroup hg) {
    Set<String> ret = new HashSet<>();
    for (HeaderIterator it = hg.iterator(); it.hasNext();) {
        Header header = it.nextHeader();
        ret.add(header.getName().toLowerCase());
    }
    return ret;
}
项目:BUbiNG    文件:InputStreamTestMocks.java   
public static List<Set<String>> diff(HeaderGroup expected, HeaderGroup actual) {
    Set<String> expecetdKeys = keys(expected);
    Set<String> actualKeys = keys(actual);
    Set<String> common = Sets.intersection(expecetdKeys, actualKeys);
    Set<String> symdiff = Sets.symmetricDifference(expecetdKeys, actualKeys);
    Set<String> diffval = new HashSet<>();
    for (String s : common)
        if (! expected.getCondensedHeader(s).getValue().equals(actual.getCondensedHeader(s).getValue())) diffval.add(s);
    return Arrays.asList(diffval, symdiff);
}
项目:BUbiNG    文件:InputStreamTestMocks.java   
public static List<Set<String>> diff(Header[] expecteds, Header[] actuals) {
    HeaderGroup expected = new HeaderGroup();
    expected.setHeaders(expecteds);
    HeaderGroup actual = new HeaderGroup();
    expected.setHeaders(actuals);
    return diff(expected, actual);
}
项目:BUbiNG    文件:InputStreamTestMocks.java   
public static HeaderGroup toHeaderGroup(String[] read) {
    HeaderGroup ret = new HeaderGroup();
    for (String s : read) {
        String[] p = s.split(":", 2);
        if (p.length != 2) continue;
        ret.addHeader(new BasicHeader(p[0].trim(), p[1].trim()));
    }
    return ret;
}
项目:BUbiNG    文件:InputStreamTestMocks.java   
public WarcRecord(SessionInputBuffer buffer) throws IOException {
    this.warcHeaders = readCRLFSeparatedBlock(buffer);
    if (this.warcHeaders.length == 0) throw new EOFException();
    long contentLength = contentLength(this.warcHeaders);
    if (contentLength == -1) throw new WarcFormatException("Can't find Content-Length");
    final HeaderGroup hg = toHeaderGroup(this.warcHeaders);
    date = WarcHeader.parseDate(WarcHeader.getFirstHeader(hg, WarcHeader.Name.WARC_DATE).getValue());
    uuid = WarcHeader.parseId(WarcHeader.getFirstHeader(hg, WarcHeader.Name.WARC_RECORD_ID).getValue());
    this.payload = new byte[(int)contentLength];
    for (int read = 0; read < contentLength; read ++) this.payload[read] = (byte)buffer.read();
}
项目:snowflake-jdbc    文件:SessionUtil.java   
/**
 * Query IDP token url to authenticate and retrieve access token
 * @param loginInput
 * @param tokenUrl
 * @return
 * @throws SnowflakeSQLException
 */
private static String federatedFlowStep3(LoginInput loginInput, String tokenUrl)
    throws SnowflakeSQLException

{
  String oneTimeToken = "";
  try
  {
    URL url = new URL(tokenUrl);
    URI tokenUri = url.toURI();
    final HttpPost postRequest = new HttpPost(tokenUri);

    StringEntity params = new StringEntity("{\"username\":\"" +
        loginInput.getUserName() + "\",\"password\":\"" +
        loginInput.getPassword() + "\"}");
    postRequest.setEntity(params);

    HeaderGroup headers = new HeaderGroup();
    headers.addHeader(new BasicHeader("Accept", "application/json"));
    headers.addHeader(new BasicHeader("Content-Type", "application/json"));
    postRequest.setHeaders(headers.getAllHeaders());

    final String idpResponse = HttpUtil.executeRequestWithoutCookies(postRequest,
        loginInput.getHttpClient(), loginInput.getLoginTimeout(), 0, null);

    logger.debug("user is authenticated against {}.",
        loginInput.getAuthenticator());

    // session token is in the data field of the returned json response
    final JsonNode jsonNode = mapper.readTree(idpResponse);
    oneTimeToken = jsonNode.get("cookieToken").asText();
  }
  catch (IOException | URISyntaxException ex)
  {
    handleFederatedFlowError(loginInput, ex);
  }
  return oneTimeToken;
}
项目:duosecurity    文件:Http.java   
public Http(String in_method, String in_host, String in_uri) {
    method = in_method.toUpperCase();
    host = in_host;
    uri = in_uri;

    headers = new HeaderGroup();
    addHeader("Host", host);

    params = new ArrayList<NameValuePair>();
    proxy = null;
}
项目:purecloud-iot    文件:HttpCacheEntry.java   
/**
 * Returns all the headers that were on the origin response.
 */
public Header[] getAllHeaders() {
    final HeaderGroup filteredHeaders = new HeaderGroup();
    for (final HeaderIterator iterator = responseHeaders.iterator(); iterator
            .hasNext();) {
        final Header header = (Header) iterator.next();
        if (!REQUEST_METHOD_HEADER_NAME.equals(header.getName())) {
            filteredHeaders.addHeader(header);
        }
    }
    return filteredHeaders.getAllHeaders();
}
项目:apigee-android-sdk    文件:HttpCacheEntry.java   
/**
 * Create a new {@link HttpCacheEntry}
 * 
 * @param requestDate
 *            Date/time when the request was made (Used for age
 *            calculations)
 * @param responseDate
 *            Date/time that the response came back (Used for age
 *            calculations)
 * @param statusLine
 *            HTTP status line
 * @param responseHeaders
 *            Header[] from original HTTP Response
 */
public HttpCacheEntry(final Date requestDate, final Date responseDate,
        final StatusLine statusLine, final Header[] responseHeaders,
        final Resource resource, final Set<String> variants) {
    super();
    if (requestDate == null) {
        throw new IllegalArgumentException("Request date may not be null");
    }
    if (responseDate == null) {
        throw new IllegalArgumentException("Response date may not be null");
    }
    if (statusLine == null) {
        throw new IllegalArgumentException("Status line may not be null");
    }
    if (responseHeaders == null) {
        throw new IllegalArgumentException(
                "Response headers may not be null");
    }
    if (resource == null) {
        throw new IllegalArgumentException("Resource may not be null");
    }
    this.requestDate = requestDate;
    this.responseDate = responseDate;
    this.statusLine = statusLine;
    this.responseHeaders = new HeaderGroup();
    this.responseHeaders.setHeaders(responseHeaders);
    this.resource = resource;
    this.variantURIs = variants != null ? new HashSet<String>(variants)
            : new HashSet<String>();
}
项目:BUbiNG    文件:InfoWarcRecord.java   
public static InfoWarcRecord fromPayload(final HeaderGroup warcHeaders, final BoundSessionInputBuffer payloadBuffer) throws IOException {
    return new InfoWarcRecord(warcHeaders, readPayload(payloadBuffer));
}
项目:BUbiNG    文件:InfoWarcRecord.java   
private InfoWarcRecord(final HeaderGroup warcHeaders, final Header[] info) {
    super(warcHeaders);
    this.warcHeaders.updateHeader(Type.warcHeader(Type.WARCINFO));
    this.info.setHeaders(info);
}
项目:BUbiNG    文件:InfoWarcRecord.java   
public HeaderGroup getInfo() {
    return info;
}
项目:BUbiNG    文件:AbstractWarcRecord.java   
@Override
public HeaderGroup getWarcHeaders() {
    return this.warcHeaders;
}
项目:BUbiNG    文件:HttpRequestWarcRecord.java   
public static HttpRequestWarcRecord fromPayload(final HeaderGroup warcHeaders, final BoundSessionInputBuffer payloadBuffer) throws IOException {
    return new HttpRequestWarcRecord(warcHeaders, null, readPayload(payloadBuffer));
}
项目:BUbiNG    文件:HttpResponseWarcRecord.java   
public static HttpResponseWarcRecord fromPayload(final HeaderGroup warcHeaders, final BoundSessionInputBuffer payloadBuffer) throws IOException {
    return new HttpResponseWarcRecord(warcHeaders, null, readPayload(payloadBuffer), IdentityHttpEntityFactory.INSTANCE);
}
项目:BUbiNG    文件:InputStreamTestMocks.java   
public static List<Set<String>> diff(Header[] expecteds, HeaderGroup actual) {
    HeaderGroup expected = new HeaderGroup();
    expected.setHeaders(expecteds);
    return diff(expected, actual);
}
项目:BUbiNG    文件:InputStreamTestMocks.java   
public static List<Set<String>> diff(HeaderGroup expected, Header[] actuals) {
    HeaderGroup actual = new HeaderGroup();
    actual.setHeaders(actuals);
    return diff(expected, actual);
}
项目:snowflake-jdbc    文件:SessionUtil.java   
/**
 * Given access token, query IDP URL snowflake app to get SAML response
 * We also need to perform important client side validation:
 *  validate the post back url come back with the SAML response
 *  contains the same prefix as the Snowflake's server url, which is the
 *  intended destination url to Snowflake.
 * Explanation:
 *  This emulates the behavior of IDP initiated login flow in the user
 *  browser where the IDP instructs the browser to POST the SAML
 *  assertion to the specific SP endpoint.  This is critical in
 *  preventing a SAML assertion issued to one SP from being sent to
 *  another SP.
 * @param loginInput
 * @param ssoUrl
 * @param oneTimeToken
 * @return
 * @throws SnowflakeSQLException
 */
private static String federatedFlowStep4(
    LoginInput loginInput,
    String ssoUrl,
    String oneTimeToken) throws SnowflakeSQLException
{
  String responseHtml = "";
  try
  {

    final URL url = new URL(ssoUrl);
    URI oktaGetUri = new URIBuilder()
        .setScheme(url.getProtocol())
        .setHost(url.getHost())
        .setPath(url.getPath())
        .setParameter("RelayState", "%2Fsome%2Fdeep%2Flink")
        .setParameter("onetimetoken", oneTimeToken).build();
    HttpGet httpGet = new HttpGet(oktaGetUri);

    HeaderGroup headers = new HeaderGroup();
    headers.addHeader(new BasicHeader("Accept", "*/*"));
    httpGet.setHeaders(headers.getAllHeaders());

    responseHtml = HttpUtil.executeRequest(httpGet,
        loginInput.getHttpClient(), loginInput.getLoginTimeout(), 0, null);

    // step 5
    String postBackUrl = getPostBackUrlFromHTML(responseHtml);
    if (!isPrefixEqual(postBackUrl, loginInput.getServerUrl()))
    {
      logger.debug("The specified authenticator {} and the destination URL " +
              "in the SAML assertion {} do not match.",
          loginInput.getAuthenticator(), postBackUrl);
      throw new SnowflakeSQLException(
          SqlState.SQLCLIENT_UNABLE_TO_ESTABLISH_SQLCONNECTION,
          ErrorCode.IDP_INCORRECT_DESTINATION.getMessageCode());
    }
  }
  catch (IOException | URISyntaxException ex)
  {
    handleFederatedFlowError(loginInput, ex);
  }
  return responseHtml;
}
项目:BUbiNG    文件:WarcHeader.java   
/**
 * Adds the given header, if not present (otherwise does nothing).
 *
 * @param headers the headers where to add the new one.
 * @param name the name of the header to add.
 * @param value the value of the header to add.
 */
public static void addIfNotPresent(final HeaderGroup headers, final WarcHeader.Name name, final String value) {
    if (! headers.containsHeader(name.value)) headers.addHeader(new WarcHeader(name, value));
}
项目:BUbiNG    文件:WarcHeader.java   
/**
 * Returns the first header of given name.
 *
 * @param headers the headers to search from.
 * @param name the name of the header to lookup.
 * @return the header.
 */
public static Header getFirstHeader(final HeaderGroup headers, final WarcHeader.Name name) {
    return headers.getFirstHeader(name.value);
}
项目:BUbiNG    文件:AbstractWarcRecord.java   
/** BUilds a record, optionally given the warcHeaders.
 *
 * @param warcHeaders the WARC headers, may be {@code null}.
 * @see AbstractWarcRecord#AbstractWarcRecord(URI,HeaderGroup)
 */
public AbstractWarcRecord(final HeaderGroup warcHeaders) {
    this(null, warcHeaders);
}
项目:BUbiNG    文件:WarcRecord.java   
/** Returns the WARC headers.
 *
 * @return the WARC headers.
 */
public HeaderGroup getWarcHeaders();