Package org.simpleframework.http.parse

## Class PrincipalParser

- java.lang.Object
- - org.simpleframework.util.parse.Parser
  - - org.simpleframework.http.parse.PrincipalParser

- All Implemented Interfaces:
    `Principal`

      public class PrincipalParser
      extends Parser
      implements Principal

  PrincipalParser is a parser class for the HTTP basic authorization header. It decodes the `base64` encoding of the user and password pair.

  This follows the parsing tree of RFC 2617. The goal of this parser is to decode the `base64` encoding of the user name and password. After the string has been decoded then the user name and password are extracted. This will only parse headers that are from the `Basic` authorization scheme. The format of the basic scheme can be found in RFC 2617 and is of the form

        Basic SP base64-encoding.

  Author:
    Niall Gallagher

- - ### Field Summary

    - ### Fields inherited from class org.simpleframework.util.parse.Parser

      `buf, count, off`

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `PrincipalParser()` | Creates a `Parser` for the basic authorization scheme.
    `PrincipalParser​(java.lang.String header)` | Creates a `Parser` for the basic authorization scheme.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `java.lang.String` | `getName()` | Gets the users name from the Authorization header value.
    `java.lang.String` | `getPassword()` | Gets the users password parsed from the Authorization header value.
    `protected void` | `init()` | This will initialize the `Parser` when it is ready to parse a new `String`.
    `protected void` | `parse()` | Used to parse the actual header data.

    - ### Methods inherited from class org.simpleframework.util.parse.Parser

      `digit, ensureCapacity, parse, skip, space, toLower`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### PrincipalParser

          public PrincipalParser()

      Creates a `Parser` for the basic authorization scheme. This allows headers that are of this scheme to be broken into its component parts i.e. user name and password.

    - #### PrincipalParser

          public PrincipalParser​(java.lang.String header)

      Creates a `Parser` for the basic authorization scheme. This allows headers that are of this scheme to be broken into its component parts i.e. user name and password. This constructor will parse the `String` given as the header.
      Parameters:
        `header` - this is a header value from the basic scheme

  - ### Method Detail

    - #### getPassword

          public java.lang.String getPassword()

      Gets the users password parsed from the Authorization header value. If there was not password parsed from the base64 value of the header this returns `null`
      Specified by:
        `getPassword` in interface `Principal`
      Returns:
        the password for the user or `null`

    - #### getName

          public java.lang.String getName()

      Gets the users name from the Authorization header value. This will return `null` if there is no user name extracted from the base64 header value.
      Specified by:
        `getName` in interface `Principal`
      Returns:
        this returns the name of the user

    - #### parse

          protected void parse()

      Used to parse the actual header data. This will attempt to read the "Basic" token from the set of characters given, if this is successful then the username and password is extracted.
      Specified by:
        `parse` in class `Parser`

    - #### init

          protected void init()

      This will initialize the `Parser` when it is ready to parse a new `String`. This will reset the `Parser` to a ready state. The `init` method is invoked by the `Parser` when the `parse` method is invoked.
      Specified by:
        `init` in class `Parser`