Skip to content

Commit

Permalink
Merge pull request #44 from hayes/remove_cloning
Browse files Browse the repository at this point in the history
removed cloning
  • Loading branch information
hayes committed Mar 28, 2014
2 parents e79669d + d4ed7bb commit 1b16c69
Show file tree
Hide file tree
Showing 16 changed files with 84 additions and 409 deletions.
6 changes: 0 additions & 6 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -40,10 +40,6 @@ function unpm(ns, config) {
router.add('PUT', routes.publish, packages.publish)
router.add('GET', routes.get_tarball, packages.get_tarball)
router.add('GET', routes.get_package, packages.get_package)

// clone from public npm
router.add('POST', routes.clone, packages.clone)
router.add('POST', routes.get_deps, packages.get_deps)
}

var routes = {
Expand All @@ -52,8 +48,6 @@ var routes = {
, get_user: '/-/user/org.couchdb.user:*'
, get_tarball: '/:name/-/*-*.tgz'
, publish: '/:name'
, clone: '/clone/:name/:version?'
, get_deps: '/get_deps/:name/:version?'
, session: '/_session'
, register: '/-/user/org.couchdb.user:*'
, update_user: '/-/user/org.couchdb.user:*/*'
Expand Down
3 changes: 0 additions & 3 deletions lib/config.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,6 @@
"pathname": ""
},
"base_pathname": "",
"auto_clone_deps": true,
"public_registry": "http://registry.npmjs.org",
"caching_proxy": false,
"crypto": {
"algorithm": "sha512",
"saltLength": 30,
Expand Down
28 changes: 9 additions & 19 deletions lib/controllers/auth/register.js
Original file line number Diff line number Diff line change
@@ -1,36 +1,26 @@
var responses = require('../../responses')
, guard = require('../../utils/guard')
, User = require('../../models/User')
, concat = require('concat-stream')
, load = require('../../utils/load')

module.exports = req_handler

function req_handler(req, res, route, respond) {
var username = route.splats[0]

var load = concat(function(data) {
try {
register(username, JSON.parse(data.toString()))
} catch(err) {
respond(err)
}
})
load(req, guard(register, respond))

load.on('error', respond)
req.pipe(load)

function register(username, data) {
function register(data) {
User.find(username, function(err, user) {
if(user) {
return responses.conflict(req, res)
}

User.create(username, data, function(err) {
if(err) {
return respond(err)
}

respond(null, 201, data)
})
User.create(username, data, guard(created, respond))
})
}

function created() {
respond(null, 201, data)
}
}
39 changes: 15 additions & 24 deletions lib/controllers/auth/sessions.js
Original file line number Diff line number Diff line change
@@ -1,42 +1,33 @@
var responses = require('../../responses')
, guard = require('../../utils/guard')
, User = require('../../models/User')
, context = require('../../context')
, concat = require('concat-stream')
, load = require('../../utils/load')

module.exports.create = session_request

function session_request(req, res, route, respond) {
var sessions = context().sessions
load(req, guard(create_session))

var load = concat(function(data) {
try {
data = JSON.parse(data)
create_session(data.name, data.password)
} catch(err) {
respond(err)
}
})
function create_session(data) {
var sessions = context().sessions
, username = data.username
, password = data.password

load.on('error', respond)
req.pipe(load)

function create_session(username, password) {
User.auth(username, password, function(err, user) {
if(err || !user) {
return response.unauthorized(req, res)
}

sessions.set(user, function() {
if(err) {
return respond(err)
}
sessions.set(user, guard(got_session, respond))
})
}

respond(null, 201, {
'ok': true
, 'name': username
, 'roles': []
})
})
function got_session() {
respond(null, 201, {
'ok': true
, 'name': username
, 'roles': []
})
}
}
16 changes: 4 additions & 12 deletions lib/controllers/auth/update.js
Original file line number Diff line number Diff line change
@@ -1,24 +1,16 @@
var responses = require('../../responses')
, guard = require('../../utils/guard')
, User = require('../../models/User')
, concat = require('concat-stream')
, load = require('../../utils/load')

module.exports = req_handler

function req_handler(req, res, route, respond) {
var username = route.splats[0]

var load = concat(function(data) {
try {
update(username, JSON.parse(data.toString()))
} catch(err) {
respond(err)
}
})

load.on('error', respond)
req.pipe(load)
load(req, guard(update, respond))

function update(username, data) {
function update(data) {
var pass = new Buffer(req.headers.authorization.split(' ')[1], 'base64')
.toString().split(':')[1]

Expand Down
16 changes: 0 additions & 16 deletions lib/controllers/packages/clone.js

This file was deleted.

29 changes: 0 additions & 29 deletions lib/controllers/packages/get_deps.js

This file was deleted.

40 changes: 17 additions & 23 deletions lib/controllers/packages/get_package.js
Original file line number Diff line number Diff line change
@@ -1,47 +1,41 @@
var Package = require('../../models/Package')
, responses = require('../../responses')
, context = require('../../context')
, semver = require('semver')
, path = require('path')
, url = require('url')

module.exports = get_package

function get_package(req, res, route, respond) {
var version = route.params.version
, name = route.params.name
, tried_proxy = false

get_meta()

function get_meta() {
if(!version) {
return Package.get_meta(name, return_meta)
}

return Package.get_version_meta(name, version, return_meta)
if(!version) {
return Package.get_meta(name, return_meta)
}

Package.get_version_meta(name, version, return_meta)

function return_meta(err, meta) {
var base_url = url.format(context().host)

if(err) {
return respond(err)
}

if(!meta) {
if(!tried_proxy && context().config.caching_proxy) {
return Package.clone(name, version, false, cloned)
}

return responses.not_found(req, res)
}

return respond(null, 200, meta)
}

function cloned(err) {
if(err) {
return respond(err)
}
Object.keys(meta.versions).forEach(function(version) {
meta.versions[version].dist.tarball = path.join(
base_url
, name
, '-'
, name + '-' + version + '.tgz'
)
})

tried_proxy = true
get_meta()
return respond(null, 200, meta)
}
}
2 changes: 0 additions & 2 deletions lib/controllers/packages/index.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
module.exports.clone = require('./clone')
module.exports.get_deps = require('./get_deps')
module.exports.get_package = require('./get_package')
module.exports.get_tarball = require('./get_tarball')
module.exports.publish = require('./publish')
31 changes: 4 additions & 27 deletions lib/controllers/packages/publish.js
Original file line number Diff line number Diff line change
@@ -1,51 +1,28 @@
var Package = require('../../models/Package')
, responses = require('../../responses')
, context = require('../../context')
, concat = require('concat-stream')
, guard = require('../../utils/guard')
, load = require('../../utils/load')

module.exports = publish

function publish(req, res, route, respond) {
var data = []
, version

var load = concat(function(data) {
try {
get_versions(JSON.parse(data))
} catch(err) {
respond(err)
}
})

load.on('error', respond)
req.pipe(load)
load(req, guard(get_versions, respond))

function get_versions(meta) {
var latest = meta['dist-tags'].latest
, config = context().config

Package.get_versions(meta.name, function(err, versions) {
if(versions && versions.indexOf(latest) !== -1) {
return responses.conflict(req, res)
}

Package.publish(meta, config.auto_clone_deps ? clone_deps : created)
Package.publish(meta, created)
})
}

function clone_deps(err, data) {
if(err || !data) {
return respond(err || new Error('Package or version not found.'))
}

Package.get_deps(
data.versions[data['dist-tags'].latest]
, {}
, true
, created
)
}

function created(err, data) {
respond(err, 201, data)
}
Expand Down
20 changes: 8 additions & 12 deletions lib/models/Package/index.js → lib/models/Package.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
var guard = require('../../utils/guard')
, context = require('../../context')
, get_deps = require('./get_deps')
var guard = require('../utils/guard')
, context = require('../context')
, request = require('request')
, clone = require('./clone')
, semver = require('semver')
, path = require('path')
, Package = {}
Expand All @@ -11,9 +9,7 @@ module.exports = Package

Package.get_version_meta = get_version_meta
Package.get_versions = get_versions
Package.get_deps = get_deps
Package.publish = publish
Package.clone = clone
Package.add = add

;['get_meta', 'set_meta', 'get_tarball', 'set_tarball'].forEach(function(key) {
Expand All @@ -30,19 +26,19 @@ Package.add = add
})

function get_versions(name, done) {
Package.get_meta(name, guard(function(err, meta) {
if(err || !meta) {
return done(err)
Package.get_meta(name, guard(function(meta) {
if(!meta) {
return done()
}

done(null, Object.keys(meta.versions))
}, done))
}

function get_version_meta(name, version, done) {
Package.get_meta(name, guard(function(err, meta) {
if(err || !meta) {
return done(err)
Package.get_meta(name, guard(function(meta) {
if(!meta) {
return done()
}

version = meta['dist-tags'][version || 'latest'] || semver.maxSatisfying(
Expand Down

0 comments on commit 1b16c69

Please sign in to comment.