en-US/about_RedditApplication.help.txt

TOPIC
    about_redditapplication
 
SHORT DESCRIPTION
    Describes the RedditApplication Class
 
LONG DESCRIPTION
    The `RedditApplication` class is used to define the parameters of an
    application which access the Reddit API. The `RedditApplication` class
    becomes embedded in the `RedditOAuthToken` class after an OAuth Access token
    is requested. It is also embedded in `RedditOAuthCode` objects when an
    Authorization Code is requested. A single application may be used by
    multiple users or by a single user multiple times. Each user requires their
    own Access Token and a single user can have multiple Access Token. The
    `RedditApplication` class makes it possible to define an application’s
    parameters once and then reuse it multiple times in multiple Access Tokens
    for multiple users. A `RedditApplication` class houses the Client ID and
    Client Secret as defined at https://ssl.reddit.com/prefs/apps . The `Name`
    and `Description` of the `RedditApplication` do not need to match what is
    registered with Reddit. They are provided along with the `GUID` property as
    a convenience to identify your applications.
    A `RedditApplication` is required to request an OAuth Access Token with `Request-RedditOAuthToken`.
    You can create `RedditApplication` objects using the `New-RedditApplication` function
    The `RedditApplication` class is imported automatically when you import the
    PSRAW module.
 
CONSTRUCTORS
RedditApplication()
    The default constructor will always throw an
    `System.NotImplementedException` exception. It is included because
    PowerShell v5 classes behave oddly when a default constructor is missing
    when other constructors are defined. This constructor cannot be used to
    create an instance of the class.
 
    [RedditApplication]::new()
 
RedditApplication(Object Object)
    This constructor converts the provided `Object` to a `HashTable` and passes
    it to the `_init` method. This constructor provides `Object` to
    `RedditApplication` conversion.
 
    [RedditApplication]::new([Object]$Object)
 
RedditApplication(System.Management.Automation.PSObject PSObject)
    This constructor converts the provided `PSObject` to a `HashTable` and
    passes it to the `_init` method. This constructor provides `PSObject` to
    `RedditApplication` conversion.
 
    [RedditApplication]::new([System.Management.Automation.PSObject]$PSObject)
 
RedditApplication(System.Collections.Hashtable InitHash)
    This constructor passes the provided `HashTable` to the `_init` method. This
    constructor provides `HashTable` to `RedditApplication` conversion.
 
    [RedditApplication]::new([System.Collections.Hashtable]$InitHash)
 
RedditApplication(String Name, String Description, Uri RedirectUri, String UserAgent, RedditApplicationType Type, Guid GUID, String ExportPath, RedditOAuthScope[] Scope, System.Management.Automation.PSCredential ClientCredential, System.Management.Automation.PSCredential UserCredential)
    This constructor converts the arguments to a `HashTable` and passes them to
    the `_init` method.
 
    [RedditApplication]::new(
        [String]$Name,
        [String]$Description,
        [Uri]$RedirectUri,
        [String]$UserAgent,
        [RedditApplicationType]$Type,
        [Guid]$GUID,
        [String]$ExportPath,
        [RedditOAuthScope[]]$Scope,
        [System.Management.Automation.PSCredential]$ClientCredential,
        [System.Management.Automation.PSCredential]$UserCredential
    )
 
PROPERTIES
AuthBaseURL
    The `AuthBaseURL` static property is default base URL used to request
    authorization codes from reddit.
 
    Name: AuthBaseURL
    Type: String
    Hidden: False
    Static: True
 
ClientCredential
    The `ClientCredential` property contains a `PSCredential` object where the
    Username is the Application's Client ID and the password is the Client
    Secret as configured in reddit. For `Installed` applications, the password
    should be empty.
 
    Name: ClientCredential
    Type: System.Management.Automation.PSCredential
    Hidden: True
    Static: False
 
ClientID
    The `ClientID` property is the Client ID as provided by reddit when the
    application is registered. This should match the username of the
    `ClientCredential`. Changing this is not recommended.
 
    Name: ClientID
    Type: String
    Hidden: False
    Static: False
 
Description
    A description for the application used for convenience of identifying and
    documenting the `RedditApplication` object only.
 
    Name: Description
    Type: String
    Hidden: False
    Static: False
 
ExportPath
    This is the path the `RedditApplication` was last imported from or where you
    wish to export it to. It is provided for interaction with
    `Import-RedditApplication` and `Export-RedditApplication`. This should be
    the literal path of the file.
 
    Name: ExportPath
    Type: String
    Hidden: False
    Static: False
 
