hyper-path

Traverse a hyper api

hyper-path

Traverse a hyper api

$ npm install hyper-path
$ component install hypergroup/hyper-path
var client = require('hyper-path');
 
/**
 * create a agent
 */
 
function agent(fn) {
  // make a request to the root of the api here and call 
  // fn(err, body); 
}
 
agent.get = function(hreffn) {
  // make a request to the href and call 
  // fn(err, body); 
}
 
client('.path.to.desired.property', agent)
  .on(function(errproperty) {
    // property will be set to the value at the end of the passed path, deliminated with '.' 
    // if any of the intermediate properties are  a short-circuit will occur and return `undefined` 
  });

Agents can offer subscriptions and call fn anytime the data changes at the href. The methods should return an unsubscribe function so the request can clean itself up when calling off.

function agent(fn) {
  // make a request here 
  return function unsubscribe() {
    // implement me! 
  }
}
 
agent.get = function(hreffn) {
  // make a request here 
  return function unsubscribe() {
    // implement me! 
  }
}
 
var req = client('.path.to.desired.property', agent)
  .on(function(errproperty) {
    // this function will be called anytime any intermediate paths change 
  });
 
// stop listening to api changes 
req.off();

Clients can also use a scope for requests with the scope method.

client('local.remote', agent)
  .scope({local: {href: '/path/to/resource'}})
  .on(function(errremote) { });

The function passed to on will be refreshed anytime the scope is updated.

var req = client('local.remote', agent)
  .on(function(errremote) { });
 
req.scope({local: {href: '/new/path/to/other/resource'}});
$ npm install
$ npm test