falcor-http-datasource npm

A DataSource for Falcor that can be use to retrieve JSON Graph data from an HTTP server.

2 years after

HttpDataSource

This is a Falcor DataSource which can be used to retrieve JSON Graph information from an HTTP server.

Install

npm install falcor-http-datasource

Usage

Minimalistic ES6 example, a quick dirty setup

import falcor from 'falcor';
import HttpDataSource from 'falcor-http-datasource';

var model = new falcor.Model({
  source: new HttpDataSource('/model.json')
});

If you need some additional info for your global HTTP requests consider something like

JWT

var source = new HttpDataSource('/model.json', {
  headers: {
    'Authorization': `bearer ' + token`
  }
});

POST JSON

var source = new HttpDataSource('/model.json', {
  headers: {
    'Content-Type': 'application/json'
  }
});

Cookies

var source = new HttpDataSource('/model.json', {
  withCredentials: true
});
// server must include the header `Access-Control-Allow-Credentials: true`

CORS

var source = new HttpDataSource('/model.json', {
  crossDomain: true
});

or you might want to pass it to constructor as your global AppSource


export class AppSource extends HttpDataSource {
  constructor(path, token) {
    super(path, {
      headers: {
        'Authorization': `bearer ${ token }`
      }
      timeout: 20000
    })
  }

  get(...args) {
    // returns an Observable if you wanted to map/filter/reduce/etc
    return super.get(...args)
  }
  set(...args) {
    // returns an Observable if you wanted to map/filter/reduce/etc
    return super.set(...args)
  }
  call(...args) {
    // returns an Observable if you wanted to map/filter/reduce/etc
    return super.call(...args)
  }

  onBeforeRequest(config) {
    // as of now you're able to mutate the config object before we create our xhr instance
    // you would attach any url params here
    // config.url = config.url + '&something=Value'
    console.log(config);
  }
  buildQueryObject(...args) {
    // helper method to build our url for advanced implementations
    return super.buildQueryObject(...args)
  }
}

export class FalcorModel extends falcor.Model {
  constructor(cache) {
    super({
      cache: cache,
      source: new AppSource('/model.json', user.token)
    });
  }
}

Related Repositories

falcor-router

falcor-router

A Falcor JavaScript DataSource which creates a Virtual JSON Graph document on yo ...

awesome-falcor

awesome-falcor

A collection of awesome things regarding Falcor (FalcorJS) Netflix ecosystem. ...

cambo

cambo

clojure take on falcor and relay ...

falcor-supertest-datasource

falcor-supertest-datasource

A Falcor DataSource class for easily testing Falcor-Router Express routes using ...

falcor-restify-datasource

falcor-restify-datasource

A falcor datasource that uses the RESTify client to make HTTP requests. ...


Top Contributors

gdi2290 michaelbpaulson jhusain trxcllnt syarul sdesai Quramy aspyker falcor-build marcello3d Pajn ratson rmeshenberg cerealbox mattflix mattmarcello

Releases

-   v0.1.3 zip tar
-   v0.1.2 zip tar
-   v0.1.1 zip tar
-   v0.1.0 zip tar
-   v0.0.12 zip tar
-   v0.0.11 zip tar
-   v0.0.10 zip tar
-   v0.0.9 zip tar
-   v0.0.8 zip tar
-   v0.0.7 zip tar
-   v0.0.6 zip tar
-   v0.0.5 zip tar
-   v0.0.4 zip tar
-   v0.0.3 zip tar
-   v0.0.2 zip tar
-   v0.0.1 zip tar