0.8.5 • Published 7 years ago

middlestone v0.8.5

Weekly downloads
1
License
ISC
Repository
github
Last release
7 years ago

middlestone

A simple middleware for HTTP requests. Utilises fetch under the hood (fully polyfilled).


Example use of Result API:

Using redux-saga :

// services/some-api.js

import { fromResult, middlewareClient } from 'middlestone';

const API_GET = {
  200: 'https://jsonplaceholder.typicode.com/posts/1',
  404: 'https://jsonplaceholder.typicode.com/bad-route'
};

const client = middlewareClient(x => x.body, { 500: () => this.retry() }); 

export default { get: (endpoint = API_GET['200'], opts = {}) => fromResult(client.request(endpoint, opts)) };
//sagas/effects.js
export const delay = ms => new Promise(resolve => setTimeout(() => resolve(), ms);
// sagas/index.js
import actions from '../actions';
import someApi from '../services/some-service.js';
import { delay } from './effects';

function* fetchSomeService() {
 const {Err, Ok} = yield call(someApi.get);
 
 if(Ok) {
   const postBody = yield Ok.unwrap(); // safely unwrap result
   yield put(postBody);
 } else {
    yield delay(500);
    yield put(actions.GET_SOME_API);
 }
}