1.0.0 • Published 7 years ago
react-native-pinch-villsy v1.0.0
Pinch 👌
Callback and promise based HTTP client that supports SSL pinning for React Native.
Installation
Using NPM:
npm install react-native-pinchUsing Yarn:
yarn add react-native-pinchAutomatically link
With React Native 0.27+
react-native link react-native-pinchWith older versions of React Native
You need rnpm (npm install -g rnpm)
rnpm link react-native-pinchManually link
iOS (via Cocoa Pods)
Add the following line to your build targets in your Podfile
pod 'RNPinch', :path => '../node_modules/react-native-pinch'
Then run pod install
Android
- in
android/app/build.gradle:
dependencies {
...
compile "com.facebook.react:react-native:+" // From node_modules
+ compile project(':react-native-pinch')
}- in
android/settings.gradle:
...
include ':app'
+ include ':react-native-pinch'
+ project(':react-native-pinch').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-pinch/android')With React Native 0.29+
- in
MainApplication.java:
+ import com.localz.PinchPackage;
public class MainApplication extends Application implements ReactApplication {
//......
@Override
protected List<ReactPackage> getPackages() {
return Arrays.<ReactPackage>asList(
+ new PinchPackage(),
new MainReactPackage()
);
}
......
}With older versions of React Native:
- in
MainActivity.java:
+ import com.localz.PinchPackage;
public class MainActivity extends ReactActivity {
......
@Override
protected List<ReactPackage> getPackages() {
return Arrays.<ReactPackage>asList(
+ new PinchPackage(),
new MainReactPackage()
);
}
}Adding certificates
Before you can make requests using SSL pinning, you first need to add your .cer files to your project's assets.
Android
- Place your
.cerfiles undersrc/main/assets/.
iOS
- Place your
.cerfiles in your iOS Project. Don't forget to add them in yourBuild Phases > Copy Bundle Resources, in Xcode.
Example
Examples are using the ES6 standard
Requests can be made by using the fetch(url[, config, [callback]]) method of Pinch.
Using Promises
import pinch from 'react-native-pinch';
pinch.fetch('https://my-api.com/v1/endpoint', {
method: 'post',
headers: { customHeader: 'customValue' },
body: '{"firstName": "Jake", "lastName": "Moxey"}',
timeoutInterval: 10000 // timeout after 10 seconds
sslPinning: {
cert: 'cert-file-name', // cert file name without the `.cer`
certs: ['cert-file-name-1', 'cert-file-name-2'], // optionally specify multiple certificates
}
})
.then(res => console.log(`We got your response! Response - ${res}`))
.catch(err => console.log(`Whoopsy doodle! Error - ${err}`))Using Callbacks
import pinch from 'react-native-pinch';
pinch.fetch('https://my-api.com/v1/endpoint', {
method: 'post',
headers: { customHeader: 'customValue' },
body: '{"firstName": "Jake", "lastName": "Moxey"}',
timeoutInterval: 10000 // timeout after 10 seconds
sslPinning: {
cert: 'cert-file-name', // cert file name without the `.cer`
certs: ['cert-file-name-1', 'cert-file-name-2'], // optionally specify multiple certificates
}
}, (err, res) => {
if (err) {
console.error(`Whoopsy doodle! Error - ${err}`);
return null;
}
console.log(`We got your response! Response - ${res}`);
})Skipping validation
import pinch from 'react-native-pinch';
pinch.fetch('https://my-api.com/v1/endpoint', {
method: 'post',
headers: { customHeader: 'customValue' },
body: '{"firstName": "Jake", "lastName": "Moxey"}',
timeoutInterval: 10000 // timeout after 10 seconds
sslPinning: {} // omit the `cert` or `certs` key, `sslPinning` can be ommited as well
})Response Schema
{
bodyString: '',
headers: {},
status: 200,
statusText: 'OK'
}1.0.0
7 years ago