1+ import Promise from 'bluebird' ;
2+ import axios from 'axios' ;
3+
4+ axios . interceptors . response . use ( response => {
5+ return response . data ;
6+ } , error => {
7+ return Promise . reject ( error . response . data ) ;
8+ } ) ;
9+
10+ const request = ( url , process ) => {
11+ const tokens = url . split ( '/' ) ;
12+ const baseURL = / ^ h t t p s ? : \/ \/ / i. test ( url ) ? '' : 'https://api.github.com' ;
13+ return ( ...args ) => {
14+ return new Promise ( ( resolve , reject ) => {
15+ const mappedURL = baseURL + tokens . map ( ( token , i ) => token . startsWith ( ':' ) ? args . shift ( ) : token ) . join ( '/' ) ;
16+ return resolve ( process ( mappedURL , args ) ) ;
17+ } ) ;
18+ } ;
19+ } ;
20+
21+ const GET = URL => {
22+ return request ( URL , ( mappedURL , args ) => {
23+ const [ params ] = args ;
24+ return axios . get ( mappedURL , { params } ) ;
25+ } ) ;
26+ } ;
27+
28+ const DELETE = URL => {
29+ return request ( URL , ( mappedURL , args ) => {
30+ const [ params ] = args ;
31+ return axios . delete ( mappedURL , { params } ) ;
32+ } ) ;
33+ } ;
34+
35+ const POST = URL => {
36+ return request ( URL , ( mappedURL , args ) => {
37+ const [ body , params ] = args ;
38+ return axios . post ( mappedURL , body , { params } ) ;
39+ } ) ;
40+ } ;
41+
42+ const PUT = URL => {
43+ return request ( URL , ( mappedURL , args ) => {
44+ const [ body , params ] = args ;
45+ return axios . put ( mappedURL , body , { params } ) ;
46+ } ) ;
47+ } ;
48+
49+ const PATCH = URL => {
50+ return request ( URL , ( mappedURL , args ) => {
51+ const [ body , params ] = args ;
52+ return axios . patch ( mappedURL , body , { params } ) ;
53+ } ) ;
54+ } ;
55+
56+ const GitHubApi = {
57+ auth : ( client_id , client_secret ) => axios . defaults . params = { client_id, client_secret } ,
58+ listCommits : GET ( '/repos/:owner/:repo/commits' ) ,
59+ getAccessToken : code => axios . post ( 'https://github.com/login/oauth/access_token' , { code } , { headers : { Accept : 'application/json' } } ) ,
60+ } ;
61+
62+ export {
63+ GitHubApi ,
64+ } ;
0 commit comments