GUID
    A `Guid` used to help identify the application. This is provided for
    convenience and is not sent to or required by the API. In situations where
    multiple Applications may be in use, this GUID can be used to identify if
    the same applications is in use on separate `RedditOAuthToken` objects.
 
    Name: GUID
    Type: Guid
    Hidden: False
    Static: False
 
Name
    The name of the application used for convenience of identifying the
    `RedditApplication` object only.
 
    Name: Name
    Type: String
    Hidden: False
    Static: False
 
RedirectUri
    The Redirect URI for the application. This must match the Redirect URI
    registered for the application on Reddit. This is required byt Reddit's
    OAuth to request both Authorization codes and Access Tokens.
 
    Name: RedirectUri
    Type: Uri
    Hidden: False
    Static: False
 
Scope
    The Scope property is an array of `RedditOAuthScope` objects which list the
    scopes for which the Application will request access to. To get all valid
    scopes use `Get-RedditOAuthScope`. For more information see the help topic
    for `Get-RedditOAuthScope`.
 
    Name: Scope
    Type: RedditOAuthScope[]
    Hidden: False
    Static: False
 
ScriptUser
    The `ScriptUser` property is the Reddit username used for Script
    Applications. This should match the username in the `UserCredential`
    property
 
    Name: ScriptUser
    Type: String
    Hidden: False
    Static: False
 
Type
    The `Type` property is one of the available `RedditApplicationType`
    enumerator options. This should match the application type registered on
    Reddit. for more information see `about_RedditApplicationType`
 
    Name: Type
    Type: RedditApplicationType
    Hidden: False
    Static: False
 
UserAgent
    The `UserAgent` property contains the text that will be sent as the
    `User-Agent` header to the Reddit API. Reddit requires applications
    accessing their API provide a meaningful user agent. The following
    convention is what they recommend.
 
    <platform>:<app ID>:<version string> (by /u/<reddit username>)
 
    Example:
 
    windows:MyPSRAW-App:v1.2.3 (by /u/markekraus)
 
    For more details see https://github.com/reddit/reddit/wiki/API#rules
 
    Name: UserAgent
    Type: String
    Hidden: False
    Static: False
 
UserCredential
    The `UserCredential` property contains a `PSCredential` object where the
    username and passwords are the Reddit Username and password used for
    `Script` Applications. For `WebApp` and `Installed` apps, this is not
    required and will be ignored.
 
    Name: UserCredential
    Type: System.Management.Automation.PSCredential
    Hidden: True
    Static: False
 
METHODS
_GetAuthorizationUrl(RedditOAuthResponseType ResponseType, RedditOAuthDuration Duration, String State, String AuthBaseUrl)
    The `_GetAuthorizationUrl` hidden method is used to generate an
    authorization request URL by the `GetAuthorizationUrl` method overloads. It
    combines the Base URL, Client ID, Response Type, Duration, Redirect URI, and
    Scope to to provide a URL used for requesting authorization from Reddit.
 
    Name: _GetAuthorizationUrl
    Return Type: String
    Hidden: True
    Static: False
    Definition: hidden String _GetAuthorizationUrl(RedditOAuthResponseType ResponseType, RedditOAuthDuration Duration, String State, String AuthBaseUrl)
 
_init(System.Collections.Hashtable InitHash)
    The `_init` hidden method is used by the constructors to initialize the
    class. This way class initialization code can be maintained in a single
    method instead of each individual constructor. It performs several checks to
    ensure that required properties are provided and will throw
    `System.ArgumentException` exceptions if the requirements are not met.
 
    Name: _init
    Return Type: Void
    Hidden: True
    Static: False
    Definition: hidden Void _init(System.Collections.Hashtable InitHash)
 
GetAuthorizationUrl(RedditOAuthResponseType ResponseType, RedditOAuthDuration Duration, String State)
    The `GetAuthorizationUrl` method is used to generate an authorization
    request URL. The default URL will be constructed with following:
 
    Base URL: [RedditApplication]::AuthBaseURL
    response_type: $ResponseType
    duration: $Duration
    state: $State
 
    These will be passed to the `_GetAuthorizationUrl` method which will
    generate the URL based on attributes from the `RedditApplication` instance.
 
    Name: GetAuthorizationUrl
    Return Type: String
    Hidden: False
    Static: False
    Definition: String GetAuthorizationUrl(RedditOAuthResponseType ResponseType, RedditOAuthDuration Duration, String State)
 
