Example usage for org.apache.http.util CharArrayBuffer append

List of usage examples for org.apache.http.util CharArrayBuffer append

Introduction

In this page you can find the example usage for org.apache.http.util CharArrayBuffer append.

Prototype

public void append(Object obj) 

Source Link

Usage

From source file:freeipa.client.negotiation.JBossNegotiateScheme.java

/**
 * Produces Negotiate authorization Header based on token created by processChallenge.
 *
 * @param credentials Never used be the Negotiate scheme but must be provided to satisfy common-httpclient API. Credentials
 *        from JAAS will be used instead.
 * @param request The request being authenticated
 *
 * @throws AuthenticationException if authorization string cannot be generated due to an authentication failure
 *
 * @return an Negotiate authorization Header
 *///  w w w.jav a2s. co m
@Override
public Header authenticate(final Credentials credentials, final HttpRequest request, final HttpContext context)
        throws AuthenticationException {
    if (request == null) {
        throw new IllegalArgumentException("HTTP request may not be null");
    }
    if (state != State.CHALLENGE_RECEIVED) {
        throw new IllegalStateException("Negotiation authentication process has not been initiated");
    }
    try {
        String key = null;
        if (isProxy()) {
            key = ExecutionContext.HTTP_PROXY_HOST;
        } else {
            key = ExecutionContext.HTTP_TARGET_HOST;
        }
        HttpHost host = (HttpHost) context.getAttribute(key);
        if (host == null) {
            throw new AuthenticationException("Authentication host is not set " + "in the execution context");
        }
        String authServer;
        if (!this.stripPort && host.getPort() > 0) {
            authServer = host.toHostString();
        } else {
            authServer = host.getHostName();
        }

        System.out.println("init " + authServer);

        final Oid negotiationOid = new Oid(SPNEGO_OID);

        final GSSManager manager = GSSManager.getInstance();
        final GSSName serverName = manager.createName("HTTP@" + authServer, GSSName.NT_HOSTBASED_SERVICE);
        final GSSContext gssContext = manager.createContext(serverName.canonicalize(negotiationOid),
                negotiationOid, null, DEFAULT_LIFETIME);
        gssContext.requestMutualAuth(true);
        gssContext.requestCredDeleg(true);

        if (token == null) {
            token = new byte[0];
        }
        token = gssContext.initSecContext(token, 0, token.length);
        if (token == null) {
            state = State.FAILED;
            throw new AuthenticationException("GSS security context initialization failed");
        }

        state = State.TOKEN_GENERATED;
        String tokenstr = new String(base64codec.encode(token));
        System.out.println("Sending response '" + tokenstr + "' back to the auth server");

        CharArrayBuffer buffer = new CharArrayBuffer(32);
        if (isProxy()) {
            buffer.append(AUTH.PROXY_AUTH_RESP);
        } else {
            buffer.append(AUTH.WWW_AUTH_RESP);
        }
        buffer.append(": Negotiate ");
        buffer.append(tokenstr);
        return new BufferedHeader(buffer);
    } catch (GSSException gsse) {
        state = State.FAILED;
        if (gsse.getMajor() == GSSException.DEFECTIVE_CREDENTIAL
                || gsse.getMajor() == GSSException.CREDENTIALS_EXPIRED)
            throw new InvalidCredentialsException(gsse.getMessage(), gsse);
        if (gsse.getMajor() == GSSException.NO_CRED)
            throw new InvalidCredentialsException(gsse.getMessage(), gsse);
        if (gsse.getMajor() == GSSException.DEFECTIVE_TOKEN || gsse.getMajor() == GSSException.DUPLICATE_TOKEN
                || gsse.getMajor() == GSSException.OLD_TOKEN)
            throw new AuthenticationException(gsse.getMessage(), gsse);
        // other error
        throw new AuthenticationException(gsse.getMessage());
    }
}

From source file:com.subgraph.vega.internal.http.requests.connection.UnencodingLineFormatter.java

@Override
protected void doFormatRequestLine(final CharArrayBuffer buffer, final RequestLine reqline) {
    final String method = reqline.getMethod();
    final String uri = reqline.getUri();

    // room for "GET /index.html HTTP/1.1"
    int len = method.length() + 1 + uri.length() + 1 + estimateProtocolVersionLen(reqline.getProtocolVersion());
    buffer.ensureCapacity(len);// w  ww.  j  ava 2 s  .co  m

    buffer.append(method);
    buffer.append(' ');
    buffer.append(getUnencoded(uri));
    buffer.append(' ');
    appendProtocolVersion(buffer, reqline.getProtocolVersion());
}

From source file:org.vietspider.net.apache.DefaultResponseParser.java

public static Header[] parseHeaders(final SessionInputBuffer inbuffer, int maxHeaderCount, int maxLineLen,
        LineParser parser) throws HttpException, IOException {

    if (inbuffer == null) {
        throw new IllegalArgumentException("Session input buffer may not be null");
    }//from w w w  .ja va  2  s .  c  o m

    if (parser == null)
        parser = BasicLineParser.DEFAULT;

    ArrayList<CharArrayBuffer> headerLines = new ArrayList<CharArrayBuffer>();

    CharArrayBuffer current = null;
    CharArrayBuffer previous = null;
    for (;;) {
        if (current == null) {
            current = new CharArrayBuffer(64);
        } else {
            current.clear();
        }
        int l = inbuffer.readLine(current);
        if (l == -1 || current.length() < 1) {
            break;
        }
        // Parse the header name and value
        // Check for folded headers first
        // Detect LWS-char see HTTP/1.0 or HTTP/1.1 Section 2.2
        // discussion on folded headers
        if ((current.charAt(0) == ' ' || current.charAt(0) == '\t') && previous != null) {
            // we have continuation folded header
            // so append value
            int i = 0;
            while (i < current.length()) {
                char ch = current.charAt(i);
                if (ch != ' ' && ch != '\t') {
                    break;
                }
                i++;
            }
            if (maxLineLen > 0 && previous.length() + 1 + current.length() - i > maxLineLen) {
                throw new IOException("Maximum line length limit exceeded");
            }
            previous.append(' ');
            previous.append(current, i, current.length() - i);
        } else {
            headerLines.add(current);
            previous = current;
            current = null;
        }

        if (maxHeaderCount > 0 && headerLines.size() >= maxHeaderCount) {
            throw new IOException("Maximum header count exceeded");
        }
    }

    Header[] headers = new Header[headerLines.size()];
    for (int i = 0; i < headerLines.size(); i++) {
        CharArrayBuffer buffer = headerLines.get(i);
        try {
            headers[i] = parser.parseHeader(buffer);
        } catch (ParseException ex) {
            throw new ProtocolException(ex.getMessage());
        }
    }
    return headers;
}

