GithubHelp home page GithubHelp logo

gathr's Introduction

gathr

A simple tool to help you view and use all of your apis in one spot.

For a list of available strategies, check the Wiki.

still in very early alpha...

##TODO

[x] Rework listeners to accept more than one decorator [ ] Expose meta data for the routes that gathr itself creates [x] Implement some basic caching [ ] Add all the opts that gathr uses (timeout, ttl, configDir, baseUrlPath, etc) [ ] Split project into seperate modules [ ] Rewrite all of the documentation for readability and accuracy (with stable api)

##Description

Coming soon. Check examples for now

##Config

gathr.js

module.exports = {
  inputs: {
    PackageNameOrPath: 'Options'
    PackageNameOrPath: ['Options']
    PackageNameOrPath: { option: 'val' }
    PackageNameOrPath: [{ option: 'val' }]
  },


  outputs: [
    'PackageNameOrPath'
    { pkg: 'PackageNameOrPath', option: 'val' }
  ],


  decorators: [
    'PackageNameOrPath'
    { pkg: 'PackageNameOrPath', option: 'val' }
  ],


  parsers: [
    'PackageNameOrPath'
    { pkg: 'PackageNameOrPath', option: 'val' }
  ]
};

##Schemas

Input

module.exports = function (opts) {
  return {
    init: function () { return 'promise|value'; },          // (optional) Do init work. May return a promise for async work.
    retrieve: function (parser) { return 'promise|value'; } // (required) Grab data. Parse each piece with parser. May return a promise for async work.
  };
};

Output

module.exports = function (opts) {
  return {
    id: 'type',                  // (optional) Default: A random guid. If left out, decorators can not be applied.
    contentType: 'content type', // (optional) Default: 'text/plain'
    meta: {                      // (optional) To be used to generate endpoint data for this route
      description: 'Description of this endpoint.',
      requests: ['example request'],
      key: 'any other meta we decide we need for the endpoint schema'
    },
    path: '/path',                                      // (required) Used to set up an endpoint to grab this outputter
    init: function () { return 'promise|value'; },      // (optional) Do init work. May return a promise for async work.
    process: function (raw) { return 'promise|value'; } // (required) Process the raw json. May return a promise for async work.
  };
};

Decorator

module.exports = function (opts) {
  return {
    contentType: 'content type', // (optional) Default: parentOutput.contentType || 'text/plain'
    meta: {                      // (optional) To be used to generate endpoint data for this route
      description: 'Description of this endpoint.',
      requests: ['example request'],
      key: 'any other meta we decide we need for the endpoint schema'
    },
    path: '/path',                                       // (required) Used to set up an endpoint to grab this outputter
    parent: 'type',                                      // (required) The id of the outputter you wish to decorate
    init: function () { return 'promise|value'; },       // (optional) Do init work. May return a promise for async work.
    decorate: function (raw) { return 'promise|value'; } // (required) Decorate outputted json. May return a promise for async work.
  };
};

Parser

module.exports = function (opts) {
  return {
    id: 'type',                                       // (required) The id to pass into the output config options.
    init: function () { return 'promise|value'; },    // (optional) Do init work. May return a promise for async work.
    parse: function (raw) { return 'promise|value'; } // (required) Parse a chunk of data. May return a promise for async work.
  };
};

gathr's People

Contributors

numso avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.