1
- import { useMock , mock } from './mock' ;
1
+ import { mock } from './mock' ;
2
2
import ArticleService from './articles' ;
3
3
import AuthService from './auth' ;
4
4
5
+ /**
6
+ * match response here https://github.com/gothinkster/realworld/tree/master/api
7
+ * @param {* } result
8
+ */
5
9
function buildSuccessResponse ( result ) {
6
- const output = JSON . stringify ( {
7
- status : 'success' ,
8
- data : result
9
- } ) ;
10
+ const output = JSON . stringify ( result ) ;
10
11
11
12
return ContentService . createTextOutput ( output ) . setMimeType ( ContentService . MimeType . JAVASCRIPT ) ;
12
13
}
13
14
14
15
function buildErrorResponse ( message , code ) {
15
16
const output = JSON . stringify ( {
16
- status : 'error' ,
17
- code,
17
+ errors : message ,
18
18
message
19
19
} ) ;
20
20
@@ -26,7 +26,7 @@ const doPost = e => {
26
26
// return buildErrorResponse('not authorized', 403);
27
27
// }
28
28
const request = JSON . parse ( JSON . stringify ( e ) ) ;
29
- if ( ! e . parameter . method ) {
29
+ if ( ! request . parameter . method ) {
30
30
return buildErrorResponse ( 'Post method query parameter missing.' , 404 ) ;
31
31
}
32
32
if ( request . postData . type === 'application/json' ) {
@@ -54,102 +54,120 @@ const doPost = e => {
54
54
return buildSuccessResponse ( response ) ;
55
55
case '/api/tags' :
56
56
return buildSuccessResponse ( request ) ;
57
- case e . parameter . method . indexOf ( '/api/profiles/' ) !== - 1 &&
58
- e . parameter . method . indexOf ( '/follow' ) !== - 1 :
59
- // POST /api/profiles/:username/follow
60
- // DELETE /api/profiles/:username/follow
61
- // support unfollow as well with same method
62
- response = ArticleService . FollowProfile ( request ) ;
63
- return buildSuccessResponse ( response ) ;
64
- case e . parameter . method . indexOf ( '/api/articles/' ) !== - 1 &&
65
- e . parameter . method . indexOf ( '/comments/' ) !== - 1 :
66
- // DELETE /api/articles/:slug/comments/:id
67
- response = ArticleService . DeleteArticleComment ( request ) ;
68
- return buildSuccessResponse ( response ) ;
69
- case e . parameter . method . indexOf ( '/api/articles/' ) !== - 1 &&
70
- e . parameter . method . indexOf ( '/comments' ) !== - 1 :
71
- // POST /api/articles/:slug/comments
72
- response = ArticleService . CreateArticleComment ( request ) ;
73
- return buildSuccessResponse ( response ) ;
74
- case e . parameter . method . indexOf ( '/api/articles/' ) !== - 1 &&
75
- e . parameter . method . indexOf ( '/favorite' ) !== - 1 :
76
- // POST /api/articles/:slug/favorite
77
- // DELETE /api/articles/:slug/favorite
78
- response = ArticleService . FavoriteArticle ( request ) ;
79
- return buildSuccessResponse ( response ) ;
80
- case e . parameter . method . indexOf ( '/api/articles/' ) !== - 1 :
81
- // PUT /api/articles/:slug
82
- // DELETE /api/articles/:slug
83
- response = ArticleService . CreateDeleteArticle ( request ) ;
84
- return buildSuccessResponse ( response ) ;
85
- case e . parameter . method . indexOf ( '/api/articles' ) !== - 1 :
86
- // POST /api/articles
87
- response = ArticleService . UpdateArticle ( request ) ;
88
- return buildSuccessResponse ( response ) ;
89
57
default :
90
- // check dynamic routes here?
91
- // /api/profiles/:username
92
- return buildErrorResponse ( 'Post Method not found' , 404 ) ;
58
+ break ;
93
59
}
60
+ if (
61
+ request . parameter . method . indexOf ( '/api/profiles/' ) !== - 1 &&
62
+ request . parameter . method . indexOf ( '/follow' ) !== - 1
63
+ ) {
64
+ // POST /api/profiles/:username/follow
65
+ // DELETE /api/profiles/:username/follow
66
+ // support unfollow as well with same method
67
+ response = ArticleService . FollowProfile ( request ) ;
68
+ return buildSuccessResponse ( response ) ;
69
+ }
70
+ if (
71
+ request . parameter . method . indexOf ( '/api/articles/' ) !== - 1 &&
72
+ request . parameter . method . indexOf ( '/comments/' ) !== - 1
73
+ ) {
74
+ // DELETE /api/articles/:slug/comments/:id
75
+ response = ArticleService . DeleteArticleComment ( request ) ;
76
+ return buildSuccessResponse ( response ) ;
77
+ }
78
+ if (
79
+ request . parameter . method . indexOf ( '/api/articles/' ) !== - 1 &&
80
+ request . parameter . method . indexOf ( '/comments' ) !== - 1
81
+ ) {
82
+ // POST /api/articles/:slug/comments
83
+ response = ArticleService . CreateArticleComment ( request ) ;
84
+ return buildSuccessResponse ( response ) ;
85
+ }
86
+ if (
87
+ request . parameter . method . indexOf ( '/api/articles/' ) !== - 1 &&
88
+ request . parameter . method . indexOf ( '/favorite' ) !== - 1
89
+ ) {
90
+ // POST /api/articles/:slug/favorite
91
+ // DELETE /api/articles/:slug/favorite
92
+ response = ArticleService . FavoriteArticle ( request ) ;
93
+ return buildSuccessResponse ( response ) ;
94
+ }
95
+ if ( request . parameter . method . indexOf ( '/api/articles/' ) !== - 1 ) {
96
+ // PUT /api/articles/:slug
97
+ // DELETE /api/articles/:slug
98
+ response = ArticleService . CreateDeleteArticle ( request ) ;
99
+ return buildSuccessResponse ( response ) ;
100
+ }
101
+ if ( request . parameter . method . indexOf ( '/api/articles' ) !== - 1 ) {
102
+ // POST /api/articles
103
+ response = ArticleService . UpdateArticle ( request ) ;
104
+ return buildSuccessResponse ( response ) ;
105
+ }
106
+ // check dynamic routes here?
107
+ // /api/profiles/:username
108
+ return buildErrorResponse ( 'Post Method not found' , 404 ) ;
94
109
} ;
95
-
96
110
const doGet = e => {
97
- let request = JSON . parse ( JSON . stringify ( e ) ) ;
111
+ let request = null ;
112
+ try {
113
+ request = JSON . parse ( JSON . stringify ( e ) ) ;
114
+ } catch ( error ) {
115
+ Logger . log ( 'Debugging function directly.' ) ;
116
+ }
117
+
98
118
// makes debugging online easier without deploying a new version
99
- if ( useMock ) {
119
+ /* global useMock */
120
+ if ( typeof useMock !== 'undefined' && useMock ) {
100
121
if ( mock . postMethod ) return doPost ( mock . ePost ) ;
101
122
request = mock . eGet ;
123
+ // return buildSuccessResponse(request);
102
124
}
103
- if ( ! e . parameter . method ) {
125
+ if ( ! request ) {
126
+ return buildErrorResponse ( 'GET url is empty.' , 404 ) ;
127
+ }
128
+ if ( ! request . parameter . method ) {
104
129
return buildErrorResponse ( 'GET method query parameter missing.' , 404 ) ;
105
130
}
106
131
let response = null ;
107
132
// route by method
108
- switch ( e . parameter . method ) {
133
+ switch ( request . parameter . method ) {
109
134
case '/api/user' :
110
- response = AuthService . GetProfile ( request ) ;
135
+ response = AuthService . GetCurrentProfile ( request ) ;
111
136
return buildSuccessResponse ( response ) ;
112
137
case '/api/articles' :
113
- response = ArticleService . UpdateArticle ( request ) ;
138
+ response = ArticleService . getArticle ( request ) ;
114
139
return buildSuccessResponse ( response ) ;
115
140
case '/api/articles/feed' :
116
- response = ArticleService . UpdateArticle ( request ) ;
141
+ response = ArticleService . getArticleFeed ( request ) ;
117
142
return buildSuccessResponse ( response ) ;
118
143
case '/api/tags' :
119
144
response = ArticleService . UpdateArticle ( request ) ;
120
145
return buildSuccessResponse ( response ) ;
121
- case e . parameter . method . indexOf ( '/api/profiles/' ) !== - 1 :
122
- // /api/profiles/:username
123
- response = ArticleService . UpdateArticle ( request ) ;
124
- return buildSuccessResponse ( response ) ;
125
- case e . parameter . method . indexOf ( '/api/articles/' ) !== - 1 &&
126
- e . parameter . method . indexOf ( '/comments' ) !== - 1 :
127
- // GET /api/articles/:slug/comments
128
- response = ArticleService . UpdateArticle ( request ) ;
129
- return buildSuccessResponse ( response ) ;
130
- case e . parameter . method . indexOf ( '/api/articles/' ) !== - 1 :
131
- // GET /api/articles/:slug
132
- response = ArticleService . UpdateArticle ( request ) ;
133
- return buildSuccessResponse ( response ) ;
134
146
default :
135
- // check dynamic routes here?
136
- // /api/profiles/:username
137
- return buildErrorResponse ( 'GET Method not found' , 404 ) ;
147
+ break ;
148
+ }
149
+ if ( request . parameter . method . indexOf ( '/api/profiles/' ) !== - 1 ) {
150
+ // /api/profiles/:username
151
+ response = AuthService . GetUserProfile ( request ) ;
152
+ return buildSuccessResponse ( response ) ;
153
+ }
154
+ if (
155
+ request . parameter . method . indexOf ( '/api/articles/' ) !== - 1 &&
156
+ request . parameter . method . indexOf ( '/comments' ) !== - 1
157
+ ) {
158
+ // GET /api/articles/:slug/comments
159
+ response = ArticleService . getArticleComments ( request ) ;
160
+ return buildSuccessResponse ( response ) ;
138
161
}
162
+ if ( request . parameter . method . indexOf ( '/api/articles/' ) !== - 1 ) {
163
+ // GET /api/articles/:slug
164
+ response = ArticleService . getArticles ( request ) ;
165
+ return buildSuccessResponse ( response ) ;
166
+ }
167
+ // default:
168
+ // check dynamic routes here?
169
+ // /api/profiles/:username
170
+ return buildErrorResponse ( `GET Method not found:${ request . parameter . method } ` , 404 ) ;
139
171
} ;
140
172
141
- /*
142
- function addHeadings(posts, headings) {
143
- return posts.map(function(postAsArray) {
144
- const postAsObj = {};
145
-
146
- headings.forEach(function(heading, i) {
147
- postAsObj[heading] = postAsArray[i];
148
- });
149
-
150
- return postAsObj;
151
- });
152
- }
153
- */
154
-
155
173
export { doGet , doPost } ;
0 commit comments