konduto-ruby 1.0.4 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|