freeCodeCamp/common/utils/services-creator.js

49 lines
1.0 KiB
JavaScript
Raw Normal View History

2016-03-03 04:54:14 +00:00
import { Observable, Disposable } from 'rx';
2016-01-27 19:34:44 +00:00
import Fetchr from 'fetchr';
import stampit from 'stampit';
function callbackObserver(observer) {
return (err, res) => {
if (err) {
return observer.onError(err);
}
observer.onNext(res);
2016-03-03 04:54:14 +00:00
return observer.onCompleted();
2016-01-27 19:34:44 +00:00
};
}
export default stampit({
init({ args: [ options ] }) {
this.services = new Fetchr(options);
},
methods: {
readService$({ service: resource, params, config }) {
return Observable.create(observer => {
this.services.read(
resource,
params,
config,
callbackObserver(observer)
);
return Disposable.create(() => observer.dispose());
});
},
createService$({ service: resource, params, body, config }) {
2016-03-02 04:31:43 +00:00
return Observable.create(observer => {
2016-01-27 19:34:44 +00:00
this.services.create(
resource,
params,
body,
config,
callbackObserver(observer)
);
return Disposable.create(() => observer.dispose());
});
}
}
});