@@ -10,19 +10,24 @@ var AWS = require('aws-sdk');
1010
1111var Script = require ( '../models/script' ) . Script ;
1212var User = require ( '../models/user' ) . User ;
13+ var RepoManager = require ( '../libs/repoManager' ) ;
1314
1415var cleanFilename = require ( '../libs/helpers' ) . cleanFilename ;
1516var findDeadorAlive = require ( '../libs/remove' ) . findDeadorAlive ;
1617var userRoles = require ( '../models/userRoles.json' ) ;
1718
1819var bucketName = 'OpenUserJS.org' ;
1920
21+ var DEV_AWS_URL = null ;
22+
2023if ( isPro ) {
21- AWS . config . update ( { region : 'us-east-1' } ) ;
24+ AWS . config . update ( {
25+ region : 'us-east-1'
26+ } ) ;
2227} else {
2328 // You need to install (and ruby too): https://github.com/jubos/fake-s3
2429 // Then run the fakes3.sh script or: fakes3 -r fakeS3 -p 10001
25- var DEV_AWS_URL = process . env . DEV_AWS_URL || 'http://localhost:10001' ;
30+ DEV_AWS_URL = process . env . DEV_AWS_URL || 'http://localhost:10001' ;
2631 AWS . config . update ( {
2732 accessKeyId : 'fakeId' ,
2833 secretAccessKey : 'fakeKey' ,
@@ -46,8 +51,8 @@ exports.caseInsensitive = caseInsensitive;
4651function caseSensitive ( aInstallName , aMoreThanInstallName ) {
4752
4853 var rMatchExpression = aMoreThanInstallName ? / ^ ( .* ) \/ ( .* ) \/ ( .* ) \/ ( .* ) $ / : / ^ ( .* ) \/ ( .* ) $ / ;
49- var username = '' ;
5054 var char = null ;
55+ var username = '' ;
5156 var rExpression = null ;
5257
5358 var matches = aInstallName . match ( rMatchExpression ) ;
@@ -101,12 +106,13 @@ function caseSensitive(aInstallName, aMoreThanInstallName) {
101106exports . caseSensitive = caseSensitive ;
102107
103108exports . getSource = function ( aReq , aCallback ) {
104- var s3 = new AWS . S3 ( ) ;
105109 var installName = getInstallName ( aReq ) ;
106-
107110 Script . findOne ( { installName : caseSensitive ( installName ) } ,
108111 function ( aErr , aScript ) {
109112 var s3Object = null ;
113+ var s3 = new AWS . S3 ( ) ;
114+
115+ // WARNING: Partial error handling at this stage
110116
111117 if ( ! aScript ) {
112118 return aCallback ( null ) ;
@@ -156,7 +162,9 @@ exports.sendScript = function (aReq, aRes, aNext) {
156162 ++ aScript . installs ;
157163 ++ aScript . installsSinceUpdate ;
158164
159- aScript . save ( function ( aErr , aScript ) { } ) ;
165+ aScript . save ( function ( aErr , aScript ) {
166+ // WARNING: Resaving the script... WHY?
167+ } ) ;
160168 } ) ;
161169} ;
162170
@@ -195,7 +203,8 @@ exports.sendMeta = function (aReq, aRes, aNext) {
195203 data = meta [ prefix ] [ key ] ;
196204 if ( data instanceof Array ) {
197205 data . forEach ( function ( aValue ) {
198- aRes . write ( '// @' + prefix + ':' + key + ( aValue ? whitespace + aValue : '' ) + '\n' ) ;
206+ aRes . write ( '// @' + prefix + ':' + key + ( aValue ? whitespace + aValue : '' ) +
207+ '\n' ) ;
199208 } ) ;
200209 }
201210 else {
@@ -240,15 +249,19 @@ exports.findMeta = findMeta;
240249// Modified from Count Issues (http://userscripts.org/scripts/show/69307)
241250// By Marti Martz (http://userscripts.org/users/37004)
242251function parseMeta ( aString , aNormalize ) {
252+ var lines = { } ;
243253 var rLine = / \/ \/ @ ( \S + ) (?: \s + ( .* ) ) ? / ;
254+ var line = null ;
255+ var header = null ;
256+
244257 var headers = { } ;
258+ var lineMatches = null ;
245259 var name = null ;
246- var prefix = null ;
247- var key = null ;
248260 var value = null ;
249- var line = null ;
250- var lineMatches = null ;
251- var lines = { } ;
261+ var key = null ;
262+ var prefix = null ;
263+ var unique = null ;
264+ var one = null ;
252265 var uniques = {
253266 'description' : true ,
254267 'icon' : true ,
@@ -258,16 +271,15 @@ function parseMeta(aString, aNormalize) {
258271 'version' : true ,
259272 'oujs:author' : true
260273 } ;
261- var unique = null ;
262- var one = null ;
263274 var matches = null ;
264275
276+
265277 lines = aString . split ( / [ \r \n ] + / ) . filter ( function ( aElement , aIndex , aArray ) {
266278 return ( aElement . match ( rLine ) ) ;
267279 } ) ;
268280
269281 for ( line in lines ) {
270- var header = null ;
282+ header = null ;
271283
272284 lineMatches = lines [ line ] . replace ( / \s + $ / , '' ) . match ( rLine ) ;
273285 name = lineMatches [ 1 ] ;
@@ -343,9 +355,9 @@ exports.getMeta = function (aChunks, aCallback) {
343355 // parse the header. But strings are memory inefficient compared
344356 // to buffers so we only convert the least number of chunks to
345357 // get the user script header.
346- var str = '' ;
347358 var i = 0 ;
348359 var header = null ;
360+ var str = '' ;
349361
350362 for ( ; i < aChunks . length ; ++ i ) {
351363 header = null ;
@@ -361,21 +373,21 @@ exports.getMeta = function (aChunks, aCallback) {
361373} ;
362374
363375exports . storeScript = function ( aUser , aMeta , aBuf , aCallback , aUpdate ) {
364- var s3 = new AWS . S3 ( ) ;
376+ var isLibrary = typeof aMeta === 'string' ;
365377 var name = null ;
366378 var scriptName = null ;
379+ var author = null ;
380+ var collaborators = null ;
367381 var installName = aUser . name + '/' ;
368- var isLibrary = typeof aMeta === 'string' ;
369- var libraries = [ ] ;
382+ var collaboration = false ;
370383 var requires = null ;
371384 var match = null ;
372- var collaboration = false ;
373- var collaborators = null ;
374- var author = null ;
375385 var rLibrary = new RegExp (
376386 '^(?:(?:(?:https?:)?\/\/' +
377387 ( isPro ? 'openuserjs\.org' : 'localhost:8080' ) +
378388 ')?\/(?:libs\/src|src\/libs)\/)?(.*?)([^\/]*\.js)$' , '' ) ;
389+ var libraries = [ ] ;
390+
379391
380392 if ( ! aMeta ) {
381393 return aCallback ( null ) ;
@@ -468,7 +480,7 @@ exports.storeScript = function (aUser, aMeta, aBuf, aCallback, aUpdate) {
468480 if ( ! aScript . isLib ) {
469481 if ( collaboration &&
470482 ( findMeta ( script . meta , 'oujs.author' ) !== findMeta ( aMeta , 'oujs.author' ) ||
471- JSON . stringify ( findMeta ( script . meta , 'oujs.collaborator' ) ) !=
483+ JSON . stringify ( findMeta ( script . meta , 'oujs.collaborator' ) ) !=
472484 JSON . stringify ( collaborators ) ) ) {
473485 return aCallback ( null ) ;
474486 }
@@ -482,8 +494,14 @@ exports.storeScript = function (aUser, aMeta, aBuf, aCallback, aUpdate) {
482494 }
483495
484496 aScript . save ( function ( aErr , aScript ) {
497+ var s3 = new AWS . S3 ( ) ;
498+
499+ // WARNING: No error handling at this stage
500+
485501 s3 . putObject ( { Bucket : bucketName , Key : installName , Body : aBuf } ,
486502 function ( aErr , aData ) {
503+ var userDoc = null ;
504+
487505 // Don't save a script if storing failed
488506 if ( aErr ) {
489507 console . error ( aUser . name , '-' , installName ) ;
@@ -493,13 +511,15 @@ exports.storeScript = function (aUser, aMeta, aBuf, aCallback, aUpdate) {
493511 }
494512
495513 if ( aUser . role === userRoles . length - 1 ) {
496- var userDoc = aUser ;
514+ userDoc = aUser ;
497515 if ( ! userDoc . save ) {
498516 // We're probably using req.session.user which may have gotten serialized.
499517 userDoc = new User ( userDoc ) ;
500518 }
501519 -- userDoc . role ;
502- userDoc . save ( function ( aErr , aUser ) { aCallback ( aScript ) ; } ) ;
520+ userDoc . save ( function ( aErr , aUser ) {
521+ aCallback ( aScript ) ;
522+ } ) ;
503523 } else {
504524 aCallback ( aScript ) ;
505525 }
@@ -512,6 +532,9 @@ exports.deleteScript = function (aInstallName, aCallback) {
512532 Script . findOne ( { installName : caseSensitive ( aInstallName ) } ,
513533 function ( aErr , aScript ) {
514534 var s3 = new AWS . S3 ( ) ;
535+
536+ // WARNING: No error handling at this stage
537+
515538 s3 . deleteObject ( { Bucket : bucketName , Key : aScript . installName } ,
516539 function ( aErr ) {
517540 if ( ! aErr ) {
@@ -526,7 +549,6 @@ exports.deleteScript = function (aInstallName, aCallback) {
526549// GitHub calls this on a push if a webhook is setup
527550// This controller makes sure we have the latest version of a script
528551exports . webhook = function ( aReq , aRes ) {
529- var RepoManager = require ( '../libs/repoManager' ) ;
530552 var payload = null ;
531553 var username = null ;
532554 var reponame = null ;
@@ -538,7 +560,7 @@ exports.webhook = function (aReq, aRes) {
538560 // Test for know GH webhook ips: https://api.github.com/meta
539561 if ( ! aReq . body . payload ||
540562 ! / 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 ] ) $ /
541- . test ( aReq . connection . remoteAddress ) ) {
563+ . test ( aReq . connection . remoteAddress ) ) {
542564 return ;
543565 }
544566
@@ -557,6 +579,10 @@ exports.webhook = function (aReq, aRes) {
557579
558580 // Find the user that corresponds the repo owner
559581 User . findOne ( { ghUsername : username } , function ( aErr , aUser ) {
582+ var repoManager = null ;
583+
584+ // WARNING: Partial error handling at this stage
585+
560586 if ( ! aUser ) {
561587 return ;
562588 }
@@ -571,7 +597,8 @@ exports.webhook = function (aReq, aRes) {
571597 } ) ;
572598
573599 // Update modified scripts
574- var repoManager = RepoManager . getManager ( null , aUser , repos ) ;
575- repoManager . loadScripts ( function ( ) { } , true ) ;
600+ repoManager = RepoManager . getManager ( null , aUser , repos ) ;
601+ repoManager . loadScripts ( function ( ) {
602+ } , true ) ;
576603 } ) ;
577604} ;
0 commit comments