Comparing version 1.16.0 to 1.17.0
@@ -5,6 +5,14 @@ /* Oriskami API client factory | ||
*/ | ||
module.exports = function(token, version, resources){ | ||
var _ = require("lodash") | ||
, Oriskami = require("./Oriskami") | ||
module.exports = function(token, version, resources){ | ||
var tls = require("tls") | ||
, Oriskami = require("./Oriskami") | ||
, vNode = process.version.split(".") | ||
, vNodeMajor0 = vNode.length && vNode[0] ? vNode[0].replace(/[^0-9]/,"") : null | ||
, vNodeMajor = !isNaN(parseInt(vNodeMajor0)) ? parseInt(vNodeMajor0) : null | ||
, isVNodeGT8 = vNodeMajor >= 8 | ||
// MITIGATE SSL HANDSHAKE FAILURE __________________ | ||
// https://github.com/nodejs/node/issues/16196 | ||
tls.DEFAULT_ECDH_CURVE = isVNodeGT8 ? "auto" : "prime256v1" | ||
resources = resources || [ | ||
@@ -49,8 +57,7 @@ {"name": "Router" , "path": "router"} | ||
var oriskami = new Oriskami(token, version, resources) | ||
for(var i = 0; i<resources.length; i++) { | ||
oriskami.extend(resources[i].name, resources[i].path) | ||
} | ||
_.each(resources, function(resource){ | ||
oriskami.extend(resource.name, resource.path) | ||
}) | ||
return oriskami | ||
} |
@@ -1,3 +0,2 @@ | ||
var _ = require("lodash") | ||
, Resource = require("../Resource") | ||
var Resource = require("../Resource") | ||
, bindingName = "Oriskami/v1 NodeBindings/" | ||
@@ -18,2 +17,3 @@ , httpTimeout = 120000 | ||
, "resources" : resources | ||
, "api_host" : "api.oriskami.com" | ||
, "revokedCerts" : "" | ||
@@ -26,6 +26,7 @@ , "headers" : { | ||
},"request" : { | ||
"host" : "api.oriskami.com" | ||
, "port" : "443" | ||
"port" : "443" | ||
, "version" : version | ||
, "ciphers" : "DEFAULT:!aNULL:!eNULL:!LOW:!EXPORT:!SSLv2:!MD5" }} | ||
, "ciphers" : "DEFAULT:!aNULL:!eNULL:!LOW:!EXPORT:!SSLv2:!MD5" } | ||
} | ||
this._api.request.host = this._api.api_host | ||
@@ -32,0 +33,0 @@ this.set("auth", token) |
@@ -1,3 +0,11 @@ | ||
var _ = require("lodash") | ||
, encode = encodeURIComponent | ||
var encode = encodeURIComponent | ||
, isFunction = function(x){ return typeof x === "function" } | ||
, toPath = function(x){ | ||
for(var path = "?" | ||
, keys = Object.keys(x) | ||
, i = 0 ; i < keys.length ; i++){ | ||
path += encode(keys[i]) + "=" + encode(x[keys[i]]) + "&" | ||
} | ||
return path | ||
} | ||
@@ -22,3 +30,3 @@ /* | ||
var data = arguments[0] | ||
, next = _.isFunction(arguments[1]) ? arguments[1] : function(){} | ||
, next = isFunction(arguments[1]) ? arguments[1] : function(){} | ||
@@ -50,3 +58,3 @@ this.request.call(this, { | ||
next = arguments[2] | ||
path = _.reduce(_.keys(json), function(x, k){return x += encode(k) + "=" + encode(json[k]) + "&"}, "?") | ||
path = toPath(json) | ||
} | ||
@@ -71,3 +79,3 @@ | ||
, data = nArgs === 3 ? arguments[1] : arguments[0] | ||
, next = _.isFunction(arguments[idLast]) ? arguments[idLast] : function(){} | ||
, next = isFunction(arguments[idLast]) ? arguments[idLast] : function(){} | ||
@@ -99,3 +107,3 @@ this.request.call(this, { | ||
next = arguments[2] | ||
path = _.reduce(_.keys(json), function(x, k){return x += encode(k) + "=" + encode(json[k]) + "&"}, "?") | ||
path = toPath(json) | ||
} | ||
@@ -116,4 +124,4 @@ | ||
var args = arguments | ||
, parameters = !_.isFunction(args[0]) ? args[0] : {} | ||
, next = _.isFunction(args[0]) ? args[0] : _.isFunction(args[1]) ? args[1] : function(){} | ||
, parameters = !isFunction(args[0]) ? args[0] : {} | ||
, next = isFunction(args[0]) ? args[0] : isFunction(args[1]) ? args[1] : function(){} | ||
@@ -134,4 +142,4 @@ this.request.call(this, { | ||
var args = arguments | ||
, parameters = !_.isFunction(args[0]) ? args[0] : {} | ||
, next = _.isFunction(args[0]) ? args[0] : _.isFunction(args[1]) ? args[1] : function(){} | ||
, parameters = !isFunction(args[0]) ? args[0] : {} | ||
, next = isFunction(args[0]) ? args[0] : isFunction(args[1]) ? args[1] : function(){} | ||
@@ -138,0 +146,0 @@ this.request.call(this, { |
{ | ||
"name": "oriskami", | ||
"version": "1.16.0", | ||
"version": "1.17.0", | ||
"description": "API wrapper to Oriskami", | ||
@@ -25,7 +25,8 @@ "main": "lib/index.js", | ||
"chai": "^2.1.0", | ||
"mocha": "^2.1.0" | ||
"mocha": "^2.1.0", | ||
"lodash": "^3.3.1" | ||
}, | ||
"dependencies": { | ||
"lodash": "^3.3.1" | ||
"all": "0.0.0" | ||
} | ||
} |
234
README.md
@@ -7,14 +7,23 @@ # Oriskami node.js bindings | ||
The Oriskami Node.js library provides access to the Oriskami API from applications | ||
written in the Node.js language. It includes a pre-defined set of classes for | ||
API resources. | ||
This library helps interact with Oriskami's API, a *risk management intelligence* | ||
to detect and manage transactions having a risk. Oriskami works by: | ||
1. fusioning your transaction data with external data providers; | ||
2. applying filters like whitelists, blacklists, rules, or risk scores trained with machine learning; and | ||
3. triggering notifications when a risk is detected (e-mail, slack, signed webhooks, etc.). | ||
## Quick Start | ||
For a quick start see below, otherwise here are few links: | ||
- [**Browse product details**](https://www.oriskami.com/shop) | ||
- [**Sign up**](https://www.oriskami.com/signup) | ||
- [**Get an access token**](https://my.oriskami.com/) | ||
- [**Schedule a demo**](https://www.oriskami.com/shop/schedule-demo) | ||
- [**See the docs**](https://www.oriskami.com/docs) | ||
Install the nodejs binding of `oriskami` from npm. | ||
## Quick Start: Five steps | ||
`npm install oriskami` | ||
1. **Install** the binding: | ||
```js | ||
npm install --save oriskami | ||
``` | ||
Initialize the binding with your API access token: | ||
2. **Setup** your access token: | ||
```js | ||
@@ -25,120 +34,93 @@ var Oriskami = require("oriskami") | ||
### Send event | ||
3. **Bootstrap** your account with historical data (`EventPast`; *not* analyzed): | ||
```js | ||
oriskami.events.create({ | ||
oriskami.EventsPast.create({ | ||
"parameters" :{ | ||
"id": 16646, | ||
"email": "abc@gmail.com", | ||
"names": "M Abc", | ||
"account_creation_time": "2017-05-17 21:50:00", | ||
"account_id": "10000", | ||
"account_n_fulfilled": "1", | ||
"account_total_since_created": "49.40", | ||
"account_total_cur": "EUR", | ||
"invoice_time": "2017-05-17 21:55:00", | ||
"invoice_address_country": "France", | ||
"invoice_address_place": "75008 Paris", | ||
"invoice_address_street1": "1 Av. des Champs-Élysées", | ||
"invoice_name": "M ABC", | ||
"invoice_phone1": "0123456789", | ||
"invoice_phone2": null, | ||
"transport_date": "2017-05-18 08:00:00", | ||
"transport_type": "Delivery", | ||
"transport_mode": "TNT", | ||
"transport_weight": "9.000", | ||
"transport_unit": "kg", | ||
"transport_cur": "EUR", | ||
"delivery_address_country": "France", | ||
"delivery_address_place": "75008 Paris", | ||
"delivery_address_street1": "1 Av. des Champs-Élysées", | ||
"delivery_name": "M ABC", | ||
"delivery_phone1": "0123450689", | ||
"customer_ip_address": "1.2.3.4", | ||
"pmeth_origin": "FRA", | ||
"pmeth_validity": "0121", | ||
"pmeth_brand": "MC", | ||
"pmeth_bin": "510000", | ||
"pmeth_3ds": "-1", | ||
"cart_products": [ " Product ref #12345 " ], | ||
"cart_details": [ | ||
{ | ||
"name": "Product ref #12345", | ||
"pu": "10.00", | ||
"n": "1", | ||
"reimbursed": " 0", | ||
"available": "1", | ||
"amount": "10.00", | ||
"cur": "EUR" | ||
} | ||
], | ||
"cart_n": "15000", | ||
"order_payment_accepted": "2017-05-17 22:00:00", | ||
"amount_pmeth": "ABC Payment Service Provider", | ||
"amount_discounts": 0.00, | ||
"amount_products": 20.00, | ||
"amount_transport": 10.00, | ||
"amount_total": 30.00, | ||
"amount_cur": "EUR" | ||
"id": 16646 | ||
, "email": "abc@gmail.com" | ||
, "names": "M Abc" | ||
, "account_creation_time": "2017-05-17 21:50:00" | ||
, "account_id": "10000" | ||
, "account_n_fulfilled": "1" | ||
, "account_total_since_created": "49.40" | ||
, "account_total_cur": "EUR" | ||
, "invoice_time": "2017-05-17 21:55:00" | ||
, "invoice_address_country": "France" | ||
, "invoice_address_place": "75008 Paris" | ||
, "invoice_address_street1": "1 Av. des Champs-Élysées" | ||
, "invoice_name": "M ABC" | ||
, "invoice_phone1": "0123456789" | ||
, "invoice_phone2": null | ||
, "transport_date": "2017-05-18 08:00:00" | ||
, "transport_type": "Delivery" | ||
, "transport_mode": "TNT" | ||
, "transport_weight": "9.000" | ||
, "transport_unit": "kg" | ||
, "transport_cur": "EUR" | ||
, "delivery_address_country": "France" | ||
, "delivery_address_place": "75008 Paris" | ||
, "delivery_address_street1": "1 Av. des Champs-Élysées" | ||
, "delivery_name": "M ABC" | ||
, "delivery_phone1": "0123450689" | ||
, "customer_ip_address": "1.2.3.4" | ||
, "pmeth_origin": "FRA" | ||
, "pmeth_validity": "0121" | ||
, "pmeth_brand": "MC" | ||
, "pmeth_bin": "510000" | ||
, "pmeth_3ds": "-1" | ||
, "cart_products": [ " Product ref #12345 ", " Product ref #45678 " ] | ||
, "cart_details": [{ | ||
"name": "Product ref #12345" | ||
, "pu": "10.00" | ||
, "n": "1" | ||
, "reimbursed": " 0" | ||
, "available": "1" | ||
, "amount": "10.00" | ||
, "cur": "EUR" | ||
}, { | ||
"name": "Product ref #45678" | ||
, "pu": "20.00" | ||
, "n": "2" | ||
, "reimbursed": " 0" | ||
, "available": "1" | ||
, "amount": "40.00" | ||
, "cur": "EUR" | ||
}] | ||
, "cart_n": "15000" | ||
, "order_payment_accepted": "2017-05-17 22:00:00" | ||
, "amount_pmeth": "ABC Payment Service Provider" | ||
, "amount_discounts": 0.00 | ||
, "amount_products": 20.00 | ||
, "amount_transport": 10.00 | ||
, "amount_total": 30.00 | ||
, "amount_cur": "EUR" | ||
} | ||
, function(err, res){ | ||
if(err){ | ||
console.log(err) | ||
return err | ||
} | ||
}) | ||
}, (err, res) => /* callback */) | ||
``` | ||
4. **Label** events for which the risk (`is_loss`) has materialized: | ||
```js | ||
oriskami.events.retrieve("16646", function(err, res){ | ||
if(err){ | ||
console.log(err) | ||
return err | ||
} | ||
}) | ||
oriskami.EventLabel.update({ | ||
"id" : "1" | ||
, "label": "is_loss" | ||
, "value": "false" | ||
}, (err, res) => /* process results */) | ||
``` | ||
## Resources, actions, and arguments | ||
Every resource is accessed via your `oriskami` instance and accepts an optional | ||
callback as the last argument. In the matrix below we list the resources | ||
(rows), the actions (columns) and the arguments (cells). The full documentation | ||
is available at [https://oriskami.com/docs/nodejs](https://oriskami.com/docs/nodejs). | ||
5. **Send** live `Events`: | ||
```js | ||
oriskami.events.create({ }, (err, res) => /* process results */) | ||
``` | ||
Then you will get notified when a risk is detected. | ||
## Events API: Open Beta (public preview) | ||
| | Resource | C | R | U | D | L | Test Specs | | ||
|--------------:| ----------------------- |:-:|:-:|:-:|:-:|:-----:|:-------:| | ||
| **Settings** | Auth, Credentials | | | | | | | | ||
| **Router** | Router | | [`123`](https://oriskami.com/docs/nodejs#retrieve_router) | | | | [See on github](https://github.com/oriskami/oriskami-node/blob/master/test/Resources/Router/spec.js) | | ||
| | RouterParameter | | | [`123, {}`](https://oriskami.com/docs/nodejs#update_routerparameter) | | [`{}`](https://oriskami.com/docs/nodejs#list_routerparameter) | [See on github](https://github.com/oriskami/oriskami-node/blob/master/test/Resources/RouterParameter/spec.js) | | ||
| | RouterData | | | [`123, {}`](https://oriskami.com/docs/nodejs#update_routerdata) | | [`{}`](https://oriskami.com/docs/nodejs#list_routerdata) | [See on github](https://github.com/oriskami/oriskami-node/blob/master/test/Resources/RouterData/spec.js) | | ||
| | RouterDataGeocoding | | | | | [`{}`](https://oriskami.com/docs/nodejs#list_routerdatageocoding) | [See on github](https://github.com/oriskami/oriskami-node/blob/master/test/Resources/RouterDataGeocoding/spec.js) | | ||
| | RouterDataGeoip | | | [`123, {}`](https://oriskami.com/docs/nodejs#update_routerdatageoip) | | [`{}`](https://oriskami.com/docs/nodejs#list_routerdata) | [See on github](https://github.com/oriskami/oriskami-node/blob/master/test/Resources/RouterDataGeoip/spec.js) | | ||
| | RouterDataPhone | | | [`123, {}`](https://oriskami.com/docs/nodejs#update_routerdataphone) | | [`{}`](https://oriskami.com/docs/nodejs#list_routerdata) | [See on github](https://github.com/oriskami/oriskami-node/blob/master/test/Resources/RouterDataPhone/spec.js) | | ||
| | RouterDataBlacklist | | | [`123, {}`](https://oriskami.com/docs/nodejs#update_routerdatablacklist) | | [`{}`](https://oriskami.com/docs/nodejs#list_routerdata) | [See on github](https://github.com/oriskami/oriskami-node/blob/master/test/Resources/RouterDataBlacklist/spec.js) | | ||
| | RouterDataBin | | | [`123, {}`](https://oriskami.com/docs/nodejs#update_routerdatabin) | | [`{}`](https://oriskami.com/docs/nodejs#list_routerdata) | [See on github](https://github.com/oriskami/oriskami-node/blob/master/test/Resources/RouterDataBin/spec.js) | | ||
| | RouterDataFeature | | | | | [`{}`](https://oriskami.com/docs/nodejs#list_routerdatafeature) | [See on github](https://github.com/oriskami/oriskami-node/blob/master/test/Resources/RouterDataFeature/spec.js) | | ||
| | RouterFlow | [`{}`](https://oriskami.com/docs/nodejs#create_routerflow) | | [`123, {}`](https://oriskami.com/docs/nodejs#update_routerflow) | [`{}`](https://oriskami.com/docs/nodejs#delete_routerflow) | [`{}`](https://oriskami.com/docs/nodejs#list_routerflow) | [See on github](https://github.com/oriskami/oriskami-node/blob/master/test/Resources/RouterFlow/spec.js)| | ||
| | RouterBackup | [`{}`](https://oriskami.com/docs/nodejs#create_routerbackup) | [`{}`](https://oriskami.com/docs/nodejs#retrieve_routerbackup) | | [`{}`](https://oriskami.com/docs/nodejs#delete_routerbackup) | [`{}`](https://oriskami.com/docs/nodejs#list_routerbackup) | [See on github](https://github.com/oriskami/oriskami-node/blob/master/test/Resources/RouterBackup/spec.js)| | ||
| | RouterTest | | - | | | - | - | | ||
| **Event data**| Event | [`{}`](https://oriskami.com/docs/nodejs#create_event)| [`123`](https://oriskami.com/docs/nodejs#retrieve_event) | [`123, {}`](https://oriskami.com/docs/nodejs#update_event) | [`123`](https://oriskami.com/docs/nodejs#delete_event) | [`{}`](https://oriskami.com/docs/nodejs#list_event) | [See on github](https://github.com/oriskami/oriskami-node/blob/master/test/Resources/Event/spec.js) | | ||
| | EventPast | [`{}`](https://oriskami.com/docs/nodejs#create_eventpast)| | | | [`{}`](https://oriskami.com/docs/nodejs#list_eventpast) | [See on github](https://github.com/oriskami/oriskami-node/blob/master/test/Resources/EventPast/spec.js) | | ||
| | EventNotification | | [`123`](https://oriskami.com/docs/nodejs#retrieve_eventnotification) | | | [`{}`](https://oriskami.com/docs/nodejs#list_eventnotification) | [See on github](https://github.com/oriskami/oriskami-node/blob/master/test/Resources/EventNotification/spec.js)| | ||
| | EventLabel | | [`123`](https://oriskami.com/docs/nodejs#retrieve_eventlabel) | [`123, {}`](https://oriskami.com/docs/nodejs#update_eventlabel) | [`123`](https://oriskami.com/docs/nodejs#delete_eventlabel) | [`{}`](https://oriskami.com/docs/nodejs#list_eventlabel) | [See on github](https://github.com/oriskami/oriskami-node/blob/master/test/Resources/EventLabel/spec.js)| | ||
| | EventLastId | | | | | [`{}`](https://oriskami.com/docs/nodejs#list_eventlastid) | [See on github](https://github.com/oriskami/oriskami-node/blob/master/test/Resources/EventLastId/spec.js)| | ||
| | EventLabel | | [`123`](https://oriskami.com/docs/nodejs#retrieve_eventlabel) | [`123, {}`](https://oriskami.com/docs/nodejs#update_eventlabel) | [`123`](https://oriskami.com/docs/nodejs#delete_eventlabel) | [`{}`](https://oriskami.com/docs/nodejs#list_eventlabel) | [See on github](https://github.com/oriskami/oriskami-node/blob/master/test/Resources/EventLabel/spec.js)| | ||
| | EventQueue | | [`123`](https://oriskami.com/docs/nodejs#retrieve_eventqueue) | [`123, {}`](https://oriskami.com/docs/nodejs#update_eventqueue) | [`123`](https://oriskami.com/docs/nodejs#delete_eventqueue) | [`{}`](https://oriskami.com/docs/nodejs#list_eventqueue) | [See on github](https://github.com/oriskami/oriskami-node/blob/master/test/Resources/EventQueue/spec.js)| | ||
| | EventReview | | [`123`](https://oriskami.com/docs/nodejs#retrieve_eventreview) | [`123, {}`](https://oriskami.com/docs/nodejs#update_eventreview) | [`123`](https://oriskami.com/docs/nodejs#delete_eventreview) | [`{}`](https://oriskami.com/docs/nodejs#list_eventreview) | [See on github](https://github.com/oriskami/oriskami-node/blob/master/test/Resources/EventReview/spec.js)| | ||
| **Flow filters** | Filter | | | [`123, {}`](https://oriskami.com/docs/nodejs#update_filter) | | [`{}`](https://oriskami.com/docs/nodejs#list_filter) | [See on github](https://github.com/oriskami/oriskami-node/blob/master/test/Resources/Filter/spec.js)| | ||
| | FilterWhitelist | [`{}`](https://oriskami.com/docs/nodejs#create_filterwhitelist)| | [`123, {}`](https://oriskami.com/docs/nodejs#update_filterwhitelist) | [`123`](https://oriskami.com/docs/nodejs#delete_filterwhitelist) | [`{}`](https://oriskami.com/docs/nodejs#list_filterwhitelist) | [See on github](https://github.com/oriskami/oriskami-node/blob/master/test/Resources/FilterWhitelist/spec.js)| | ||
| | FilterBlacklist | | | [`123, {}`](https://oriskami.com/docs/nodejs#update_filterblacklist) | | [`{}`](https://oriskami.com/docs/nodejs#list_filterblacklist) | [See on github](https://github.com/oriskami/oriskami-node/blob/master/test/Resources/FilterBlacklist/spec.js)| | ||
| | FilterRulesCustom | [`{}`](https://oriskami.com/docs/nodejs#create_filterrulescustom)| | [`123, {}`](https://oriskami.com/docs/nodejs#update_filterrulescustom)| [`123`](https://oriskami.com/docs/nodejs#delete_filterrulescustom) | [`{}`](https://oriskami.com/docs/nodejs#list_filterrulescustom) | [See on github](https://github.com/oriskami/oriskami-node/blob/master/test/Resources/FilterRulesCustom/spec.js)| | ||
| | FilterRulesBase | | | [`123, {}`](https://oriskami.com/docs/nodejs#update_filterrulesbase) | | [`{}`](https://oriskami.com/docs/nodejs#list_filterrulesbase) | [See on github](https://github.com/oriskami/oriskami-node/blob/master/test/Resources/FilterRulesBase/spec.js)| | ||
| | FilterRulesAI | | | [`123, {}`](https://oriskami.com/docs/nodejs#update_filterrulesai) | [`123`](https://oriskami.com/docs/nodejs#delete_filterrulesai) | [`{}`](https://oriskami.com/docs/nodejs#list_filterrulesai) | [See on github](https://github.com/oriskami/oriskami-node/blob/master/test/Resources/FilterRulesAI/spec.js)| | ||
| | FilterScoringsDedicated | | | [`123, {}`](https://oriskami.com/docs/nodejs#update_filterscoringsdedicated) | | [`{}`](https://oriskami.com/docs/nodejs#list_filterscoringsdedicated) | [See on github](https://github.com/oriskami/oriskami-node/blob/master/test/Resources/FilterScoringsDedicated/spec.js)| | ||
| **Flow notifiers** | Notifier | | | [`123, {}`](https://oriskami.com/docs/nodejs#update_notifier) | | [`{}`](https://oriskami.com/docs/nodejs#list_notifier) | [See on github](https://github.com/oriskami/oriskami-node/blob/master/test/Resources/Notifier/spec.js)| | ||
| | NotifierEmail | [`{}`](https://oriskami.com/docs/nodejs#create_notifieremail)| | [`123, {}`](https://oriskami.com/docs/nodejs#update_notifieremail) | [`123`](https://oriskami.com/docs/nodejs#delete_notifieremail) | [`{}`](https://oriskami.com/docs/nodejs#list_notifieremail) | [See on github](https://github.com/oriskami/oriskami-node/blob/master/test/Resources/NotifierEmail/spec.js)| | ||
| | NotifierSms | [`{}`](https://oriskami.com/docs/nodejs#create_notifiersms)| | [`123, {}`](https://oriskami.com/docs/nodejs#update_notifiersms) | [`123`](https://oriskami.com/docs/nodejs#delete_notifiersms) | [`{}`](https://oriskami.com/docs/nodejs#list_notifiersms) | [See on github](https://github.com/oriskami/oriskami-node/blob/master/test/Resources/NotifierSms/spec.js)| | ||
| | NotifierSlack | [`{}`](https://oriskami.com/docs/nodejs#create_notifierslack)| | [`123, {}`](https://oriskami.com/docs/nodejs#update_notifierslack) | [`123`](https://oriskami.com/docs/nodejs#delete_notifierslack) | [`{}`](https://oriskami.com/docs/nodejs#list_notifierslack) | [See on github](https://github.com/oriskami/oriskami-node/blob/master/test/Resources/NotifierSlack/spec.js)| | ||
| | NotifierWebhook | [`{}`](https://oriskami.com/docs/nodejs#create_notifierwebhook)| | [`123, {}`](https://oriskami.com/docs/nodejs#update_notifierwebhook) | [`123`](https://oriskami.com/docs/nodejs#delete_notifierwebhook) | [`{}`](https://oriskami.com/docs/nodejs#list_notifierwebhook) | [See on github](https://github.com/oriskami/oriskami-node/blob/master/test/Resources/NotifierWebhook/spec.js)| | ||
| | NotifierECommerce | | | [`123, {}`](https://oriskami.com/docs/nodejs#update_notifierecommerce) | | [`{}`](https://oriskami.com/docs/nodejs#list_notifierecommerce) | [See on github](https://github.com/oriskami/oriskami-node/blob/master/test/Resources/NotifierECommerce/spec.js)| | ||
+ *C*: Create | ||
@@ -152,4 +134,14 @@ + *R*: Retrieve | ||
## Filter parameters | ||
## Code snippets and filter parameters | ||
A few code snippets: | ||
| Action | Code snippet | | ||
|:------------|:-----| | ||
| 1. Change token | `oriskami.set("auth", "your-api-token")` | | ||
| 2. Add new `resource` | `oriskami.extend("resourceName", "resourcePath")` | | ||
| 3. Change timeout | `oriskami.set("timeout", 20000) // in ms` | | ||
Filters available for most resources (`list`). | ||
| Filter | Default | Example | Description | | ||
@@ -163,21 +155,2 @@ | ------------- |:-------:|:--------------------|:------------------------------| | ||
## Configuration | ||
Extend `this` `oriskami` instance with a new resource whose accessibility is | ||
controlled by access rights. | ||
```js | ||
oriskami.extend("resourceName", "resourcePath") // extend with | ||
``` | ||
Change API access token dynamically: | ||
```js | ||
oriskami.set("auth", "your-api-token") | ||
``` | ||
Define timeout of the binding: | ||
```js | ||
oriskami.set("timeout", 20000) // in ms`, node's default is `120000ms` | ||
``` | ||
## Development | ||
@@ -198,4 +171,3 @@ | ||
- Inspired from [stripe-node](https://github.com/stripe/stripe-node). | ||
- Developed and maintained by Fabrice Colas for [Oriskami](https://www.oriskami.com). |
@@ -5,2 +5,8 @@ var fs = require("fs") | ||
// _________________________________________________________________________ | ||
// 2018-06-05: routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure | ||
// https://github.com/nodejs/node/issues/16196 | ||
require("tls").DEFAULT_ECDH_CURVE = "auto" | ||
// _________________________________________________________________________ | ||
module.exports = require("../lib")(process.env["ORISKAMI_TEST_TOKEN_NODEJS_1"], apiVersion) |
var _ = require("lodash") | ||
, expect = require("chai").expect | ||
, oriskami = require("../../oriskami") | ||
, oriskami = require("../../oriskami") | ||
, examples = require("../../data/Event") | ||
@@ -29,5 +29,13 @@ , jsons = _.map(examples, function(x){return {"id": x.id, "parameters": x}}) | ||
describe("Methods", function(){ | ||
before(function(done){ | ||
var defaultId = 0 | ||
oriskami["RouterData"].update(defaultId, {"is_active": "true"}, function(err, res){ | ||
if(err){ console.log(err, res) ; done(new Error("Did not update")) } | ||
done() | ||
}) | ||
}) | ||
var json = jsons[0] | ||
, idResource | ||
it("Should create and return a single resource", function(done){ | ||
it("Should create and return a resource", function(done){ | ||
oriskami["Event"].create(json, function(err, res){ | ||
@@ -47,19 +55,2 @@ if(err){ | ||
it("Should create and return several resources", function(done){ | ||
var nExamples = examples.length | ||
oriskami["Event"].create(jsons, function(err, res){ | ||
if(err){ | ||
console.log(err, res) | ||
done(err) | ||
} else if(!!res.data && res.data.length === nExamples){ | ||
idResource = res.data[0].id | ||
done() | ||
} else { | ||
console.log("Expected ", nExamples, " Returned ", res.data.length) | ||
done((new Error("Did not return the several resources"))) | ||
} | ||
}) | ||
}) | ||
it("Should retrieve via its id the created resource", function(done){ | ||
@@ -125,8 +116,10 @@ oriskami["Event"].retrieve(idResource, function(err, res){ | ||
before(function(done){ | ||
oriskami["Event"].create(jsons, function(err, res){ | ||
if(err) { | ||
console.log(err) | ||
return done(err) | ||
} | ||
done() | ||
oriskami["Event"].create(jsons[0], function(err, res){ | ||
if(err) return done(err) | ||
oriskami["Event"].create(jsons[1], function(err, res){ | ||
if(err) return done(err) | ||
oriskami["Event"].create(jsons[2], function(err, res){ | ||
done(err) | ||
}) | ||
}) | ||
}) | ||
@@ -133,0 +126,0 @@ }) |
var _ = require("lodash") | ||
, expect = require("chai").expect | ||
, oriskami = require("../../oriskami") | ||
, oriskami = require("../../oriskami") | ||
, examples = require("../../data/Event") | ||
@@ -9,3 +9,3 @@ , jsons = _.map(examples, function(x){return {"id": x.id, "parameters": x}}) | ||
describe("Event", function(){ | ||
describe("EventPast", function(){ | ||
describe("Properties", function(){ | ||
@@ -45,15 +45,53 @@ it("Should have a name and path attribute", function() { | ||
it("Should create and return several resources", function(done){ | ||
var nExamples = examples.length | ||
it("Should retrieve via its id the created resource", function(done){ | ||
oriskami["EventPast"].retrieve(idResource, function(err, res){ | ||
var isStatusOk = res.statusCode >= 200 && res.statusCode <= 204 | ||
if(err){ | ||
console.log(err, res) | ||
done(err) | ||
} else if(res.data.length === 1 && res.data[0].id === idResource){ | ||
done() | ||
} else { | ||
console.log("Expected ", idResource, " Returned ", res.data[0].id) | ||
done((new Error("Did not return the resource with id = "+idResource))) | ||
} | ||
}) | ||
}) | ||
oriskami["EventPast"].create(jsons, function(err, res){ | ||
it("Should update the created resource", function(done){ | ||
var newEmail = "abc@gmail.com" | ||
oriskami["EventPast"].update(idResource, { | ||
"id" : jsons[1].id | ||
, "parameters": {"email": newEmail} | ||
}, function(err, res){ | ||
if(err){ | ||
console.log(err, res) | ||
done(err) | ||
} else if(!!res.data && res.data.length === nExamples){ | ||
idResource = res.data[0].id | ||
} else if(res.data.length === 1){ | ||
if(res.data[0].parameters.email !== newEmail){ | ||
done(new Error("Updated resource is not equal to submitted resource")) | ||
console.log(err, sentData, newData) | ||
} | ||
done() | ||
} else if(res.data.length !== 1){ | ||
console.log("Data:", res.data) | ||
done(new Error("Data length !== 1 when updating")) | ||
} | ||
}) | ||
}) | ||
it("Should delete the created resource", function(done){ | ||
oriskami["EventPast"].del(idResource, function(err, res){ | ||
if(!err && res.data.length === 1){ | ||
oriskami["EventPast"].retrieve(idResource, function(err, res){ | ||
if(err || res.data.length > 0){ | ||
console.log(err, res) | ||
done((new Error("Should have deleted resource id = "+idResource))) | ||
} | ||
done() | ||
}) | ||
} else { | ||
console.log(err, res) | ||
done((new Error("Did not return an id"))) | ||
done((new Error("Did not return the deleted resource with id = "+idResource))) | ||
} | ||
@@ -60,0 +98,0 @@ }) |
var _ = require("lodash") | ||
, expect = require("chai").expect | ||
, oriskami = require("../../oriskami") | ||
, oriskami = require("../../oriskami") | ||
, examples = require("../../data/Event") | ||
@@ -36,2 +36,14 @@ , jsons = _.map(examples, function(x){return {"id": x.id, "parameters": x}}) | ||
before(function(done){ | ||
oriskami["Event"].create(jsons[0], function(err, res){ | ||
if(err) return done(err) | ||
oriskami["Event"].create(jsons[1], function(err, res){ | ||
if(err) return done(err) | ||
oriskami["Event"].create(jsons[2], function(err, res){ | ||
done(err) | ||
}) | ||
}) | ||
}) | ||
}) | ||
it("Should retrieve", function(done){ | ||
@@ -87,19 +99,27 @@ oriskami["EventQueue"].retrieve(idResource, function(err, res){ | ||
it("Should list", function(done){ | ||
oriskami["EventQueue"].list(function(err, res){ | ||
if(err){ | ||
it("Should create one and list", function(done){ | ||
oriskami["EventQueue"].update(idResource | ||
, {"id": idResource, "active": "rules_base"} | ||
, function(err, res){ | ||
if(err) { | ||
console.log(err, res) | ||
done(new Error("Should have no error")) | ||
} else if(res.data.length !== 1){ | ||
console.log(res) | ||
done(new Error("Should return only one element for this dataset")) | ||
} else if(!_.contains(_.keys(res.data[0]), "queue")){ | ||
console.log(res) | ||
done(new Error("Should have an attribute named 'queue' in 'data'")) | ||
} else if(!_.contains(_.keys(res), "summary")){ | ||
console.log(res) | ||
done(new Error("Should have an attribute named 'summary'")) | ||
} else { | ||
done() | ||
done(new Error("Did not update")) | ||
} | ||
oriskami["EventQueue"].list(function(err, res){ | ||
if(err){ | ||
console.log(err, res) | ||
done(new Error("Should have no error")) | ||
} else if(res.data.length !== 1){ | ||
console.log(res) | ||
done(new Error("Should return only one element for this dataset")) | ||
} else if(!_.contains(_.keys(res.data[0]), "queue")){ | ||
console.log(res) | ||
done(new Error("Should have an attribute named 'queue' in 'data'")) | ||
} else if(!_.contains(_.keys(res), "summary")){ | ||
console.log(res) | ||
done(new Error("Should have an attribute named 'summary'")) | ||
} else { | ||
done() | ||
} | ||
}) | ||
}) | ||
@@ -106,0 +126,0 @@ }) |
@@ -134,16 +134,26 @@ var _ = require("lodash") | ||
xit("Should list", function(done){ | ||
var reviewId = 0 | ||
, reviewerId= "124" | ||
oriskami.set("timeout", 20000) | ||
oriskami["EventReview"].list(function(err, res){ | ||
if(!err && res.data.length > 0 && _.contains(_.keys(res.data[0]), "message")) { | ||
// cleanup | ||
_.each(res.data, function(eventReview){ | ||
if(eventReview.id === idResource){ | ||
var nReviews = res.data.length | ||
oriskami["EventReview"].del(idResource, {"review_id": nReviews - 1}, done) | ||
} | ||
}) | ||
} else { | ||
oriskami["EventReview"].update(idResource | ||
, {"review_id": reviewId, "reviewer_id": reviewerId} | ||
, function(err, res){ | ||
if(err){ | ||
console.log(res) | ||
done(new Error("Should have only one returned element")) | ||
return done(new Error("Should have only one returned element")) | ||
} | ||
oriskami["EventReview"].list(function(err, res){ | ||
if(!err && res.data.length > 0 && _.contains(_.keys(res.data[0]), "message")) { | ||
// cleanup | ||
_.each(res.data, function(eventReview){ | ||
if(eventReview.id === idResource){ | ||
var nReviews = res.data.length | ||
oriskami["EventReview"].del(idResource, {"review_id": nReviews - 1}, done) | ||
} | ||
}) | ||
} else { | ||
console.log(res) | ||
done(new Error("Should have only one returned element")) | ||
} | ||
}) | ||
}) | ||
@@ -150,0 +160,0 @@ }) |
@@ -29,3 +29,9 @@ var _ = require("lodash") | ||
it("Should list", function(done){ | ||
oriskami["FilterScoringsDedicated"].list(done) | ||
oriskami["FilterScoringsDedicated"].list(function(err, res){ | ||
if(err){ | ||
console.log(err) | ||
return done(new Error("Failed to list filter scorings dedicated")) | ||
} | ||
done() | ||
}) | ||
}) | ||
@@ -38,10 +44,34 @@ | ||
, "features" : "all" | ||
}, done) | ||
}, function(err, res) { | ||
if(err) { | ||
console.log(err) | ||
return done(new Error("Failed to create scoring")) | ||
} | ||
done() | ||
}) | ||
}) | ||
it("Should retrieve", function(done){ | ||
oriskami["FilterScoringsDedicated"].retrieve(0, done) | ||
oriskami["FilterScoringsDedicated"].create({ | ||
"query_target" : "sample:100" | ||
, "query_base" : "fr" | ||
, "features" : "all" | ||
}, function(err, res0) { | ||
if(err){ | ||
console.log(err) | ||
return done(new Error("Failed to create / retrieve score")) | ||
} | ||
var expectedScoreId = res0.model_id | ||
oriskami["FilterScoringsDedicated"].retrieve(res0.model_id, function(err, res1) { | ||
if(err){ | ||
console.log(err) | ||
console.log("Expected score id", expectedScoreId) | ||
return done(new Error("Failed to retrieve the created score")) | ||
} | ||
done() | ||
}) | ||
}) | ||
}) | ||
it("Should update status", function(done){ | ||
xit("Should update status", function(done){ | ||
oriskami["FilterScoringsDedicated"].create({ | ||
@@ -48,0 +78,0 @@ "is_active": "false" |
@@ -31,5 +31,13 @@ var _ = require("lodash") | ||
oriskami["RouterBackup"].create({"name": now}, function(err, res){ | ||
if(err){ console.log(err, res); done(new Error("Did not create")) } | ||
if(err){ | ||
console.log(err, res) | ||
done(new Error("Did not create")) | ||
} | ||
oriskami["RouterBackup"].list(function(err, res){ | ||
if(err){ done(new Error("Did not list")) } | ||
if(err){ | ||
console.log(err, res) | ||
done(new Error("Did not list")) | ||
} | ||
var backups = res.data | ||
@@ -45,3 +53,6 @@ , backupId | ||
oriskami["RouterBackup"].del(backupId, function(err, res){ | ||
if(err){ return done(new Error("Did not delete")) } | ||
if(err){ | ||
console.log(err, res) | ||
return done(new Error("Did not delete")) | ||
} | ||
done() | ||
@@ -48,0 +59,0 @@ }) |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Network access
Supply chain riskThis module accesses the network.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
136971
58
3272
3
169
4
+ Addedall@0.0.0
+ Addedall@0.0.0(transitive)
- Removedlodash@^3.3.1
- Removedlodash@3.10.1(transitive)