49 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
import { Observable, Disposable } from 'rx';
 | 
						|
import Fetchr from 'fetchr';
 | 
						|
import stampit from 'stampit';
 | 
						|
 | 
						|
function callbackObserver(observer) {
 | 
						|
  return (err, res) => {
 | 
						|
    if (err) {
 | 
						|
      return observer.onError(err);
 | 
						|
    }
 | 
						|
 | 
						|
    observer.onNext(res);
 | 
						|
    return observer.onCompleted();
 | 
						|
  };
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
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 }) {
 | 
						|
      return Observable.create(observer => {
 | 
						|
        this.services.create(
 | 
						|
          resource,
 | 
						|
          params,
 | 
						|
          body,
 | 
						|
          config,
 | 
						|
          callbackObserver(observer)
 | 
						|
        );
 | 
						|
 | 
						|
        return Disposable.create(() => observer.dispose());
 | 
						|
      });
 | 
						|
    }
 | 
						|
  }
 | 
						|
});
 |