declarations
Version:
[](https://www.npmjs.com/package/declarations)
147 lines (129 loc) • 4.3 kB
TypeScript
// Type definitions for pinterest-sdk
// Project: https://assets.pinterest.com/sdk/sdk.js
// Definitions by: Adam Burmister <https://github.com/adamburmister>
// Definitions: https://github.com/adamburmister/DefinitelyTyped
declare namespace PDK {
enum OAuthScopes { 'read_public', 'write_public', 'read_relationships', 'write_relationships' }
enum HttpMethod { 'get', 'put', 'post', 'delete' }
type OauthSession = {
accessToken?: string;
scope?: string;
error?: string;
}
interface LoginOptions {
scope: string|OAuthScopes;
method?: string;
appId?: string;
cookie?: boolean;
logging?: boolean;
session?: OauthSession;
}
interface OAuthRequestParams {
accessToken?: string;
data?: any;
}
interface InitOptions {
/** Your application ID from developer.pinterest.com */
appId?: string;
cookie?: boolean;
logging?: boolean;
session?: OauthSession;
}
/**
* Get information on the currently authenticated user
* @param cb the callback export function to handle the response
*/
export function me(callback: Function): void;
/**
* Get information on the currently authenticated user
* @param path the url path
* @param cb the callback export function to handle the response
*/
export function me(path: string, callback: Function): void;
/**
* Get information on the currently authenticated user
* @param path the url path
* @param params the parameters for the request
* @param cb the callback export function to handle the response
*/
export function me(path: string, params: Object, callback: Function): void;
/**
* Make an API call to the server
*
* The path is the only required argument.
*
* @param path URL path
* @param httpMethod HTTP verb
*/
export function request(path: string, httpMethod?: string|HttpMethod, params?: OAuthRequestParams, callback?: Function): void;
/**
* Show user login dialog, and save access token
*/
export function login(options: LoginOptions, callback: Function): void;
/**
* Remove the session of the current user.
*
* Need to call login to re-connect, unless session is saved on server.
*/
export function logout(callback?: (session: OauthSession) => any): void;
/**
* Get the active session for the current user
*/
export function getSession(): OauthSession;
/**
* Save the user specified session
*/
export function setSession(session: OauthSession, callback?: (session: OauthSession) => any): void;
/**
* Initialize the library.
*
* Typical initialization enabling all optional features:
* ```
* <script src="pin-sdk.js"></script>
* <script>
* PDK.init({
* appId : 'YOUR APP ID',
* cookie : true // enable cookies to allow the server to access the session
* });
* </script>
* ```
* The best place to put this code is right before the closing
* `</body>` tag.
*
* - Asynchronous Loading -
*
* The library makes non-blocking loading of the script easy to use by
* providing the `pAsyncInit` hook. If this global export function is defined, it
* will be executed when the library is loaded:
* ```
* <div id="p-root"></div>
* <script>
* window.pAsyncInit = function() {
* PDK.init({
* appId : 'YOUR APP ID',
* cookie : true // enable cookies to allow the server to access the session
* });
* };
*
* (function() {
* var e = document.createElement('script');
* e.src = 'pin-sdk.js';
* e.async = true;
* document.getElementById('p-root').appendChild(e);
* }());
* </script>
* ```
*/
export function init(options: InitOptions): void;
/**
* Allow an unauthenticated user to pin using a popup
*
* @param imageUrl URL for image that you want to Pin.
* @param note The Pin's description.
* @param url The URL the Pin will link to when you click through.
*/
export function pin(imageUrl: string, note: string, url: string, callback: Function): void;
}
declare module 'pinterest-sdk' {
export = PDK;
}