UNPKG

react-native-volley

Version:

React Native wrapper for the Volley HTTP library for Android

94 lines (82 loc) 2 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _reactNative = require("react-native"); const { Volley } = _reactNative.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 }; var _default = volleyApi; exports.default = _default; //# sourceMappingURL=index.js.map