Configuring PRAW
****************

* Configuration Options

  * Basic Configuration Options

  * OAuth Configuration Options

  * Reddit Site Configuration Options

  * Miscellaneous Configuration Options

  * Custom Configuration Options

Configuration options can be provided to PRAW in one of three ways:

* praw.ini Files

* Keyword Arguments to "Reddit"

* PRAW Environment Variables

Environment variables have the highest priority, followed by keyword
arguments to "Reddit", and finally settings in "praw.ini" files.


Using an HTTP or HTTPS proxy with PRAW
======================================

PRAW internally relies upon the requests package to handle HTTP
requests. Requests supports use of "HTTP_PROXY" and "HTTPS_PROXY"
environment variables in order to proxy HTTP and HTTPS requests
respectively [ref].

Given that PRAW exclusively communicates with Reddit via HTTPS, only
the "HTTPS_PROXY" option should be required.

For example, if you have a script named "prawbot.py", the
"HTTPS_PROXY" environment variable can be provided on the command line
like so:

   HTTPS_PROXY=http://localhost:3128 ./prawbot.py


Configuring a custom requests Session
=====================================

PRAW uses requests to handle networking. If your use-case requires
custom configuration, it is possible to configure a Session and then
use it with PRAW.

For example, some networks use self-signed SSL certificates when
connecting to HTTPS sites. By default, this would raise an exception
in Requests. To use a self-signed SSL certificate without an exception
from Requests, first export the certificate as a ".pem" file. Then
configure PRAW like so:

   import praw
   from requests import Session


   session = Session()
   session.verify = "/path/to/certfile.pem"
   reddit = praw.Reddit(client_id="SI8pN3DSbt0zor",
       client_secret="xaxkj7HNh8kwg8e5t4m6KvSrbTI",
       password="1guiwevlfo00esyy",
       requestor_kwargs={"session": session},  # pass Session
       user_agent="testscript by u/fakebot3",
       username="fakebot3"
   )

The code above creates a Session and configures it to use a custom
certificate, then passes it as a parameter when creating the "Reddit"
instance. Note that the example above uses a Password Flow
authentication type, but this method will work for any authentication
type.
