1+ /**
2+ @name : angular-github-api-factory
3+ @version : 0.5.0 (06-01-2016)
4+ @author : Jonathan Hornung
5+ @url : https://github.com/JohnnyTheTank/angular-github-api-factory#readme
6+ @license : MIT
7+ */
8+ "use strict" ;
9+
10+ angular . module ( "jtt_github" , [ ] )
11+ . factory ( 'githubFactory' , [ '$http' , 'githubSearchDataService' , function ( $http , githubSearchDataService ) {
12+
13+ var githubFactory = { } ;
14+
15+ githubFactory . getUser = function ( _params ) {
16+ var searchData = githubSearchDataService . getNew ( "user" , _params ) ;
17+ return $http ( {
18+ method : 'GET' ,
19+ url : searchData . url ,
20+ params : searchData . object ,
21+ } ) ;
22+ } ;
23+
24+ githubFactory . getReposByUser = function ( _params ) {
25+ var searchData = githubSearchDataService . getNew ( "reposByUser" , _params ) ;
26+ return $http ( {
27+ method : 'GET' ,
28+ url : searchData . url ,
29+ params : searchData . object ,
30+ } ) ;
31+ } ;
32+
33+ githubFactory . getReposByName = function ( _params ) {
34+ var searchData = githubSearchDataService . getNew ( "reposByName" , _params ) ;
35+ return $http ( {
36+ method : 'GET' ,
37+ url : searchData . url ,
38+ params : searchData . object ,
39+ } ) ;
40+ } ;
41+
42+ githubFactory . getRepoByUserAndName = function ( _params ) {
43+ var searchData = githubSearchDataService . getNew ( "repoByUserAndName" , _params ) ;
44+ return $http ( {
45+ method : 'GET' ,
46+ url : searchData . url ,
47+ params : searchData . object ,
48+ } ) ;
49+ } ;
50+
51+ githubFactory . getEventsByUser = function ( _params ) {
52+ var searchData = githubSearchDataService . getNew ( "eventsByUser" , _params ) ;
53+ return $http ( {
54+ method : 'GET' ,
55+ url : searchData . url ,
56+ params : searchData . object ,
57+ } ) ;
58+ } ;
59+
60+ githubFactory . getEventsFromRepoByUserAndName = function ( _params ) {
61+ var searchData = githubSearchDataService . getNew ( "eventsFromRepoByUserAndName" , _params ) ;
62+ return $http ( {
63+ method : 'GET' ,
64+ url : searchData . url ,
65+ params : searchData . object ,
66+ } ) ;
67+ } ;
68+
69+ return githubFactory ;
70+ } ] )
71+ . service ( 'githubSearchDataService' , function ( ) {
72+ this . getApiBaseUrl = function ( _params ) {
73+ return "https://api.github.com/" ;
74+ } ;
75+
76+ this . fillDataInObjectByList = function ( _object , _params , _list ) {
77+
78+ angular . forEach ( _list , function ( value , key ) {
79+ if ( typeof _params [ value ] !== "undefined" ) {
80+ _object . object [ value ] = _params [ value ] ;
81+ }
82+ } ) ;
83+
84+ return _object ;
85+ } ;
86+
87+ this . getNew = function ( _type , _params ) {
88+ var githubSearchData = {
89+ object : {
90+ access_token : _params . access_token ,
91+ } ,
92+ url : "" ,
93+ } ;
94+
95+ if ( typeof _params . per_page !== "undefined" ) {
96+ githubSearchData . object . per_page = _params . per_page ;
97+ }
98+
99+ switch ( _type ) {
100+ case "user" :
101+ githubSearchData . object . per_page = undefined ;
102+ githubSearchData = this . fillDataInObjectByList ( githubSearchData , _params , [ ] ) ;
103+ githubSearchData . url = this . getApiBaseUrl ( ) + "users/" + _params . user ;
104+ break ;
105+
106+ case "reposByUser" :
107+ githubSearchData = this . fillDataInObjectByList ( githubSearchData , _params , [
108+ 'q' , 'sort' , 'order' , 'page'
109+ ] ) ;
110+ githubSearchData . url = this . getApiBaseUrl ( ) + "users/" + _params . user + "/repos" ;
111+ break ;
112+
113+ case "reposByName" :
114+ githubSearchData = this . fillDataInObjectByList ( githubSearchData , _params , [
115+ 'sort' , 'order' , 'page'
116+ ] ) ;
117+ githubSearchData . url = this . getApiBaseUrl ( ) + "search/repositories?q=" + _params . q ;
118+ break ;
119+
120+ case "repoByUserAndName" :
121+ githubSearchData . object = {
122+ access_token : _params . access_token ,
123+ } ;
124+
125+ githubSearchData = this . fillDataInObjectByList ( githubSearchData , _params , [ ] ) ;
126+
127+ githubSearchData . url = this . getApiBaseUrl ( ) + "repos/" + _params . user + "/" + _params . repo ;
128+ break ;
129+
130+ case "eventsByUser" :
131+ githubSearchData = this . fillDataInObjectByList ( githubSearchData , _params , [
132+ 'q' , 'sort' , 'order' , 'page'
133+ ] ) ;
134+ githubSearchData . url = this . getApiBaseUrl ( ) + "users/" + _params . user + "/events" ;
135+ break ;
136+
137+ case "eventsFromRepoByUserAndName" :
138+ githubSearchData = this . fillDataInObjectByList ( githubSearchData , _params , [
139+ 'q' , 'sort' , 'order' , 'page'
140+ ] ) ;
141+ githubSearchData . url = this . getApiBaseUrl ( ) + "repos/" + _params . user + "/" + _params . repo + "/events" ;
142+ break ;
143+ }
144+
145+ return githubSearchData ;
146+ } ;
147+ } ) ;
0 commit comments