UNPKG

react-native-volley

Version:

React Native wrapper for the Volley HTTP library for Android

85 lines (76 loc) 1.85 kB
import { NativeModules } from 'react-native'; const { Volley } = NativeModules; /** * Performs a HTTP request to the provided URL with optional options. * * @param url * @param opts */ async function volleyFetch(url, opts = {}) { // Sanitize. if (opts.method) { opts.method = opts.method.toUpperCase(); } if (opts.cache) { opts.cache = opts.cache.toLowerCase(); } // Extend defaults. const fetchOpts = Object.assign({ method: 'GET', cache: 'default', headers: {}, body: null }, opts); try { // Await native response. const nativeResponse = await Volley.fetch(url, fetchOpts); // Return response. return { ok: true, status: nativeResponse.status, statusText: 'OK', headers: new Headers(nativeResponse.headers || {}), json: () => { return new Promise((resolve, reject) => { try { resolve(JSON.parse(nativeResponse.body)); } catch (err) { reject(err); } }); }, text: () => { return new Promise((resolve, reject) => { try { resolve(nativeResponse.body); } catch (err) { reject(err); } }); }, blob: () => { return new Promise((resolve, reject) => { let blobType = ''; if (opts && opts.headers && opts.headers['Content-Type']) { blobType = opts.headers['Content-Type']; } try { resolve(new Blob(nativeResponse.body, { type: blobType })); } catch (err) { reject(err); } }); } }; } catch (err) { // Throw error. throw new Error(err); } } const volleyApi = { fetch: volleyFetch }; export default volleyApi; //# sourceMappingURL=index.js.map