GetAuthorizationUrl(RedditOAuthResponseType ResponseType, RedditOAuthDuration Duration, String State, String AuthBaseURL)
    The `GetAuthorizationUrl` method is used to generate an authorization
    request URL. The default URL will be constructed with following:
 
    Base URL: $AuthBaseURL
    response_type: $ResponseType
    duration: $Duration
    state: $State
 
    These will be passed to the `_GetAuthorizationUrl` method which will
    generate the URL based on attributes from the `RedditApplication` instance.
 
    Name: GetAuthorizationUrl
    Return Type: String
    Hidden: False
    Static: False
    Definition: String GetAuthorizationUrl(RedditOAuthResponseType ResponseType, RedditOAuthDuration Duration, String State, String AuthBaseURL)
 
GetAuthorizationUrl()
    The `GetAuthorizationUrl` method is used to generate an authorization
    request URL. The default URL will be constructed with following:
 
    Base URL: [RedditApplication]::AuthBaseURL
    response_type: Code
    duration: Permanent
    state: [guid]::NewGuid().toString()
 
    These will be passed to the `_GetAuthorizationUrl` method which will
    generate the URL based on attributes from the `RedditApplication` instance.
 
    Name: GetAuthorizationUrl
    Return Type: String
    Hidden: False
    Static: False
    Definition: String GetAuthorizationUrl()
 
GetAuthorizationUrl(RedditOAuthResponseType ResponseType, RedditOAuthDuration Duration)
    The `GetAuthorizationUrl` method is used to generate an authorization
    request URL. The default URL will be constructed with following:
 
    Base URL: [RedditApplication]::AuthBaseURL
    response_type: $ResponseType
    duration: $Duration
    state: [guid]::NewGuid().toString()
 
    These will be passed to the `_GetAuthorizationUrl` method which will
    generate the URL based on attributes from the `RedditApplication` instance.
 
    Name: GetAuthorizationUrl
    Return Type: String
    Hidden: False
    Static: False
    Definition: String GetAuthorizationUrl(RedditOAuthResponseType ResponseType, RedditOAuthDuration Duration)
 
GetClientSecret()
    The `GetClientSecret` method is used to retrieve the plaintext Client Secret
    which is stored as the password of the `ClientCredential`. This is used in
    various functions to retrieve the Client Secret in order to authenticate the
    application with OAuth.
 
    Name: GetClientSecret
    Return Type: String
    Hidden: False
    Static: False
    Definition: String GetClientSecret()
 
GetUserPassword()
    The `GetUserPassword` method is used to retrieve the plaintext user password
    which is stored as the password of the `UserCredential`. This is used in
    various functions to retrieve the user password in order to authenticate
    script applications with OAuth.
 
    Name: GetUserPassword
    Return Type: String
    Hidden: False
    Static: False
    Definition: String GetUserPassword()
 
EXAMPLES
Create WebApp RedditApplication
    Import-Module PSRAW
    $ClientCredential = Get-Credential
    $App = [RedditApplication]@{
         Name = 'TestApplication'
         Description = 'This is only a test'
         RedirectUri = 'https://localhost/'
         UserAgent = 'windows:PSRAW-Unit-Tests:v1.0.0.0'
         Scope = 'read'
         ClientCredential = $ClientCredential
         Type = 'WebApp'
     }
 
Create Script RedditApplication
    Import-Module PSRAW
    $UserCredential = Get-Credential
    $ClientCredential = Get-Credential
    $App = [RedditApplication]@{
        Name = 'TestApplication'
        Description = 'This is only a test'
        RedirectUri = 'https://localhost/'
        UserAgent = 'windows:PSRAW-Unit-Tests:v1.0.0.0'
        Scope = 'read'
        ClientCredential = $ClientCredential
        UserCredential = $UserCredential
        Type = 'Script'
    }
 
Create Installed RedditApplication
    Import-Module PSRAW
    $ClientCredential = Get-Credential
    $App = [RedditApplication]@{
         Name = 'TestApplication'
         Description = 'This is only a test'
         RedirectUri = 'https://localhost/'
         UserAgent = 'windows:PSRAW-Unit-Tests:v1.0.0.0'
         Scope = 'read'
         ClientCredential = $ClientCredential
         Type = 'Installed'
     }
 
SEE ALSO
    about_RedditApplicationType
    about_RedditOAuthCode
    about_RedditOAuthDuration
    about_RedditOAuthResponseType
    about_RedditOAuthScope
    about_RedditOAuthToken
    New-RedditApplication
    Request-RedditOAuthToken
    https://github.com/reddit/reddit/wiki/API
    https://github.com/reddit/reddit/wiki/OAuth2
    https://www.reddit.com/prefs/apps
    https://www.reddit.com/wiki/api
    https://psraw.readthedocs.io/