项目作者: 1j01

项目描述 :
Authorization middleware for Atlassian Stash in Node.js
高级语言: CoffeeScript
项目地址: git://github.com/1j01/stash-auth.git
创建时间: 2015-04-30T23:47:59Z
项目社区:https://github.com/1j01/stash-auth

开源协议:

下载


Stash Auth

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

Install

npm i stash-auth --save

Use

  1. var StashAuth = require("stash-auth");
  2. var stash = new StashAuth(
  3. STASH_API_URL, // e.g. http://localhost:7990/stash
  4. STASH_CONSUMER_KEY, // can be anything, as long as it's the same as in Stash
  5. PRIVATE_KEY_DATA, // fs.readFileSync("server.key", "utf8")
  6. STASH_CALLBACK_FULL_URL // full, remote-accessable url (including protocol, host and path) to the auth callback route on this server
  7. );
  8. 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

  1. app.use("/commits/:project/:repo/", stash.auth, function (req, res, next) {
  2. var project = req.params.project;
  3. var repo = req.params.repo;
  4. var api_url = "api/1.0/projects/" + project + "/repos/" + repo + "/commits";
  5. req.stash.get(api_url, function (err, data) {
  6. if (err) {
  7. next(err);
  8. } else {
  9. res.send(data);
  10. }
  11. });
  12. });

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.