From source file:com.grendelscan.commons.http.apache_overrides.serializable.SerializableBasicCookie.java

@Override
public String toString() {
    CharArrayBuffer buffer = new CharArrayBuffer(64);
    buffer.append("[version: ");
    buffer.append(Integer.toString(cookieVersion));
    buffer.append("]");
    buffer.append("[name: ");
    buffer.append(name);//from  www . jav a2 s.c  o m
    buffer.append("]");
    buffer.append("[name: ");
    buffer.append(value);
    buffer.append("]");
    buffer.append("[domain: ");
    buffer.append(cookieDomain);
    buffer.append("]");
    buffer.append("[path: ");
    buffer.append(cookiePath);
    buffer.append("]");
    buffer.append("[expiry: ");
    buffer.append(cookieExpiryDate);
    buffer.append("]");
    return buffer.toString();
}

From source file:com.mcxiaoke.next.http.entity.BasicHeaderValueFormatter.java

public CharArrayBuffer formatNameValuePair(final CharArrayBuffer charBuffer, final NameValuePair nvp,
        final boolean quote) {
    AssertUtils.notNull(nvp, "Name / value pair");
    final int len = estimateNameValuePairLen(nvp);
    CharArrayBuffer buffer = charBuffer;
    if (buffer == null) {
        buffer = new CharArrayBuffer(len);
    } else {/*w ww  .  j av a2  s .  com*/
        buffer.ensureCapacity(len);
    }

    buffer.append(nvp.getName());
    final String value = nvp.getValue();
    if (value != null) {
        buffer.append('=');
        doFormatValue(buffer, value, quote);
    }

    return buffer;
}

From source file:com.mcxiaoke.next.http.entity.BasicHeaderValueFormatter.java

public CharArrayBuffer formatHeaderElement(final CharArrayBuffer charBuffer, final HeaderElement elem,
        final boolean quote) {
    AssertUtils.notNull(elem, "Header element");
    final int len = estimateHeaderElementLen(elem);
    CharArrayBuffer buffer = charBuffer;
    if (buffer == null) {
        buffer = new CharArrayBuffer(len);
    } else {/*  w w  w.  ja va2s  .c  o m*/
        buffer.ensureCapacity(len);
    }

    buffer.append(elem.getName());
    final String value = elem.getValue();
    if (value != null) {
        buffer.append('=');
        doFormatValue(buffer, value, quote);
    }

    final int parcnt = elem.getParameterCount();
    if (parcnt > 0) {
        for (int i = 0; i < parcnt; i++) {
            buffer.append("; ");
            formatNameValuePair(buffer, elem.getParameter(i), quote);
        }
    }

    return buffer;
}

From source file:org.elasticsearch.xpack.security.authc.saml.SamlAuthenticationIT.java

private List<NameValuePair> parseRequestForm(HttpExchange http) throws IOException {
    String reqContent = Streams.copyToString(new InputStreamReader(http.getRequestBody()));
    final CharArrayBuffer buffer = new CharArrayBuffer(reqContent.length());
    buffer.append(reqContent);
    return URLEncodedUtils.parse(buffer, HTTP.DEF_CONTENT_CHARSET, '&');
}

From source file:com.mcxiaoke.next.http.entity.BasicHeaderValueFormatter.java

public CharArrayBuffer formatParameters(final CharArrayBuffer charBuffer, final NameValuePair[] nvps,
        final boolean quote) {
    AssertUtils.notNull(nvps, "Header parameter array");
    final int len = estimateParametersLen(nvps);
    CharArrayBuffer buffer = charBuffer;
    if (buffer == null) {
        buffer = new CharArrayBuffer(len);
    } else {/*from   w  w w. j  a v  a 2  s  . c  o  m*/
        buffer.ensureCapacity(len);
    }

    for (int i = 0; i < nvps.length; i++) {
        if (i > 0) {
            buffer.append("; ");
        }
        formatNameValuePair(buffer, nvps[i], quote);
    }

    return buffer;
}

From source file:com.mcxiaoke.next.http.entity.BasicHeaderValueFormatter.java

public CharArrayBuffer formatElements(final CharArrayBuffer charBuffer, final HeaderElement[] elems,
        final boolean quote) {
    AssertUtils.notNull(elems, "Header element array");
    final int len = estimateElementsLen(elems);
    CharArrayBuffer buffer = charBuffer;
    if (buffer == null) {
        buffer = new CharArrayBuffer(len);
    } else {/*from  w w  w .j  a  v a 2  s  .  c o m*/
        buffer.ensureCapacity(len);
    }

    for (int i = 0; i < elems.length; i++) {
        if (i > 0) {
            buffer.append(", ");
        }
        formatHeaderElement(buffer, elems[i], quote);
    }

    return buffer;
}