-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | A Haskell implementation of OAuth 1.0 protocol.
--
-- This library implements both PLAINTEXT and HMAC-SHA1 signatures as
-- defined in the specification 1.0. Currently it supports only
-- consumer related functions, but there are plans to add support
-- service providers as well. More info at:
-- http://oauth.net/
@package hoauth
@version 0.0.3
module Network.Protocol.OAuth.Request
-- | The HTTP request which must be properly authenticated with oauth. It
-- is not meant to represent the full HTTP request, instead the data
-- which matters for oauth authentication.
data Request
HTTP :: Bool -> HTTPMethod -> String -> Int -> String -> [Parameter] -> Request
-- | True means HTTPS and false means HTTP
ssl :: Request -> Bool
method :: Request -> HTTPMethod
-- | The hostname or ip address (e.g. bitforest.org)
host :: Request -> String
-- | The tcp port (e.g. 80)
port :: Request -> Int
-- | The request path (e.g. /foo/bar/)
path :: Request -> String
-- | The request parameters (both GET and POST)
params :: Request -> [Parameter]
-- | The possible HTTP methods
data HTTPMethod
GET :: HTTPMethod
POST :: HTTPMethod
DELETE :: HTTPMethod
PUT :: HTTPMethod
-- | A pair which represents a parameter (key,value).
type Parameter = (String, Maybe String)
-- | Refer to http://en.wikipedia.org/wiki/Percent-encoding for more
-- information
class PercentEncoding a
encode :: (PercentEncoding a) => a -> ByteString
encodes :: (PercentEncoding a) => [a] -> ByteString
decode :: (PercentEncoding a) => ByteString -> (a, ByteString)
decodes :: (PercentEncoding a) => ByteString -> [a]
-- | Convenience function to append an item in request's parameters list
append_param :: Request -> String -> Maybe String -> Request
-- | Applies a function to the request
apply :: Request -> (Request -> Request) -> Request
-- | Show the entire url, including possibly any oauth parameter which may
-- be present.
show_url :: Request -> ByteString
-- | The URL to perform the oauth request
show_oauthurl :: Request -> ByteString
-- | The Authorization or WWW-Authenticated headers to perform oauth
-- authentication.
show_oauthheader :: String -> Request -> ByteString
-- | Produces a urlencoded string. For convenience, it sorts the parameters
-- first, as demands the oauth protocol.
show_urlencoded :: [Parameter] -> ByteString
-- | Parses a urlencoded string.
read_urlencoded :: ByteString -> [Parameter]
-- | Convenience operator to append an item in request's parameters list
(>>+) :: Request -> (String, Maybe String) -> Request
-- | Applies a function to the request
(>>|) :: Request -> (Request -> Request) -> Request
instance Show Request
instance Read Request
instance Eq Request
instance Show HTTPMethod
instance Read HTTPMethod
instance Eq HTTPMethod
instance PercentEncoding Char
-- | Implements PLAINTEXT and HMAC-SHA1 signatures of oauth spec
-- http://oauth.net/core/1.0a#signing_process
module Network.Protocol.OAuth.Signature
-- | The signature method which will be used to sign requests.
data Method
-- | The PLAINTEXT method does not provide any security protection
-- and SHOULD only be used over a secure channel such as HTTPS. It
-- does not use the Signature Base String.
PLAINTEXT :: Method
-- | The HMAC_SHA1 signature method uses the HMAC-SHA1
-- signature algorithm as defined in
-- http://tools.ietf.org/html/rfc2104 where the Signature Base
-- String is the text and the key is the concatenated values (each first
-- encoded per Parameter Encoding) of the Consumer Secret and Token
-- Secret, separated by an & character (ASCII code 38) even if
-- empty.
HMAC_SHA1 :: Method
-- | Functions to sign requests according oauth spec.
class Signer a
sign :: (Signer a) => a -> String -> Maybe String -> Request -> String
instance Eq Method
instance Read Method
instance Show Method
instance Signer Method
-- | A pure library that implements oauth authentication protocol as
-- defined in http://oauth.net/core/1.0a.
--
-- Refer to http://oauth.net/ for more information about the oauth
-- protocol.
module Network.Protocol.OAuth.Consumer
-- | OAuth uses Tokens generated by the Service Provider instead of the
-- User's credentials in Protected Resources requests.
data Token
-- | The application which needs to authenticate using oauth.
data Consumer
-- | Creates a consumer with consumer_key and consumer_secret
Unauthenticated :: String -> String -> Consumer
-- | A consumer with consumer_key, consumer_secret and a
-- Token
Authenticated :: String -> String -> Token -> Consumer
-- | Sign a request for oauth request. Use this either to sign requests
-- with a proper Access token or to use the oauth protocol to get a token
-- from service provider.
--
-- The request you provide must contain oauth_nonce and
-- oauth_timestamp parameters properly defined.
request :: (Signer s, Show s) => Consumer -> s -> Request -> Request
-- | Process the response of the service provider. The response should be
-- an urlencoded string.
response :: Consumer -> ByteString -> Maybe Consumer
oauth_token :: Token -> String
oauth_token_secret :: Token -> String
oauth_extra :: Token -> [Parameter]
instance Show Consumer
instance Read Consumer
instance Eq Consumer
instance Show Token
instance Read Token
instance Eq Token