@@ -5,6 +5,7 @@ var AWS = require('aws-sdk');
5
5
var Script = require ( '../models/script' ) . Script ;
6
6
var User = require ( '../models/user' ) . User ;
7
7
8
+ var scriptParser = require ( '../libs/scriptParser' ) ;
8
9
var cleanFilename = require ( '../libs/helpers' ) . cleanFilename ;
9
10
var findDeadorAlive = require ( '../libs/remove' ) . findDeadorAlive ;
10
11
var userRoles = require ( '../models/userRoles.json' ) ;
@@ -125,120 +126,6 @@ exports.sendMeta = function (aReq, aRes, aNext) {
125
126
} ) ;
126
127
} ;
127
128
128
- // Modified from Count Issues (http://userscripts.org/scripts/show/69307)
129
- // By Marti Martz (http://userscripts.org/users/37004)
130
- function parseMeta ( aString , aNormalize ) {
131
- var rLine = / \/ \/ @ ( \S + ) (?: \s + ( .* ) ) ? / ;
132
- var headers = { } ;
133
- var name = null ;
134
- var prefix = null ;
135
- var key = null ;
136
- var value = null ;
137
- var line = null ;
138
- var lineMatches = null ;
139
- var lines = { } ;
140
- var uniques = {
141
- 'description' : true ,
142
- 'icon' : true ,
143
- 'name' : true ,
144
- 'namespace' : true ,
145
- 'version' : true ,
146
- 'oujs:author' : true
147
- } ;
148
- var unique = null ;
149
- var one = null ;
150
- var matches = null ;
151
-
152
- lines = aString . split ( / [ \r \n ] + / ) . filter ( function ( aElement , aIndex , aArray ) {
153
- return ( aElement . match ( rLine ) ) ;
154
- } ) ;
155
-
156
- for ( line in lines ) {
157
- var header = null ;
158
-
159
- lineMatches = lines [ line ] . replace ( / \s + $ / , '' ) . match ( rLine ) ;
160
- name = lineMatches [ 1 ] ;
161
- value = lineMatches [ 2 ] ;
162
- if ( aNormalize ) {
163
- // Upmix from...
164
- switch ( name ) {
165
- case 'homepage' :
166
- case 'source' :
167
- case 'website' :
168
- name = 'homepageURL' ;
169
- break ;
170
- case 'defaulticon' :
171
- case 'iconURL' :
172
- name = 'icon' ;
173
- break ;
174
- case 'licence' :
175
- name = 'license' ;
176
- break ;
177
- }
178
- }
179
- name = name . split ( / : / ) . reverse ( ) ;
180
- key = name [ 0 ] ;
181
- prefix = name [ 1 ] ;
182
- if ( key ) {
183
- unique = { } ;
184
- if ( prefix ) {
185
- if ( ! headers [ prefix ] ) {
186
- headers [ prefix ] = { } ;
187
- }
188
- header = headers [ prefix ] ;
189
- if ( aNormalize ) {
190
- for ( one in uniques ) {
191
- matches = one . match ( / ( .* ) : ( .* ) $ / ) ;
192
- if ( uniques [ one ] && matches && matches [ 1 ] === prefix ) {
193
- unique [ matches [ 2 ] ] = true ;
194
- }
195
- }
196
- }
197
- } else {
198
- header = headers ;
199
- if ( aNormalize ) {
200
- for ( one in uniques ) {
201
- if ( uniques [ one ] && ! / : / . test ( one ) ) {
202
- unique [ one ] = true ;
203
- }
204
- }
205
- }
206
- }
207
- if ( ! header [ key ] || aNormalize && unique [ key ] ) {
208
- header [ key ] = value || '' ;
209
- } else if ( ! aNormalize || header [ key ] !== ( value || '' )
210
- && ! ( header [ key ] instanceof Array && header [ key ] . indexOf ( value ) > - 1 ) ) {
211
- if ( ! ( header [ key ] instanceof Array ) ) {
212
- header [ key ] = [ header [ key ] ] ;
213
- }
214
- header [ key ] . push ( value || '' ) ;
215
- }
216
- }
217
- }
218
- return headers ;
219
- }
220
- exports . parseMeta = parseMeta ;
221
-
222
- exports . getMeta = function ( aChunks , aCallback ) {
223
- // We need to convert the array of buffers to a string to
224
- // parse the header. But strings are memory inefficient compared
225
- // to buffers so we only convert the least number of chunks to
226
- // get the user script header.
227
- var str = '' ;
228
- var i = 0 ;
229
- var len = aChunks . length ;
230
-
231
- for ( ; i < aChunks . length ; ++ i ) {
232
- var header = null ;
233
- str += aChunks [ i ] ;
234
- header = / ^ \/ \/ = = U s e r S c r i p t = = ( [ \s \S ] * ?) ^ \/ \/ = = \/ U s e r S c r i p t = = / m. exec ( str ) ;
235
-
236
- if ( header && header [ 1 ] ) { return aCallback ( parseMeta ( header [ 1 ] , true ) ) ; }
237
- }
238
-
239
- aCallback ( null ) ;
240
- } ;
241
-
242
129
exports . storeScript = function ( aUser , aMeta , aBuf , aCallback , aUpdate ) {
243
130
var s3 = new AWS . S3 ( ) ;
244
131
var scriptName = null ;
@@ -374,51 +261,3 @@ exports.deleteScript = function (aInstallName, aCallback) {
374
261
} ) ;
375
262
} ;
376
263
377
- // GitHub calls this on a push if a webhook is setup
378
- // This controller makes sure we have the latest version of a script
379
- exports . webhook = function ( aReq , aRes ) {
380
- var RepoManager = require ( '../libs/repoManager' ) ;
381
- var payload = null ;
382
- var username = null ;
383
- var reponame = null ;
384
- var repos = { } ;
385
- var repo = null ;
386
-
387
- aRes . end ( ) ; // Close connection
388
-
389
- // Test for know GH webhook ips: https://api.github.com/meta
390
- if ( ! aReq . body . payload ||
391
- ! / 1 9 2 \. 3 0 \. 2 5 [ 2 - 5 ] \. ( 2 5 [ 0 - 5 ] | 2 [ 0 - 4 ] [ 0 - 9 ] | 1 [ 0 - 9 ] { 2 } | [ 1 - 9 ] ? [ 0 - 9 ] ) $ /
392
- . test ( aReq . headers [ 'x-forwarded-for' ] || aReq . connection . remoteAddress ) ) {
393
- return ;
394
- }
395
-
396
- payload = JSON . parse ( aReq . body . payload ) ;
397
-
398
- // Only accept commits to the master branch
399
- if ( ! payload || payload . ref !== 'refs/heads/master' ) { return ; }
400
-
401
- // Gather all the info for the RepoManager
402
- username = payload . repository . owner . name ;
403
- reponame = payload . repository . name ;
404
-
405
- repo = repos [ reponame ] = { } ;
406
-
407
- // Find the user that corresponds the repo owner
408
- User . findOne ( { ghUsername : username } , function ( aErr , aUser ) {
409
- if ( ! aUser ) { return ; }
410
-
411
- // Gather the modified user scripts
412
- payload . commits . forEach ( function ( aCommit ) {
413
- aCommit . modified . forEach ( function ( aFilename ) {
414
- if ( aFilename . substr ( - 8 ) === '.user.js' ) {
415
- repo [ aFilename ] = '/' + encodeURI ( aFilename ) ;
416
- }
417
- } ) ;
418
- } ) ;
419
-
420
- // Update modified scripts
421
- var repoManager = RepoManager . getManager ( null , aUser , repos ) ;
422
- repoManager . loadScripts ( function ( ) { } , true ) ;
423
- } ) ;
424
- } ;
0 commit comments