Package com.castlabs.android.drm

## Class DrmTodayException

- java.lang.Object
- - java.lang.Throwable
  - - java.lang.Exception
    - - com.castlabs.android.drm.DrmTodayException

- All Implemented Interfaces:
    `Serializable`

      public class DrmTodayException
      extends Exception

  Use this Exception class to report any errors from DrmToday services. The exception is initialized with an error code which is one of: `ERROR_NOT_AUTHORIZED`, `ERROR_INVALID_REQUEST`, `ERROR_KEY_NOT_FOUND`, `ERROR_PROVISIONING_FAILED`, `ERROR_TOO_MANY_CONCURRENT_SESSIONS`, or `ERROR_UNKNOWN`.
  See Also:
    Serialized Form

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class | Description
    --- | --- | ---
    `static interface` | `DrmTodayException.ErrorCode` |

  - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `static int` | `ERROR_DEVICE_TIME` | A device time error occurred
    `static int` | `ERROR_INVALID_REQUEST` | Error indicating an invalid request that was rejected by the server
    `static int` | `ERROR_IO_ERROR` | Error indicating that an IO error occurred during the license request.
    `static int` | `ERROR_KEY_NOT_FOUND` | Error indicating that the requested content was not found
    `static int` | `ERROR_NOT_AUTHORIZED` | Error indicating an unauthorized request
    `static int` | `ERROR_PROVISIONING_FAILED` | Error indicating that the provisioning request failed.
    `static int` | `ERROR_TOO_MANY_CONCURRENT_SESSIONS` | Error raised when DRMtoday refuses license renewal due to too many open sessions
    `static int` | `ERROR_UNKNOWN` | Error indicating a general error
    `static int` | `ERROR_WIDEVINE_DEV_CERTIFICATE_REVOKED` | A device's Widevine certificate was revoked

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `DrmTodayException​(String message, int errorCode)` | Create a new instance with the given message and error errorCode
    `DrmTodayException​(String message, int errorCode, String customMessage)` | Create a new instance with the given message and error errorCode
    `DrmTodayException​(String message, int errorCode, Throwable cause)` | Create a new instance with the given message and error errorCode

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `static DrmTodayException` | `create​(int responseCode, String responseBody, Map<String,​List<String>> responseHeaders, Throwable cause)` | Looks at the response code, the response body, and the headers and returns a DRMtoday Exception that maps to the given error.
    `String` | `getCustomCode()` |
    `String` | `getCustomMessage()` |
    `int` | `getErrorCode()` |
    `String` | `toString()` |

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

      `addSuppressed, fillInStackTrace, getCause, getLocalizedMessage, getMessage, getStackTrace, getSuppressed, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace`

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

      `equals, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Field Detail

    - #### ERROR_UNKNOWN

          public static final int ERROR_UNKNOWN

      Error indicating a general error
      See Also:
        Constant Field Values

    - #### ERROR_INVALID_REQUEST

          public static final int ERROR_INVALID_REQUEST

      Error indicating an invalid request that was rejected by the server
      See Also:
        Constant Field Values

    - #### ERROR_NOT_AUTHORIZED

          public static final int ERROR_NOT_AUTHORIZED

      Error indicating an unauthorized request
      See Also:
        Constant Field Values

    - #### ERROR_KEY_NOT_FOUND

          public static final int ERROR_KEY_NOT_FOUND

      Error indicating that the requested content was not found
      See Also:
        Constant Field Values

    - #### ERROR_IO_ERROR

          public static final int ERROR_IO_ERROR

      Error indicating that an IO error occurred during the license request. This cause of this exception will be an `IOException`
      See Also:
        Constant Field Values

    - #### ERROR_PROVISIONING_FAILED

          public static final int ERROR_PROVISIONING_FAILED

      Error indicating that the provisioning request failed. Error of this type can also have an `IOException` as cause.
      See Also:
        Constant Field Values

    - #### ERROR_TOO_MANY_CONCURRENT_SESSIONS

          public static final int ERROR_TOO_MANY_CONCURRENT_SESSIONS

      Error raised when DRMtoday refuses license renewal due to too many open sessions
      See Also:
        Constant Field Values

    - #### ERROR_DEVICE_TIME

          public static final int ERROR_DEVICE_TIME

      A device time error occurred
      See Also:
        Constant Field Values

    - #### ERROR_WIDEVINE_DEV_CERTIFICATE_REVOKED

          public static final int ERROR_WIDEVINE_DEV_CERTIFICATE_REVOKED

      A device's Widevine certificate was revoked
      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### DrmTodayException

          public DrmTodayException​(@NonNull
                                   String message,
                                   int errorCode)

      Create a new instance with the given message and error errorCode
      Parameters:
        `message` - the error message
        `errorCode` - the error errorCode

    - #### DrmTodayException

          public DrmTodayException​(@NonNull
                                   String message,
                                   int errorCode,
                                   @Nullable
                                   String customMessage)

      Create a new instance with the given message and error errorCode
      Parameters:
        `message` - the error message
        `errorCode` - the error errorCode
        `customMessage` - the custom message

    - #### DrmTodayException

          public DrmTodayException​(@NonNull
                                   String message,
                                   int errorCode,
                                   Throwable cause)

      Create a new instance with the given message and error errorCode
      Parameters:
        `message` - the error message
        `errorCode` - the error errorCode
        `cause` - the cause

  - ### Method Detail

    - #### getErrorCode

          public int getErrorCode()

      Returns:
        The error code. One of `ERROR_NOT_AUTHORIZED`, `ERROR_INVALID_REQUEST`, `ERROR_UNKNOWN`, `ERROR_TOO_MANY_CONCURRENT_SESSIONS`, or `ERROR_KEY_NOT_FOUND`

    - #### getCustomMessage

          @Nullable
          public String getCustomMessage()

      Returns:
        The custom CRT error message or null

    - #### getCustomCode

          @Nullable
          public String getCustomCode()

      Returns:
        DrmToday response code string

    - #### toString

          public String toString()

      Overrides:
        `toString` in class `Throwable`

    - #### create

          @NonNull
          public static DrmTodayException create​(int responseCode,
                                                 @Nullable
                                                 String responseBody,
                                                 @Nullable
                                                 Map<String,​List<String>> responseHeaders,
                                                 @Nullable
                                                 Throwable cause)

      Looks at the response code, the response body, and the headers and returns a DRMtoday Exception that maps to the given error.
      Parameters:
        `responseCode` - The HTTP response code
        `responseBody` - The response body
        `responseHeaders` - The response headers
        `cause` - The cause if applicable
      Returns:
        The DrmTodayException