a node js URI-string to API converter
JavaScript
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
lib
sample
LICENSE.md
README.md
apimaker.js
package.json

README.md

APIMAKER

the apimaker transforms uri-strings to cool APIs

docu is currently alpha i would say

please see the /sample folder for some examples

installation

  >npm install apimaker

then

  var apimaker = require("apimaker");

create a GET request api

  //var api = apimaker(uri, method, headers); 

  //a GET API 
  //GET is default
  var expand = apimaker("https://www.googleapis.com/urlshortener/v1/url?shortUrl=&key=&projection=");

  //use it
  //api(oneTimeDataObject, callback(incomingData));
  expand({'shortUrl':'http://goo.gl/ovZB'}, function(a){
    a = JSON.parse(a);
   console.log('expand: '+a.id + " --\> " +a.longUrl);
  });

  //GET API with additonal header
  var expand = apimaker("https://www.googleapis.com/urlshortener/v1/url?shortUrl=&key=&projection=", 'GET', {'User-Agent':'Bond, James Bond'})


  //a POST API
  var short = apimaker("https://www.googleapis.com/urlshortener/v1/url?longUrl=&key=", "POST");

  //google demands we send the data as JSON
  short.enableSendAsJson();

  //use it
  //api(oneTimeDataObject, callback(incomingData))
  short({longUrl:"http://news.ycombinator.com/"}, function(a) {
    a = JSON.parse(a);
   console.log('short: '+a.longUrl + " --\> " + a.id)
  });

  //PUT
  //docu soon to come

  //DELETE
  //docu soont to come

magic

  //with an uri like
  //https://www.googleapis.com/urlshortener/v1/url?longUrl=&key=
  //you get

  //api.d holds all default-data
  api.d.longUrl
  api.d.key

  //getters in setters if you are into that kinda stuff
  //note, these set the default values
  //they stay the same with every request
  api.getLongurl(value)
  api.setLongurl(value)

other usefull functions

  //usefull to set callbacks for HTTP 404, 301, ...
  api.addStatusCodeCallback(statusCode, callback)

  //all POST data will be sent as JSON
  //plus with a Content-Type: application/json header
  api.enableSendAsJson()

  //all data will be send as RAW
  //means you have to encode it yourself
  api.enableSendAsRaw()

  //add additonal headers to your API requests
  api.setHeader(header, value)

  //a quirks arround method to overwrite the path 
  //for GET/POST mix requests 
  //lets hope you will never need it
  api.setStaticPath(path)

TODO

  • encoding of incoming data is currently always UTF8, should be configurable
  • PUT and DELETE examples
  • more docu about the awesome features
  • example use together with node-OAuth
  • support HTTP AUTH (is there an API that sill uses this?)