1.4.1 • Published 9 years ago

stash-auth v1.4.1

Weekly downloads
2
License
MIT
Repository
github
Last release
9 years ago

Stash Auth

Middleware helper to authorize with Stash (via OAuth) and easily access Stash's REST APIs

Install

npm i stash-auth --save

Use

var StashAuth = require("stash-auth");

var stash = new StashAuth(
	STASH_API_URL, // e.g. http://localhost:7990/stash
	STASH_CONSUMER_KEY, // can be anything, as long as it's the same as in Stash
	PRIVATE_KEY_DATA, // fs.readFileSync("server.key", "utf8")
	STASH_CALLBACK_FULL_URL // full, remote-accessable url (including protocol, host and path) to the auth callback route on this server
);

app.use("/stash/auth-callback", stash.authCallback);

The stash.auth middleware will authorize with Stash before redirecting back to the original URL (through the auth callback route) If a user is already authorized, it invokes the next middleware, where you have access to req.stash

app.use("/commits/:project/:repo/", stash.auth, function (req, res, next) {
	var project = req.params.project;
	var repo = req.params.repo;
	var api_url = "api/1.0/projects/" + project + "/repos/" + repo + "/commits";
	req.stash.get(api_url, function (err, data) {
		if (err) {
			next(err);
		} else {
			res.send(data);
		}
	});
});

There are methods on req.stash corresponding to HTTP methods supported by 1j01/node-oauth: get, post, put and delete.

Each method takes the following parameters:

  • url: String, under STASH_API_URL/rest/
  • params: optional Object, adds parameters to the query string of the URL
  • callback: function(err, data){ ... } where data is the parsed JSON

You can pass parameters through the url, or with params, or you can mix the two, e.g. req.stash.get("api/1.0/quux?foo=1", {bar: 2})

Additionally there is a getAll method, which will try to fetch every item from every page in a paged API. This method isn't particularly recommended, as it circumvents not just the pagination, but the purpose of the pagination.

1.4.1

9 years ago

1.4.0

9 years ago

1.3.1

9 years ago

1.3.0

9 years ago

1.2.1

9 years ago

1.2.0

9 years ago

1.1.0

9 years ago

1.0.0

9 years ago