1- import fetch from 'isomorphic-fetch' ;
2-
31export const CALL_API = Symbol ( 'Call API' ) ;
42
5- export const checkStatus = ( response ) => {
6- if ( ! response . ok ) {
7- const error = new Error ( response . statusText || response . status ) ;
8- error . response = response ;
9- throw error ;
10- }
11- return response ;
12- } ;
13-
14- export const parseResponse = ( response ) => {
15- const contentType = response . headers . get ( 'Content-Type' ) || '' ;
16-
17- if ( contentType . indexOf ( 'json' ) !== - 1 ) {
18- return response . json ( ) ;
19- } else if ( contentType . indexOf ( 'text' ) !== - 1 ) {
20- return response . text ( ) ;
21- }
22- // return raw response if unexpected content type
23- return response ;
24- } ;
25-
26- const successInterceptor = ( ...args ) => {
27- const promise = Promise . resolve ( ...args ) ;
28- return promise . then ( checkStatus ) . then ( parseResponse ) ;
29- } ;
30- const failureInterceptor = error => Promise . reject ( error ) ;
31-
32- export const callApi = ( endpoint , options , success , failure ) => (
33- fetch ( endpoint , options ) . then ( success , failure )
34- ) ;
35-
363export const actionWith = ( actionType , args , payload ) => {
374 let nextAction ;
385 if ( typeof actionType === 'function' ) {
@@ -64,8 +31,7 @@ const normalize = (item, apiAction, getState) => {
6431} ;
6532
6633export const createMiddleware = ( {
67- responseSuccess = successInterceptor ,
68- responseFailure = failureInterceptor ,
34+ callApi,
6935} ) => (
7036 ( { dispatch, getState } ) => next => ( action ) => {
7137 if ( ! action [ CALL_API ] ) {
@@ -95,7 +61,7 @@ export const createMiddleware = ({
9561 ) ) ;
9662
9763 const promises = batch . map ( request =>
98- callApi ( request . endpoint , request . options , responseSuccess , responseFailure )
64+ callApi ( request . endpoint , request . options )
9965 ) ;
10066
10167 return Promise . all ( promises )
@@ -110,4 +76,4 @@ export const createMiddleware = ({
11076 }
11177) ;
11278
113- export default createMiddleware ( { } ) ;
79+ export default createMiddleware ;
0 commit comments