@freeyeon2/oauth-1.0a
Version:
OAuth 1.0a Request Authorization for Node and Browser.
218 lines (189 loc) • 4.4 kB
TypeScript
// Type definitions for oauth-1.0a v2.2.3
// Project: oauth1.0a
// Definitions by: Ddo <http://ddo.me>
export as namespace OAuth
export = OAuth
declare class OAuth {
body_hash_function: OAuth.BodyHashFunction
consumer: OAuth.Consumer
hash_function: OAuth.HashFunction
last_ampersand: boolean
nonce_length: number
parameter_seperator: string
realm: string
signature_metho: string
version: string
timestamp: number
nonce: string
token: string
secret: string
verifier: string
constructor(opts?: OAuth.Options)
/**
* Sign a request.
*/
authorize(
request: OAuth.RequestOptions,
token?: OAuth.Token,
): OAuth.Authorization
/**
* Generate the oauth signature (i.e. oauth_signature).
*/
getSignature(
request: OAuth.RequestOptions,
token_secret: string | undefined,
oauth_data: OAuth.Data,
): string
/**
* Generate the body signature (i.e. oauth_body_hash).
*/
getBodyHash(
request: OAuth.RequestOptions,
token_secret: string | undefined,
): string
/**
* Encode the request attributes.
*
* Base String = "<Method>&<Base Url>&<ParameterString>"
*/
getBaseString(request: OAuth.RequestOptions, oauth_data: OAuth.Data): string
/**
* Encode the oauth data and the request parameter,
*/
getParameterString(
request: OAuth.RequestOptions,
oauth_data: OAuth.Data,
): string
/**
* Generate the signing key.
*
* Key = "<Consumer Key>&<Token Key or an empty string>"
*/
getSigningKey(token_secret: string | undefined): string
/**
* Return the the URL without its querystring.
*/
getBaseUrl(url: string): string
/**
* Parse querystring / form data.
*/
deParam(str: string): OAuth.Param
/**
* Parse querystring from an url
*/
deParamUrl(url: string): OAuth.Param
/**
* Form data encoding.
*/
percentEncode(str: string): string
/**
* Convert OAuth authorization data to an http header.
*/
toHeader(data: OAuth.Authorization): OAuth.Header
/**
* Generate a random nonce.
*/
getNonce(): string
/**
* Generate a current timestamp in second.
*/
getTimeStamp(): number
/**
* Merge two object into a new one.
*/
mergeObject<T, U>(obj1: T, obj2: U): T & U
/**
* Sort an object properties by keys.
*/
sortObject<O extends { [k: string]: any }, K extends string>(
obj: O,
): Array<{ key: keyof O; value: O[K] }>
}
declare namespace OAuth {
/**
* OAuth data, including the signature.
*/
export interface Authorization extends Data {
oauth_signature: string
}
/**
* Method used to generate the body hash.
*
* Note: the key is used for implementation HMAC algorithms for the body hash,
* but typically it should return SHA1 hash of base_string.
*/
export type BodyHashFunction = (base_string: string, key: string) => string
/**
* OAuth key/secret pair.
*/
export interface Consumer {
key: string
secret: string
}
/**
* OAuth data, excluding the signature.
*/
export interface Data {
oauth_consumer_key: string
oauth_nonce: string
oauth_signature_method: string
oauth_timestamp: number
oauth_version: string
oauth_token?: string
oauth_body_hash?: string
oauth_verifier?: string
oauth_token?: string
oauth_secret?: string
}
/**
* Method used to hash the the OAuth and form/querystring data.
*/
export type HashFunction = (base_string: string, key: string) => string
/**
* Authorization header.
*/
export interface Header {
Authorization: string
}
/**
* OAuth options.
*/
export interface Options {
body_hash_function?: BodyHashFunction
consumer: Consumer
hash_function?: HashFunction
last_ampersand?: boolean
nonce_length?: number
parameter_seperator?: string
realm?: string
signature_method?: string
version?: string
timestamp: number
nonce: string
token?: string
secret?: string
verifier?: string
}
/**
* Extra data.
*/
export interface Param {
[key: string]: string | string[]
}
/**
* Request options.
*/
export interface RequestOptions {
url: string
method: string
data?: any
includeBodyHash?: boolean
}
/**
* OAuth token key/secret pair.
*/
export interface Token {
key: string
secret: string
}
}