react-native-cookies-inno
v1.0.0
Published
Cookie manager for react native
Downloads
10
Maintainers
Readme
react-native-cookies
Fork from react-native-cookies
Cookie manager for react native.
Looking for Maintainers
I no longer use this library and I'm looking for maintainer(s) to take full control over the development and release cycle.
Installation
yarn add react-native-cookies-inno
Linking
Automatic (recommended)
react-native link react-native-cookies-inno
Manual
If automatic linking does not work, you can manually link this library by following the instructions below:
iOS
- Open your project in Xcode, right click on
Libraries
and clickAdd Files to "Your Project Name"
Look undernode_modules/react-native-cookies/ios
and addRNCookieManagerIOS.xcodeproj
. - Add
libRNCookieManagerIOS.a
to `Build Phases -> Link Binary With Libraries. - Clean and rebuild your project
Android
Run react-native link
to link the react-native-cookies library.
Or if you have trouble, make the following additions to the given files manually:
android/settings.gradle
include ':react-native-cookies'
project(':react-native-cookies').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-cookies/android')
android/app/build.gradle
dependencies {
...
compile project(':react-native-cookies')
}
MainApplication.java
On top, where imports are:
import com.psykar.cookiemanager.CookieManagerPackage;
Add the CookieManagerPackage
class to your list of exported packages.
@Override
protected List<ReactPackage> getPackages() {
return Arrays.asList(
new MainReactPackage(),
new CookieManagerPackage()
);
}
Usage
import CookieManager from "react-native-cookies";
// set a cookie (IOS ONLY)
CookieManager.set({
name: "myCookie",
value: "myValue",
domain: "some domain",
origin: "some origin",
path: "/",
version: "1",
expiration: "2015-05-30T12:30:00.00-05:00"
}).then(res => {
console.log("CookieManager.set =>", res);
});
// Set cookies from a response header
// This allows you to put the full string provided by a server's Set-Cookie
// response header directly into the cookie store.
CookieManager.setFromResponse(
"http://example.com",
"user_session=abcdefg; path=/; expires=Thu, 1 Jan 2030 00:00:00 -0000; secure; HttpOnly"
).then(res => {
// `res` will be true or false depending on success.
console.log("CookieManager.setFromResponse =>", res);
});
// Get cookies as a request header string
CookieManager.get("http://example.com").then(res => {
console.log("CookieManager.get =>", res); // => 'user_session=abcdefg; path=/;'
});
// list cookies (IOS ONLY)
CookieManager.getAll().then(res => {
console.log("CookieManager.getAll =>", res);
});
// clear cookies
CookieManager.clearAll().then(res => {
console.log("CookieManager.clearAll =>", res);
});
// clear a specific cookie by its name (IOS ONLY)
CookieManager.clearByName("cookie_name").then(res => {
console.log("CookieManager.clearByName =>", res);
});
WebKit-Support (iOS only)
React Native comes with a WebView component, which uses UIWebView on iOS. Introduced in iOS 8 Apple implemented the WebKit-Support with all the performance boost.
To use this it's required to use a special implementation of the WebView component (e.g. react-native-wkwebview).
This special implementation of the WebView component stores the cookies not in NSHTTPCookieStorage
anymore. The new cookie-storage is WKHTTPCookieStore
and implementes a differnt interface.
To use this CookieManager with WebKit-Support we extended the interface with the attribute useWebKit
(a boolean value, default: FASLE
) for the following methods:
| Method | WebKit-Support | Method-Signature |
| -------- | -------------- | ----------------------------------------------------- |
| getAll | Yes | CookieManager.getAll(useWebKit:boolean)
|
| clearAll | Yes | CookieManager.clearAll(useWebKit:boolean)
|
| get | Yes | CookieManager.get(url:string, useWebKit:boolean)
|
| set | Yes | CookieManager.set(cookie:object, useWebKit:boolean)
|
Usage
import CookieManager from 'react-native-cookies';
const useWebKit = true;
// list cookies (IOS ONLY)
CookieManager.getAll(useWebKit)
.then((res) => {
console.log('CookieManager.getAll from webkit-view =>', res);
});
// clear cookies
CookieManager.clearAll(useWebKit)
.then((res) => {
console.log('CookieManager.clearAll from webkit-view =>', res);
});
// Get cookies as a request header string
CookieManager.get('http://example.com', useWebKit)
.then((res) => {
console.log('CookieManager.get from webkit-view =>', res);
// => 'user_session=abcdefg; path=/;'
});
// set a cookie (IOS ONLY)
const newCookie: = {
name: 'myCookie',
value: 'myValue',
domain: 'some domain',
origin: 'some origin',
path: '/',
version: '1',
expiration: '2015-05-30T12:30:00.00-05:00'
};
CookieManager.set(newCookie, useWebKit)
.then((res) => {
console.log('CookieManager.set from webkit-view =>', res);
});
TODO
- Proper
getAll
dictionary by domain - Proper error handling
- Anything else?
PR's welcome!