konduto-ruby 1.0.4 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +236 -0
- data/lib/konduto-ruby.rb +8 -2
- data/lib/konduto-ruby/associations/associations.rb +51 -0
- data/lib/konduto-ruby/attributes.rb +32 -0
- data/lib/konduto-ruby/konduto_address.rb +2 -27
- data/lib/konduto-ruby/konduto_base.rb +56 -0
- data/lib/konduto-ruby/konduto_bus_leg.rb +4 -0
- data/lib/konduto-ruby/konduto_customer.rb +4 -29
- data/lib/konduto-ruby/konduto_device.rb +3 -30
- data/lib/konduto-ruby/konduto_flight_leg.rb +8 -0
- data/lib/konduto-ruby/konduto_geolocation.rb +2 -23
- data/lib/konduto-ruby/konduto_item.rb +3 -29
- data/lib/konduto-ruby/konduto_loyalty.rb +2 -22
- data/lib/konduto-ruby/konduto_navigation_info.rb +5 -0
- data/lib/konduto-ruby/konduto_order.rb +22 -152
- data/lib/konduto-ruby/konduto_order_status.rb +2 -21
- data/lib/konduto-ruby/konduto_passenger.rb +8 -36
- data/lib/konduto-ruby/konduto_payment.rb +4 -25
- data/lib/konduto-ruby/konduto_seller.rb +3 -23
- data/lib/konduto-ruby/konduto_travel.rb +6 -48
- data/lib/konduto-ruby/konduto_travel_info.rb +3 -24
- data/lib/konduto-ruby/konduto_travel_leg.rb +5 -0
- data/lib/konduto-ruby/validations/class_methods.rb +15 -0
- data/lib/konduto-ruby/validations/validations.rb +28 -0
- metadata +29 -5
- data/lib/konduto-ruby/konduto_navigation.rb +0 -37
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2e6c731cc451c876728e72d78c83d3ad377594e8
|
4
|
+
data.tar.gz: e23494d79a6eb309cd9df9559ce6fa23b90568e1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c91ec72c7626b8825d3253b53ffa492ae3b4871046a6f22746d8f9d5c2a1f473dab2f964e31d3b6b0b37676f900cc406c0dbc57cebb2bd429d96d1f738998b1b
|
7
|
+
data.tar.gz: a0dd0e4746672156586de32a7744e1342e10872f0736d4fed1712796ae936b5766af6f9f1b97bdbb1e7d4f78eeddfeed2e2cbc2c3317723390d4527211716c47
|
data/README.md
ADDED
@@ -0,0 +1,236 @@
|
|
1
|
+
## Hey there,
|
2
|
+
|
3
|
+
This document is a rubyist adaptation of the original README file made for the Java API version. You can get access to it by clicking [here](https://github.com/konduto/java-sdk/blob/master/README.md). **Konduto is a trademark, all rights reserved**. This project has no intention beyond helping ruby users to get easy access to Konduto's API through a simplified interface.
|
4
|
+
|
5
|
+
## Intro
|
6
|
+
|
7
|
+
Welcome! This document will explain how to integrate with Konduto's anti-fraud service so you can begin to spot fraud on your e-commerce website.
|
8
|
+
|
9
|
+
Our service uses the visitor's behavior to analyze browsing patterns and detect fraud. You will need to add a **JavaScript** snippet to your website and tag your pages, so we can see your visitors, and call our **REST API** to send purchases, so we can analyze them.
|
10
|
+
|
11
|
+
This document refers to the **Ruby SDK** used for our API.
|
12
|
+
|
13
|
+
## Requirements
|
14
|
+
|
15
|
+
* This API was tested with Ruby MRI version 2.
|
16
|
+
|
17
|
+
## Installation
|
18
|
+
|
19
|
+
To get started add Konduto's gem as a dependency in your **Gemfile**:
|
20
|
+
|
21
|
+
gem 'konduto-ruby'
|
22
|
+
|
23
|
+
After that, run **bundle install**. If your are not using a Gemfile, run the following command
|
24
|
+
|
25
|
+
$ gem install konduto-ruby
|
26
|
+
|
27
|
+
## Getting Started
|
28
|
+
|
29
|
+
When a customer makes a purchase you must send the order information to us so we can analyze it. We perform a real-time analysis and return you a **recommendation** of what to do next and a score, a numeric confidence level about that order.
|
30
|
+
|
31
|
+
While many of the parameters we accept are optional we recommend you send all you can, because every data point matters for the analysis. The **billing address** and **credit card information** are specially important, though we understand there are cases where you don't have that information.
|
32
|
+
|
33
|
+
|
34
|
+
## Set your API key
|
35
|
+
|
36
|
+
You will need an API key to authenticate the requests. Luckily for you the examples below have been populated with a working key, so you can just copy and paste to see how it works.
|
37
|
+
|
38
|
+
```ruby
|
39
|
+
# creates a Konduto instance, which is a class that communicates with our API by using HTTP methods.
|
40
|
+
konduto = KondutoRuby.new('T738D516F09CAB3A2C1EE') # T738D516F09CAB3A2C1EE is the API key
|
41
|
+
```
|
42
|
+
|
43
|
+
## Creating an order
|
44
|
+
|
45
|
+
`KondutoOrder` is a class that models the attributes and behavior of an order.
|
46
|
+
|
47
|
+
All entities involved in Konduto's analysis process (e.g customer, shopping cart, payment, etc.) inherit
|
48
|
+
from KondutoBase and you can get access to them by calling their name and passing a hash of attributes, as shown below.
|
49
|
+
|
50
|
+
```ruby
|
51
|
+
order = KondutoOrder.new({
|
52
|
+
id: '123',
|
53
|
+
totalAmount: 123.4,
|
54
|
+
customer: customer # customer is an instance of KondutoCustomer
|
55
|
+
})
|
56
|
+
```
|
57
|
+
One can also use the more conventional set-based approach as seen below.
|
58
|
+
|
59
|
+
```ruby
|
60
|
+
order = KondutoOrder.new
|
61
|
+
order.id = "123"
|
62
|
+
order.total_amount = 123.4
|
63
|
+
order.customer = customer
|
64
|
+
```
|
65
|
+
|
66
|
+
>
|
67
|
+
**NOTICE**: the order created above is really, really simple. The more detail you provide, more accurate Konduto's analysis will be.
|
68
|
+
>
|
69
|
+
|
70
|
+
### Order parameters
|
71
|
+
|
72
|
+
Parameter | Description
|
73
|
+
--- | ---
|
74
|
+
id | _(required)_ Unique identifier for each order.
|
75
|
+
visitor | _(required)_ Visitor identifier obtained from our JavaScript snippet.
|
76
|
+
total_amount | _(required)_ Total order amount.
|
77
|
+
shipping_amount | _(optional)_ Shipping and handling amount.
|
78
|
+
tax_amount | _(optional)_ Taxes amount.
|
79
|
+
currency | _(optional)_ Currency code with 3 letters (ISO-4712).
|
80
|
+
installments | _(optional)_ Number of installments in the payment plan.
|
81
|
+
ip | _(optional)_ Customer's IPv4 address.
|
82
|
+
customer | _(required)_ Object containing the customer details.
|
83
|
+
payment | _(optional)_ Array containing the payment methods.
|
84
|
+
billing | _(optional)_ Object containing the billing information.
|
85
|
+
shipping | _(optional)_ Object containing the shipping information.
|
86
|
+
shopping_cart | _(optional)_ Array containing the items purchased.
|
87
|
+
analyze | _(optional)_ A boolean indicating if the order should be analyzed. Defaults to **true**.
|
88
|
+
first_message | _(optional)_ Time when the first message was exchanged between customer and seller.
|
89
|
+
messages_exchanged | _(optional)_ Number of messages exchanged between customer and seller.
|
90
|
+
purchased_at | _(optional)_ Time when the customer purchased from the seller.
|
91
|
+
|
92
|
+
#### Customer information
|
93
|
+
|
94
|
+
Parameter | Description
|
95
|
+
--- | ---
|
96
|
+
id | _(required)_ **Unique** identifier for each customer. Can be anything you like (counter, id, e-mail address) as long as it's consistent in future orders.
|
97
|
+
name | _(required)_ Customer's full name.
|
98
|
+
email | _(required)_ Customer's e-mail address
|
99
|
+
tax_id | _(optional)_ Customer's tax id.
|
100
|
+
phone1 | _(optional)_ Customer's primary phone number
|
101
|
+
phone 2 | _(optional)_ Customer's secondary phone number
|
102
|
+
new | _(optional)_ Boolean indicating if the customer is using a newly created account for this purchase.
|
103
|
+
vip | _(optional)_ Boolean indicating if the customer is a VIP or frequent buyer.
|
104
|
+
created_at | _(optional)_ Date when customer was created.
|
105
|
+
|
106
|
+
|
107
|
+
#### Payment information
|
108
|
+
|
109
|
+
Parameter | Description
|
110
|
+
--- | ---
|
111
|
+
status | _(required)_ The status of the transaction returned by the payment processor. Accepts `approved`, `declined` or `pending` if the payment wasn't been processed yet.
|
112
|
+
bin | _(optional)_ First six digits of the customer's credit card. Used to identify the type of card being sent.
|
113
|
+
last4 | _(optional)_ Four last digits of the customer's credit card number.
|
114
|
+
expiration_date | _(optional)_ Card's expiration date under MMYYYY format.
|
115
|
+
|
116
|
+
|
117
|
+
#### Billing address
|
118
|
+
|
119
|
+
Parameter | Description
|
120
|
+
--- | ---
|
121
|
+
name | _(optional)_ Cardholder's full name.
|
122
|
+
address1 | _(optional)_ Cardholder's billing address on file with the bank.
|
123
|
+
address2 | _(optional)_ Additional cardholder address information.
|
124
|
+
city | _(optional)_ Cardholder's city.
|
125
|
+
state | _(optional)_ Cardholder's state.
|
126
|
+
zip | _(optional)_ Cardholder's ZIP code.
|
127
|
+
country | _(optional)_ Cardholder's country code (ISO 3166-2)
|
128
|
+
|
129
|
+
|
130
|
+
#### Shipping address
|
131
|
+
|
132
|
+
Parameter | Description
|
133
|
+
--- | ---
|
134
|
+
name | _(optional)_ Recipient's full name.
|
135
|
+
address1 | _(optional)_ Recipient's shipping address.
|
136
|
+
address2 | _(optional)_ Additional recipient address information.
|
137
|
+
city | _(optional)_ Recipient's city.
|
138
|
+
state | _(optional)_ Recipient's state.
|
139
|
+
zip | _(optional)_ Recipient's ZIP code.
|
140
|
+
country | _(optional)_ Recipient's country code (ISO 3166-2)
|
141
|
+
|
142
|
+
|
143
|
+
#### Shopping cart
|
144
|
+
|
145
|
+
Parameter | Description
|
146
|
+
--- | ---
|
147
|
+
sku | _(optional)_ Product or service's SKU or inventory id.
|
148
|
+
product_code | _(optional)_ Product or service's UPC, barcode or secondary id.
|
149
|
+
category | _(optional)_ Category code for the item purchased. [See here](http://docs.konduto.com/#n-tables) for the list.
|
150
|
+
name | _(optional)_ Name of the product or service.
|
151
|
+
description | _(optional)_ Detailed description of the item.
|
152
|
+
unit_cost | _(optional)_ Cost of a single unit of this item.
|
153
|
+
quantity | _(optional)_ Number of units purchased.
|
154
|
+
discount | _(optional)_ Discounted amount for this item.
|
155
|
+
created_at | _(optional)_ Date when this item was created.
|
156
|
+
|
157
|
+
### Seller
|
158
|
+
|
159
|
+
Parameter | Description
|
160
|
+
--- | ---
|
161
|
+
id | _(required)_ Seller's id
|
162
|
+
name | _(optional)_ Sellers's name
|
163
|
+
created_at | _(optional)_ Date when the seller was created
|
164
|
+
|
165
|
+
|
166
|
+
## Sending an order for analysis.
|
167
|
+
|
168
|
+
After creating the order, sending it to Konduto's analysis is very simple.
|
169
|
+
|
170
|
+
```ruby
|
171
|
+
if order.valid?
|
172
|
+
begin
|
173
|
+
konduto.analyze(order);
|
174
|
+
# A RuntimeError will be thrown if the response is anything other than 200 OK.
|
175
|
+
rescue RuntimeError => e
|
176
|
+
# Put any exception handling here.
|
177
|
+
p e.message
|
178
|
+
end
|
179
|
+
else
|
180
|
+
p order.errors.messages
|
181
|
+
end
|
182
|
+
```
|
183
|
+
|
184
|
+
Notice that if the analysis fails, a **RuntimError** will be thrown. Handle it as you wish.
|
185
|
+
|
186
|
+
After the analysis, some order attributes will be filled. For example the recommendation.
|
187
|
+
|
188
|
+
```ruby
|
189
|
+
# The command below should print something like "Konduto recommendation is to APPROVE".
|
190
|
+
p "Konduto recommendation is to: #{order.recommendation}";
|
191
|
+
```
|
192
|
+
|
193
|
+
## Querying an order from our servers.
|
194
|
+
|
195
|
+
In order to do that use the Konduto class in the following way:
|
196
|
+
|
197
|
+
```ruby
|
198
|
+
order = konduto.get_order order_id # orderId is a String
|
199
|
+
```
|
200
|
+
|
201
|
+
## Updating an order status
|
202
|
+
|
203
|
+
```ruby
|
204
|
+
# the order status will be set to newStatus if the request succeeds.
|
205
|
+
konduto.update_order_status(order, new_status, 'some comments');
|
206
|
+
```
|
207
|
+
|
208
|
+
Parameter | Description
|
209
|
+
--- | ---
|
210
|
+
status | _(required)_ New status for this transaction. Either `approved`, `declined` or `fraud`, when you have identified a fraud or chargeback.
|
211
|
+
comments | _(required)_ Reason or comments about the status update.
|
212
|
+
|
213
|
+
## Sending requests through a proxy
|
214
|
+
To send requests through a proxy just build a new Konduto instance and set the proxy host passing the proxy url as parameters of `proxy=` method. If the proxy requires username and password, just set then at the proxy url you'll pass to `proxy=` method.
|
215
|
+
|
216
|
+
```ruby
|
217
|
+
konduto = KondutoRuby.new(API_KEY)
|
218
|
+
konduto.proxy = 'http://server-ip:port/'
|
219
|
+
# Or, using username and password
|
220
|
+
konduto.proxy = 'http://USERNAME:PASSWORD@proxy-server:port/'
|
221
|
+
# use Konduto's API as usual
|
222
|
+
konduto.get_order(ORDER_ID)
|
223
|
+
```
|
224
|
+
|
225
|
+
## Reference Tables
|
226
|
+
|
227
|
+
Please [click here](http://docs.konduto.com/#n-tables) for the Currency and Category reference tables.
|
228
|
+
|
229
|
+
## Troubleshooting
|
230
|
+
|
231
|
+
If you experience problems sending orders for analysis, querying orders or updating order status, it might be a good idea
|
232
|
+
to call `konduto.debug()`. This will print out the API Key, the endpoint, ~~the request body and the response body~~.
|
233
|
+
|
234
|
+
## Support
|
235
|
+
|
236
|
+
Feel free to end us a feedback via email or open an issue if you have some doubts or find out bugs. You can also contact konduto's [support team](mailto:support@konduto.com) if you have any questions or suggestions!
|
data/lib/konduto-ruby.rb
CHANGED
@@ -1,9 +1,11 @@
|
|
1
|
+
require 'json'
|
2
|
+
require 'konduto-ruby/konduto_base'
|
3
|
+
Dir[__dir__ + '/konduto-ruby/*.rb'].each { |file| require file }
|
4
|
+
|
1
5
|
class KondutoRuby
|
2
|
-
require 'json'
|
3
6
|
require 'uri'
|
4
7
|
require 'base64'
|
5
8
|
require 'net/http'
|
6
|
-
require 'konduto-ruby/konduto_order'
|
7
9
|
attr_accessor :request_body, :response_body, :endpoint
|
8
10
|
attr_reader :api_key
|
9
11
|
|
@@ -98,4 +100,8 @@ class KondutoRuby
|
|
98
100
|
raise (JSON.parse(response.body)['message']).to_s
|
99
101
|
end
|
100
102
|
end
|
103
|
+
|
104
|
+
def debug
|
105
|
+
"API Key: #{@api_key}\nEndpoint: #{@endpoint}\n"
|
106
|
+
end
|
101
107
|
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
module Konduto
|
2
|
+
module Associations
|
3
|
+
|
4
|
+
def has_one(model, options = {})
|
5
|
+
name = options[:alias] || model
|
6
|
+
|
7
|
+
self.send(:define_method, name) do
|
8
|
+
instance_variable_get("@#{name}")
|
9
|
+
end
|
10
|
+
|
11
|
+
self.send(:define_method, "#{name}=".to_sym) do |value|
|
12
|
+
klass = "Konduto#{model.to_s.gsub(/_/, ' ').split.map(&:capitalize).join('')}"
|
13
|
+
|
14
|
+
if value.class.to_s == klass
|
15
|
+
instance_variable_set("@#{name}", value)
|
16
|
+
elsif value.is_a? Hash
|
17
|
+
instance_variable_set("@#{name}", Object::const_get(klass).new(value))
|
18
|
+
else
|
19
|
+
raise ArgumentError, "Expected class #{klass}, got #{value.class} at #{self.class}"
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def has_many(model, options = {})
|
25
|
+
name = options[:alias] || model
|
26
|
+
|
27
|
+
self.send(:define_method, name) do
|
28
|
+
instance_variable_set("@#{name}", []) if instance_variable_get("@#{name}").nil?
|
29
|
+
|
30
|
+
instance_variable_get("@#{name}")
|
31
|
+
end
|
32
|
+
|
33
|
+
self.send(:define_method, "#{name}=".to_sym) do |arr|
|
34
|
+
klass = "Konduto#{model.to_s.gsub(/_/, ' ').split.map(&:capitalize).join('')}"
|
35
|
+
temp_arr = []
|
36
|
+
|
37
|
+
arr.each do |value|
|
38
|
+
if value.class.to_s == klass
|
39
|
+
temp_arr << value
|
40
|
+
elsif value.is_a? Hash
|
41
|
+
temp_arr << Object::const_get(klass).new(value)
|
42
|
+
else
|
43
|
+
raise ArgumentError, "Expected class #{klass}, got #{value.class} at #{self.class}"
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
instance_variable_set("@#{name}", temp_arr)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module Konduto
|
2
|
+
module Attributes
|
3
|
+
def attributes(*attributes)
|
4
|
+
attributes.each do |attribute|
|
5
|
+
if attribute.is_a? Hash
|
6
|
+
klass = attribute.values[0].to_s.gsub(/_/, ' ').split.map(&:capitalize).join('')
|
7
|
+
type = Object::const_get(klass)
|
8
|
+
name = attribute.keys[0]
|
9
|
+
else
|
10
|
+
name = attribute
|
11
|
+
end
|
12
|
+
|
13
|
+
self.send(:define_method, "#{name}=".to_sym) do |value|
|
14
|
+
unless type.nil?
|
15
|
+
if value.is_a?(String)
|
16
|
+
value = type.parse(value) if type == Date || type == DateTime
|
17
|
+
value = value.to_sym if type == Symbol
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
instance_variable_set("@#{name.to_s.gsub(/[?|!]$/, '')}", value)
|
22
|
+
end
|
23
|
+
|
24
|
+
self.send(:define_method, name) do
|
25
|
+
instance_variable_get("@#{name.to_s.gsub(/[?|!]$/, '')}")
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
alias :attribute :attributes
|
31
|
+
end
|
32
|
+
end
|
@@ -1,28 +1,3 @@
|
|
1
|
-
class KondutoAddress
|
2
|
-
|
3
|
-
|
4
|
-
def initialize(*args)
|
5
|
-
unless args[0].nil?
|
6
|
-
args[0].each do |k,v|
|
7
|
-
instance_variable_set("@#{k}", v) unless v.nil?
|
8
|
-
end
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
|
-
def to_hash
|
13
|
-
hash = {
|
14
|
-
name: self.name,
|
15
|
-
address1: self.address1,
|
16
|
-
address2: self.address2,
|
17
|
-
city: self.city,
|
18
|
-
state: self.state,
|
19
|
-
country: self.country,
|
20
|
-
zip: self.zip
|
21
|
-
}
|
22
|
-
KondutoUtils.remove_nil_keys_from_hash(hash)
|
23
|
-
end
|
24
|
-
|
25
|
-
def to_json
|
26
|
-
self.to_hash.to_json
|
27
|
-
end
|
1
|
+
class KondutoAddress < KondutoBase
|
2
|
+
attributes :name, :address1, :address2, :zip, :city, :state, :country
|
28
3
|
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
require_relative 'associations/associations'
|
2
|
+
require_relative 'validations/validations'
|
3
|
+
require_relative 'attributes'
|
4
|
+
|
5
|
+
class KondutoBase
|
6
|
+
extend Konduto::Associations
|
7
|
+
extend Konduto::Attributes
|
8
|
+
include Konduto::Validations
|
9
|
+
|
10
|
+
def initialize(*args)
|
11
|
+
unless args[0].nil?
|
12
|
+
args[0].each do |key, value|
|
13
|
+
unless value.nil?
|
14
|
+
if respond_to? "#{key}=".to_sym
|
15
|
+
send("#{key}=", value)
|
16
|
+
elsif key == 'class'
|
17
|
+
send('klass=', value)
|
18
|
+
else
|
19
|
+
instance_variable_set("@#{key}", value)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def to_hash
|
27
|
+
Hash[
|
28
|
+
instance_variables.map do |name|
|
29
|
+
value = instance_variable_get(name)
|
30
|
+
|
31
|
+
if value.respond_to? :each
|
32
|
+
value = value.map {|v| v.to_hash }
|
33
|
+
elsif !value.instance_variables.empty?
|
34
|
+
value = value.to_hash
|
35
|
+
elsif value.is_a?(Date) || value.is_a?(Symbol)
|
36
|
+
value = value.to_s
|
37
|
+
end
|
38
|
+
|
39
|
+
[name == :@klass ? 'class' : name.to_s.gsub(/^@/, ''), value]
|
40
|
+
end
|
41
|
+
]
|
42
|
+
end
|
43
|
+
|
44
|
+
def to_json
|
45
|
+
raise RuntimeError, 'Invalid object for serialization' unless self.valid?
|
46
|
+
self.to_hash.to_json
|
47
|
+
end
|
48
|
+
|
49
|
+
def ==(other)
|
50
|
+
self.instance_variables.each do |name|
|
51
|
+
return false unless self.instance_variable_get(name) == other.instance_variable_get(name)
|
52
|
+
end
|
53
|
+
|
54
|
+
true
|
55
|
+
end
|
56
|
+
end
|
@@ -1,31 +1,6 @@
|
|
1
|
-
class KondutoCustomer
|
2
|
-
|
1
|
+
class KondutoCustomer < KondutoBase
|
2
|
+
attributes :id, :name, :email, :new?, :vip?, :phone1, :phone2, :tax_id
|
3
|
+
attribute created_at: :date
|
3
4
|
|
4
|
-
|
5
|
-
unless args[0].nil?
|
6
|
-
args[0].each do |k,v|
|
7
|
-
instance_variable_set("@#{k}", v) unless v.nil?
|
8
|
-
end
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
|
-
def to_hash
|
13
|
-
hash = {
|
14
|
-
id: self.id,
|
15
|
-
name: self.name,
|
16
|
-
email: self.email,
|
17
|
-
dob: self.dob,
|
18
|
-
tax_id: self.tax_id,
|
19
|
-
phone1: self.phone1,
|
20
|
-
phone2: self.phone2,
|
21
|
-
created_at: self.created_at,
|
22
|
-
new: self.new,
|
23
|
-
vip: self.vip
|
24
|
-
}
|
25
|
-
KondutoUtils.remove_nil_keys_from_hash(hash)
|
26
|
-
end
|
27
|
-
|
28
|
-
def to_json
|
29
|
-
self.to_hash.to_json
|
30
|
-
end
|
5
|
+
validates_presence_of :id, :name, :email
|
31
6
|
end
|
@@ -1,31 +1,4 @@
|
|
1
|
-
class KondutoDevice
|
2
|
-
|
3
|
-
|
4
|
-
def initialize(*args)
|
5
|
-
unless args[0].nil?
|
6
|
-
args[0].each do |k,v|
|
7
|
-
instance_variable_set("@#{k}", v) unless v.nil?
|
8
|
-
end
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
|
-
def to_hash
|
13
|
-
hash = {
|
14
|
-
user_id: self.user_id,
|
15
|
-
fingerprint: self.fingerprint,
|
16
|
-
platform: self.platform,
|
17
|
-
browser: self.browser,
|
18
|
-
language: self.language,
|
19
|
-
timezone: self.timezone,
|
20
|
-
cookie: self.cookie,
|
21
|
-
javascript: self.javascript,
|
22
|
-
flash: self.flash,
|
23
|
-
ip: self.ip
|
24
|
-
}
|
25
|
-
KondutoUtils.remove_nil_keys_from_hash(hash)
|
26
|
-
end
|
27
|
-
|
28
|
-
def to_json
|
29
|
-
self.to_hash.to_json
|
30
|
-
end
|
1
|
+
class KondutoDevice < KondutoBase
|
2
|
+
attributes :user_id, :fingerprint, :platform, :browser, :language, :timezone, \
|
3
|
+
:cookie, :javascript, :flash, :ip
|
31
4
|
end
|
@@ -0,0 +1,8 @@
|
|
1
|
+
class KondutoFlightLeg < KondutoTravelLeg
|
2
|
+
attributes :origin_airport, :origin_city, :destination_airport, :destination_city
|
3
|
+
validates_presence_of :origin_airport, :destination_airport
|
4
|
+
|
5
|
+
validates(:origin_airport, :destination_airport) do |attr|
|
6
|
+
attr.match(/[a-zA-Z]{3}/)
|
7
|
+
end
|
8
|
+
end
|
@@ -1,24 +1,3 @@
|
|
1
|
-
class KondutoGeolocation
|
2
|
-
|
3
|
-
|
4
|
-
def initialize(*args)
|
5
|
-
unless args[0].nil?
|
6
|
-
args[0].each do |k,v|
|
7
|
-
instance_variable_set("@#{k}", v) unless v.nil?
|
8
|
-
end
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
|
-
def to_hash
|
13
|
-
hash = {
|
14
|
-
city: self.city,
|
15
|
-
state: self.state,
|
16
|
-
country: self.country
|
17
|
-
}
|
18
|
-
KondutoUtils.remove_nil_keys_from_hash(hash)
|
19
|
-
end
|
20
|
-
|
21
|
-
def to_json
|
22
|
-
self.to_hash.to_json
|
23
|
-
end
|
1
|
+
class KondutoGeolocation < KondutoBase
|
2
|
+
attributes :city, :state, :country
|
24
3
|
end
|
@@ -1,30 +1,4 @@
|
|
1
|
-
class KondutoItem
|
2
|
-
|
3
|
-
|
4
|
-
def initialize(*args)
|
5
|
-
unless args[0].nil?
|
6
|
-
args[0].each do |k,v|
|
7
|
-
instance_variable_set("@#{k}", v) unless v.nil?
|
8
|
-
end
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
|
-
def to_hash
|
13
|
-
hash = {
|
14
|
-
sku: self.sku,
|
15
|
-
category: self.category,
|
16
|
-
name: self.name,
|
17
|
-
description: self.description,
|
18
|
-
product_code: self.product_code,
|
19
|
-
unit_cost: self.unit_cost,
|
20
|
-
quantity: self.quantity,
|
21
|
-
discount: self.discount,
|
22
|
-
created_at: self.created_at
|
23
|
-
}
|
24
|
-
KondutoUtils.remove_nil_keys_from_hash(hash)
|
25
|
-
end
|
26
|
-
|
27
|
-
def to_json
|
28
|
-
self.to_hash.to_json
|
29
|
-
end
|
1
|
+
class KondutoItem < KondutoBase
|
2
|
+
attributes :sku, :category, :name, :description, :product_code, :unit_cost, :quantity, :discount
|
3
|
+
attribute created_at: :date
|
30
4
|
end
|
@@ -1,23 +1,3 @@
|
|
1
|
-
class KondutoLoyalty
|
2
|
-
|
3
|
-
|
4
|
-
def initialize(*args)
|
5
|
-
unless args[0].nil?
|
6
|
-
args[0].each do |k,v|
|
7
|
-
instance_variable_set("@#{k}", v) unless v.nil?
|
8
|
-
end
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
|
-
def to_hash
|
13
|
-
hash = {
|
14
|
-
program: self.program,
|
15
|
-
category: self.category
|
16
|
-
}
|
17
|
-
KondutoUtils.remove_nil_keys_from_hash(hash)
|
18
|
-
end
|
19
|
-
|
20
|
-
def to_json
|
21
|
-
self.to_hash.to_json
|
22
|
-
end
|
1
|
+
class KondutoLoyalty < KondutoBase
|
2
|
+
attributes :program, :category
|
23
3
|
end
|
@@ -0,0 +1,5 @@
|
|
1
|
+
class KondutoNavigationInfo < KondutoBase
|
2
|
+
attributes :session_time, :referrer, :time_site_1d, :new_accounts_1d, :password_resets_1d, :sales_declined_1d,\
|
3
|
+
:sessions_1d, :time_since_last_sale, :time_site_7d, :time_per_page_7d, :new_accounts_7d, \
|
4
|
+
:password_resets_7d, :checkout_count_7d, :sales_declined_7d, :sessions_7d
|
5
|
+
end
|
@@ -1,153 +1,23 @@
|
|
1
|
-
class KondutoOrder
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
params = args[0]
|
24
|
-
self.shopping_cart = []
|
25
|
-
self.payment = []
|
26
|
-
if params.nil?
|
27
|
-
self.shipping_address = KondutoAddress.new
|
28
|
-
self.billing_address = KondutoAddress.new
|
29
|
-
self.customer = KondutoCustomer.new
|
30
|
-
self.seller = KondutoSeller.new
|
31
|
-
self.travel = KondutoTravel.new
|
32
|
-
self.device = KondutoDevice.new
|
33
|
-
self.geolocation = KondutoGeolocation.new
|
34
|
-
self.navigation = KondutoNavigation.new
|
35
|
-
else
|
36
|
-
params = KondutoUtils.deep_symbolize_keys params
|
37
|
-
if params[shipping_address].nil?
|
38
|
-
self.shipping_address = KondutoAddress.new
|
39
|
-
else
|
40
|
-
self.shipping_address = KondutoAddress.new params[:shipping_address]
|
41
|
-
params.delete :shipping_address
|
42
|
-
end
|
43
|
-
|
44
|
-
if params[:billing_address].nil?
|
45
|
-
self.billing_address = KondutoAddress.new
|
46
|
-
else
|
47
|
-
self.billing_address = KondutoAddress.new params[:billing_address]
|
48
|
-
params.delete :billing_address
|
49
|
-
end
|
50
|
-
|
51
|
-
if params[:customer].nil?
|
52
|
-
self.customer = KondutoCustomer.new
|
53
|
-
else
|
54
|
-
self.customer = KondutoCustomer.new params[:customer]
|
55
|
-
params.delete :customer
|
56
|
-
end
|
57
|
-
|
58
|
-
if params[:seller].nil?
|
59
|
-
self.seller = KondutoSeller.new
|
60
|
-
else
|
61
|
-
self.seller = KondutoSeller.new params[:seller]
|
62
|
-
params.delete :seller
|
63
|
-
end
|
64
|
-
|
65
|
-
if params[:travel].nil?
|
66
|
-
self.travel = KondutoTravel.new
|
67
|
-
else
|
68
|
-
self.travel = KondutoTravel.new params[:travel]
|
69
|
-
params.delete :travel
|
70
|
-
end
|
71
|
-
|
72
|
-
if params[:device].nil?
|
73
|
-
self.device = KondutoDevice.new
|
74
|
-
else
|
75
|
-
self.device = KondutoDevice.new params[:device]
|
76
|
-
params.delete :device
|
77
|
-
end
|
78
|
-
|
79
|
-
if params[:geolocation].nil?
|
80
|
-
self.geolocation = KondutoGeolocation.new
|
81
|
-
else
|
82
|
-
self.geolocation = KondutoGeolocation.new params[:geolocation]
|
83
|
-
params.delete :geolocation
|
84
|
-
end
|
85
|
-
|
86
|
-
if params[:navigation].nil?
|
87
|
-
self.navigation = KondutoNavigation.new
|
88
|
-
else
|
89
|
-
self.navigation = KondutoNavigation.new params[:navigation]
|
90
|
-
params.delete :navigation
|
91
|
-
end
|
92
|
-
|
93
|
-
unless params[:payment].nil? || params[:payment].empty?
|
94
|
-
params[:payment].each do |p|
|
95
|
-
self.payment << KondutoPayment.new(p)
|
96
|
-
end
|
97
|
-
params.delete :payment
|
98
|
-
end
|
99
|
-
|
100
|
-
unless params[:shopping_cart].nil? || params[:shopping_cart].empty?
|
101
|
-
params[:shopping_cart].each do |i|
|
102
|
-
self.shopping_cart << KondutoItem.new(i)
|
103
|
-
end
|
104
|
-
params.delete :shopping_cart
|
105
|
-
end
|
106
|
-
|
107
|
-
params.each do |k,v|
|
108
|
-
instance_variable_set("@#{k}", v) unless v.nil?
|
109
|
-
end
|
110
|
-
end
|
111
|
-
end
|
112
|
-
|
113
|
-
def add_item (product)
|
114
|
-
self.shopping_cart << product
|
115
|
-
end
|
116
|
-
|
117
|
-
def add_payment (payment)
|
118
|
-
self.payment << payment
|
119
|
-
end
|
120
|
-
|
121
|
-
def to_hash
|
122
|
-
hash = {
|
123
|
-
id:self.id,
|
124
|
-
visitor:self.visitor,
|
125
|
-
total_amount:self.total_amount,
|
126
|
-
shipping_amount:self.shipping_amount,
|
127
|
-
tax_amount:self.tax_amount,
|
128
|
-
currency:self.currency,
|
129
|
-
installments:self.installments,
|
130
|
-
ip:self.ip,
|
131
|
-
first_message:self.first_message,
|
132
|
-
messages_exchanged:self.messages_enchanged,
|
133
|
-
purchased_at:self.purchased_at,
|
134
|
-
analyze:self.analyze,
|
135
|
-
customer:self.customer.to_hash,
|
136
|
-
payment: KondutoUtils.array_to_hash(self.payment),
|
137
|
-
billing:self.billing_address.to_hash,
|
138
|
-
shipping:self.shipping_address.to_hash,
|
139
|
-
shopping_cart:KondutoUtils.array_to_hash(self.shopping_cart),
|
140
|
-
travel:self.travel.to_hash,
|
141
|
-
seller:self.seller.to_hash,
|
142
|
-
device:self.device.to_hash,
|
143
|
-
geolocation:self.geolocation.to_hash,
|
144
|
-
navigation:self.navigation.to_hash
|
145
|
-
}
|
146
|
-
KondutoUtils.remove_nil_keys_from_hash(hash)
|
147
|
-
end
|
148
|
-
|
149
|
-
def to_json
|
150
|
-
self.to_hash.to_json
|
151
|
-
end
|
152
|
-
|
1
|
+
class KondutoOrder < KondutoBase
|
2
|
+
has_many :item, alias: :shopping_cart
|
3
|
+
has_many :payment
|
4
|
+
|
5
|
+
has_one :address, alias: :shipping
|
6
|
+
has_one :address, alias: :billing
|
7
|
+
has_one :customer
|
8
|
+
has_one :seller
|
9
|
+
has_one :travel
|
10
|
+
has_one :device
|
11
|
+
has_one :geolocation
|
12
|
+
has_one :navigation
|
13
|
+
|
14
|
+
attributes :id, :visitor, :timestamp, :total_amount, :tax_amount, :currency, :installments,
|
15
|
+
:ip, :score, :analyze, :messages_exchanged, :shipping_amount
|
16
|
+
|
17
|
+
attribute first_message: :date_time
|
18
|
+
attribute purchased_at: :date_time
|
19
|
+
attribute status: :symbol
|
20
|
+
attribute recommendation: :symbol
|
21
|
+
|
22
|
+
validates_presence_of :id, :total_amount, :customer
|
153
23
|
end
|
@@ -1,26 +1,7 @@
|
|
1
|
-
class KondutoOrderStatus
|
2
|
-
|
1
|
+
class KondutoOrderStatus < KondutoBase
|
2
|
+
attributes :status, :comments
|
3
3
|
|
4
4
|
def self.allowed_status
|
5
5
|
%w(APPROVED DECLINED NOT_AUTHORIZED CANCELLED FRAUD)
|
6
6
|
end
|
7
|
-
def initialize(*args)
|
8
|
-
unless args[0].nil?
|
9
|
-
args[0].each do |k,v|
|
10
|
-
instance_variable_set("@#{k}", v) unless v.nil?
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
def to_hash
|
16
|
-
hash = {
|
17
|
-
status: self.status,
|
18
|
-
comments: self.comments
|
19
|
-
}
|
20
|
-
KondutoUtils.remove_nil_keys_from_hash(hash)
|
21
|
-
end
|
22
|
-
|
23
|
-
def to_json
|
24
|
-
self.to_hash.to_json
|
25
|
-
end
|
26
7
|
end
|
@@ -1,40 +1,12 @@
|
|
1
|
-
class KondutoPassenger
|
2
|
-
|
1
|
+
class KondutoPassenger < KondutoBase
|
2
|
+
attributes :name, :document, :nationality, :frequent_traveler, :special_needs, \
|
3
|
+
:loyalty, :loyalty_program, :loyalty_category
|
4
|
+
attribute dob: :date
|
5
|
+
attribute document_type: :symbol
|
3
6
|
|
4
|
-
|
7
|
+
validates_presence_of :name, :document, :document_type, :nationality
|
5
8
|
|
6
|
-
|
7
|
-
|
8
|
-
if args[0].nil?
|
9
|
-
self.loyalty = KondutoLoyalty.new
|
10
|
-
else
|
11
|
-
if args[0][:loyalty].nil?
|
12
|
-
self.loyalty = KondutoLoyalty.new
|
13
|
-
else
|
14
|
-
self.loyalty = KondutoLoyalty.new args[0][:loyalty]
|
15
|
-
args[0].delete :loyalty
|
16
|
-
end
|
17
|
-
args[0].each do |k,v|
|
18
|
-
instance_variable_set("@#{k}", v) unless v.nil?
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
def to_hash
|
24
|
-
hash = {
|
25
|
-
name: self.name,
|
26
|
-
document: self.document,
|
27
|
-
document_type: self.document_type,
|
28
|
-
dob: self.dob,
|
29
|
-
nationality: self.nationality,
|
30
|
-
frequent_traveller: self.frequent_traveller,
|
31
|
-
special_needs: self.special_needs,
|
32
|
-
loyalty: self.loyalty.to_hash
|
33
|
-
}
|
34
|
-
KondutoUtils.remove_nil_keys_from_hash(hash)
|
35
|
-
end
|
36
|
-
|
37
|
-
def to_json
|
38
|
-
self.to_hash.to_json
|
9
|
+
validates(:nationality) do |attr|
|
10
|
+
attr.match(/[a-zA-Z]{2}/)
|
39
11
|
end
|
40
12
|
end
|
@@ -1,29 +1,8 @@
|
|
1
|
-
class KondutoPayment
|
2
|
-
|
1
|
+
class KondutoPayment < KondutoBase
|
2
|
+
attributes :expiration_date, :bin, :last4
|
3
|
+
attribute type: :symbol
|
4
|
+
attribute status: :symbol
|
3
5
|
|
4
6
|
TYPE_PAYMENT = [:credit, :boleto, :debit, :transfer, :voucher]
|
5
7
|
TYPE_STATUS = [:approved, :declined, :pending]
|
6
|
-
|
7
|
-
def initialize(*args)
|
8
|
-
unless args[0].nil?
|
9
|
-
args[0].each do |k,v|
|
10
|
-
instance_variable_set("@#{k}", v) unless v.nil?
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
def to_hash
|
16
|
-
hash = {
|
17
|
-
type: self.type,
|
18
|
-
status: self.status,
|
19
|
-
bin: self.bin,
|
20
|
-
last4: self.last4,
|
21
|
-
expiration_date: self.expiration_date
|
22
|
-
}
|
23
|
-
KondutoUtils.remove_nil_keys_from_hash(hash)
|
24
|
-
end
|
25
|
-
|
26
|
-
def to_json
|
27
|
-
self.to_hash.to_json
|
28
|
-
end
|
29
8
|
end
|
@@ -1,24 +1,4 @@
|
|
1
|
-
class KondutoSeller
|
2
|
-
|
3
|
-
|
4
|
-
def initialize(*args)
|
5
|
-
unless args[0].nil?
|
6
|
-
args[0].each do |k,v|
|
7
|
-
instance_variable_set("@#{k}", v) unless v.nil?
|
8
|
-
end
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
|
-
def to_hash
|
13
|
-
hash = {
|
14
|
-
id: self.id,
|
15
|
-
name: self.name,
|
16
|
-
created_at: self.created_at
|
17
|
-
}
|
18
|
-
KondutoUtils.remove_nil_keys_from_hash(hash)
|
19
|
-
end
|
20
|
-
|
21
|
-
def to_json
|
22
|
-
self.to_hash.to_json
|
23
|
-
end
|
1
|
+
class KondutoSeller < KondutoBase
|
2
|
+
attributes :id, :name
|
3
|
+
attribute created_at: :date
|
24
4
|
end
|
@@ -1,51 +1,9 @@
|
|
1
|
-
class KondutoTravel
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
attr_accessor :type, :departure, :return, :passengers
|
6
|
-
TYPE_TRAVEL = [:flight, :bus]
|
1
|
+
class KondutoTravel < KondutoBase
|
2
|
+
has_one :flight_leg, alias: :departure
|
3
|
+
has_one :flight_leg, alias: :return
|
4
|
+
has_many :passenger, alias: :passengers
|
7
5
|
|
8
|
-
|
9
|
-
self.passengers = []
|
6
|
+
attribute type: :symbol
|
10
7
|
|
11
|
-
|
12
|
-
self.departure = KondutoTravelInfo.new
|
13
|
-
self.return = KondutoTravelInfo.new
|
14
|
-
else
|
15
|
-
if args[0][:departure].nil?
|
16
|
-
self.departure = KondutoTravelInfo.new
|
17
|
-
else
|
18
|
-
self.departure = KondutoTravelInfo.new args[0][:departure]
|
19
|
-
args[0].delete :departure
|
20
|
-
end
|
21
|
-
if args[0][:return].nil?
|
22
|
-
self.return = KondutoTravelInfo.new
|
23
|
-
else
|
24
|
-
self.return = KondutoTravelInfo.new args[0][:return]
|
25
|
-
args[0].delete :return
|
26
|
-
end
|
27
|
-
|
28
|
-
args[0].each do |k,v|
|
29
|
-
instance_variable_set("@#{k}", v) unless v.nil?
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
def add_passenger (passenger)
|
35
|
-
self.passengers << passenger
|
36
|
-
end
|
37
|
-
|
38
|
-
def to_hash
|
39
|
-
hash = {
|
40
|
-
type: self.type,
|
41
|
-
departure: self.departure.to_hash,
|
42
|
-
return: self.return.to_hash,
|
43
|
-
passengers: KondutoUtils.array_to_hash(self.passengers)
|
44
|
-
}
|
45
|
-
KondutoUtils.remove_nil_keys_from_hash(hash)
|
46
|
-
end
|
47
|
-
|
48
|
-
def to_json
|
49
|
-
self.to_hash.to_json
|
50
|
-
end
|
8
|
+
validates_presence_of :type, :departure, :passengers
|
51
9
|
end
|
@@ -1,27 +1,6 @@
|
|
1
|
-
class KondutoTravelInfo
|
2
|
-
|
1
|
+
class KondutoTravelInfo < KondutoBase
|
2
|
+
attributes :number_of_connections, :class, :fare_basis
|
3
|
+
attribute date: :date
|
3
4
|
|
4
5
|
TRAVEL_CLASS = [:economy, :business, :first]
|
5
|
-
|
6
|
-
def initialize(*args)
|
7
|
-
unless args[0].nil?
|
8
|
-
args[0].each do |k,v|
|
9
|
-
instance_variable_set("@#{k}", v) unless v.nil?
|
10
|
-
end
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
def to_hash
|
15
|
-
hash = {
|
16
|
-
date: self.date,
|
17
|
-
number_of_connections: self.number_of_connections,
|
18
|
-
class: self.class,
|
19
|
-
fare_basis: self.fare_basis
|
20
|
-
}
|
21
|
-
KondutoUtils.remove_nil_keys_from_hash(hash)
|
22
|
-
end
|
23
|
-
|
24
|
-
def to_json
|
25
|
-
self.to_hash.to_json
|
26
|
-
end
|
27
6
|
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module ClassMethods
|
2
|
+
def validates_presence_of(*attributes)
|
3
|
+
self.send(:define_method, :required_attr) do
|
4
|
+
attributes
|
5
|
+
end
|
6
|
+
end
|
7
|
+
|
8
|
+
def validates(*attributes, &block)
|
9
|
+
if block_given?
|
10
|
+
self.send(:define_method, :custom_validations) do
|
11
|
+
{ Proc.new(&block) => attributes }
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require_relative 'class_methods'
|
2
|
+
|
3
|
+
module Konduto
|
4
|
+
module Validations
|
5
|
+
def self.included(base)
|
6
|
+
base.class_eval do
|
7
|
+
extend ClassMethods
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
def valid?
|
12
|
+
if respond_to? :required_attr
|
13
|
+
required_attr.each do |attr|
|
14
|
+
return false if send(attr).nil?
|
15
|
+
return false if send(attr).is_a?(Array) && send(attr).empty?
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
if respond_to? :custom_validations
|
20
|
+
custom_validations.each do |block, attrs|
|
21
|
+
attrs.each { |attr| return false unless block.call(send(attr)) } if attrs.is_a? Array
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
true
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: konduto-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gabriel Custodio
|
@@ -9,8 +9,22 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2016-
|
13
|
-
dependencies:
|
12
|
+
date: 2016-06-08 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: factory_girl
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
requirements:
|
18
|
+
- - "~>"
|
19
|
+
- !ruby/object:Gem::Version
|
20
|
+
version: '4.7'
|
21
|
+
type: :development
|
22
|
+
prerelease: false
|
23
|
+
version_requirements: !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - "~>"
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
version: '4.7'
|
14
28
|
description: A wrapper for konduto antifraud API
|
15
29
|
email:
|
16
30
|
- gcmartins93@gmail.com jonathancardosodecampos@gmail.com
|
@@ -18,14 +32,20 @@ executables: []
|
|
18
32
|
extensions: []
|
19
33
|
extra_rdoc_files: []
|
20
34
|
files:
|
35
|
+
- README.md
|
21
36
|
- lib/konduto-ruby.rb
|
37
|
+
- lib/konduto-ruby/associations/associations.rb
|
38
|
+
- lib/konduto-ruby/attributes.rb
|
22
39
|
- lib/konduto-ruby/konduto_address.rb
|
40
|
+
- lib/konduto-ruby/konduto_base.rb
|
41
|
+
- lib/konduto-ruby/konduto_bus_leg.rb
|
23
42
|
- lib/konduto-ruby/konduto_customer.rb
|
24
43
|
- lib/konduto-ruby/konduto_device.rb
|
44
|
+
- lib/konduto-ruby/konduto_flight_leg.rb
|
25
45
|
- lib/konduto-ruby/konduto_geolocation.rb
|
26
46
|
- lib/konduto-ruby/konduto_item.rb
|
27
47
|
- lib/konduto-ruby/konduto_loyalty.rb
|
28
|
-
- lib/konduto-ruby/
|
48
|
+
- lib/konduto-ruby/konduto_navigation_info.rb
|
29
49
|
- lib/konduto-ruby/konduto_order.rb
|
30
50
|
- lib/konduto-ruby/konduto_order_status.rb
|
31
51
|
- lib/konduto-ruby/konduto_passenger.rb
|
@@ -33,7 +53,10 @@ files:
|
|
33
53
|
- lib/konduto-ruby/konduto_seller.rb
|
34
54
|
- lib/konduto-ruby/konduto_travel.rb
|
35
55
|
- lib/konduto-ruby/konduto_travel_info.rb
|
56
|
+
- lib/konduto-ruby/konduto_travel_leg.rb
|
36
57
|
- lib/konduto-ruby/konduto_utils.rb
|
58
|
+
- lib/konduto-ruby/validations/class_methods.rb
|
59
|
+
- lib/konduto-ruby/validations/validations.rb
|
37
60
|
homepage: https://github.com/jonathan0211/konduto-ruby
|
38
61
|
licenses:
|
39
62
|
- MIT
|
@@ -57,5 +80,6 @@ rubyforge_project:
|
|
57
80
|
rubygems_version: 2.5.1
|
58
81
|
signing_key:
|
59
82
|
specification_version: 4
|
60
|
-
summary:
|
83
|
+
summary: This project aims to help ruby users of konduto API by offering a easy to
|
84
|
+
use interface
|
61
85
|
test_files: []
|
@@ -1,37 +0,0 @@
|
|
1
|
-
class KondutoNavigation
|
2
|
-
attr_accessor :session_time, :referrer, :time_site_1d, :new_accounts_1d, :password_resets_1d, :sales_declined_1d,\
|
3
|
-
:sessions_1d, :time_since_last_sale, :time_site_7d, :time_per_page_7d, :new_accounts_7d, \
|
4
|
-
:password_resets_7d, :checkout_count_7d, :sales_declined_7d, :sessions_7d
|
5
|
-
def initialize(*args)
|
6
|
-
unless args[0].nil?
|
7
|
-
args[0].each do |k,v|
|
8
|
-
instance_variable_set("@#{k}", v) unless v.nil?
|
9
|
-
end
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
def to_hash
|
14
|
-
hash = {
|
15
|
-
session_time: self.session_time,
|
16
|
-
referrer: self.referrer,
|
17
|
-
time_site_1d: self.time_site_1d,
|
18
|
-
new_accounts_1d: self.new_accounts_1d,
|
19
|
-
password_resets_1d: self.password_resets_1d,
|
20
|
-
sales_declined_1d: self.sales_declined_1d,
|
21
|
-
sessions_1d: self.sessions_1d,
|
22
|
-
time_since_last_sale: self.time_since_last_sale,
|
23
|
-
time_site_7d: self.time_site_7d,
|
24
|
-
time_per_page_7d: self.time_per_page_7d,
|
25
|
-
new_accounts_7d: self.new_accounts_7d,
|
26
|
-
password_resets_7d: self.password_resets_7d,
|
27
|
-
checkout_count_7d: self.checkout_count_7d,
|
28
|
-
sales_declined_7d: self.sales_declined_7d,
|
29
|
-
sessions_7d: self.sessions_7d,
|
30
|
-
}
|
31
|
-
KondutoUtils.remove_nil_keys_from_hash(hash)
|
32
|
-
end
|
33
|
-
|
34
|
-
def to_json
|
35
|
-
self.to_hash.to_json
|
36
|
-
end
|
37
|
-
end
|