freeCodeCamp/api-server/common/utils/services-creator.js

45 lines
1021 B
JavaScript

import { Observable, Disposable } from 'rx';
import Fetchr from 'fetchr';
function callbackObserver(observer) {
return (err, res) => {
if (err) {
return observer.onError(err);
}
observer.onNext(res);
return observer.onCompleted();
};
}
export default function servicesCreator(options) {
const services = new Fetchr(options);
function readService$({ service: resource, params, config }) {
return Observable.create(observer => {
services.read(
resource,
params,
config,
callbackObserver(observer)
);
return Disposable.create(() => observer.dispose());
});
}
function createService$({ service: resource, params, body, config }) {
return Observable.create(observer => {
services.create(
resource,
params,
body,
config,
callbackObserver(observer)
);
return Disposable.create(() => observer.dispose());
});
}
return {
readService$,
createService$
};
}