t2_airtime 0.2.1 → 0.2.2
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/app/controllers/t2_airtime/airtime_controller.rb +53 -38
- data/lib/t2_airtime/api.rb +3 -3
- data/lib/t2_airtime/base.rb +5 -0
- data/lib/t2_airtime/serializer.rb +205 -87
- data/lib/t2_airtime/version.rb +1 -1
- data/release +1 -0
- data/t2_airtime.gemspec +2 -1
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 38e4e557218b14ad7121726d230ab461c023086c
|
4
|
+
data.tar.gz: a28342602169af97f687efe81c7a21c69b55ff5e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 89da1d5f2631d4b9444516ca44ea0d5a9dbd9b3055fbacf3b5d0a3a11c5a5850ae052a95489d6f0948d34020f1ce84d40425113d499b73fdbc60cd965d38b635
|
7
|
+
data.tar.gz: c847a4b2391449383ef123fb6aa367fd3b7df770ade4842244c6269d038de7478245fe05c83c28a0518293bf2afaaaf4861f4211b363d15a316e2811fdb29906
|
@@ -1,81 +1,96 @@
|
|
1
1
|
module T2Airtime
|
2
2
|
class AirtimeController < ActionController::API
|
3
3
|
|
4
|
+
def account
|
5
|
+
reply = T2Airtime::API.api.account_info
|
6
|
+
if reply.success?
|
7
|
+
render_data T2Airtime::Account.serialize reply.data,
|
8
|
+
reply.headers[:date]
|
9
|
+
else
|
10
|
+
render_error T2Airtime::Error.new reply.error_code,
|
11
|
+
reply.error_message
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
|
4
16
|
def countries
|
5
17
|
reply = T2Airtime::API.api.country_list
|
6
18
|
if reply.success?
|
7
|
-
|
8
|
-
|
9
|
-
links: {
|
10
|
-
self: request.path
|
11
|
-
},
|
12
|
-
data: data,
|
13
|
-
status: :ok
|
14
|
-
}
|
19
|
+
render_data T2Airtime::Country.serialize reply.data,
|
20
|
+
reply.headers[:date]
|
15
21
|
else
|
16
|
-
render_error
|
22
|
+
render_error T2Airtime::Error.new reply.error_code,
|
23
|
+
reply.error_message
|
17
24
|
end
|
18
25
|
end
|
19
26
|
|
20
27
|
def operators
|
21
|
-
reply = T2Airtime::API.api.operator_list(params[:
|
28
|
+
reply = T2Airtime::API.api.operator_list(params[:id])
|
22
29
|
if reply.success?
|
23
|
-
|
24
|
-
|
25
|
-
operators: data,
|
26
|
-
status: :ok
|
27
|
-
}
|
30
|
+
render_data T2Airtime::Operator.serialize reply.data,
|
31
|
+
reply.headers[:date]
|
28
32
|
else
|
29
|
-
render_error
|
33
|
+
render_error T2Airtime::Error.new reply.error_code,
|
34
|
+
reply.error_message
|
30
35
|
end
|
31
36
|
end
|
32
37
|
|
33
38
|
def products
|
34
|
-
reply = T2Airtime::API.api.product_list(params[:
|
39
|
+
reply = T2Airtime::API.api.product_list(params[:id])
|
35
40
|
if reply.success?
|
36
|
-
|
37
|
-
|
38
|
-
products: data,
|
39
|
-
status: :ok
|
40
|
-
}
|
41
|
+
render_data T2Airtime::Product.serialize reply.data,
|
42
|
+
reply.headers[:date]
|
41
43
|
else
|
42
|
-
render_error
|
44
|
+
render_error T2Airtime::Error.new reply.error_code,
|
45
|
+
reply.error_message
|
43
46
|
end
|
44
47
|
end
|
45
48
|
|
46
49
|
def transactions
|
47
|
-
reply = T2Airtime::API.api.
|
50
|
+
reply = T2Airtime::API.api.transaction_list parse_time_param(params[:start]),
|
51
|
+
parse_time_param(params[:stop]),
|
52
|
+
params[:msisdn],
|
53
|
+
params[:destination],
|
54
|
+
params[:code]
|
48
55
|
if reply.success?
|
49
|
-
|
50
|
-
render json: {
|
51
|
-
transactions: data,
|
52
|
-
status: :ok
|
53
|
-
}
|
56
|
+
render_data T2Airtime::Transaction.serialize reply.data
|
54
57
|
else
|
55
|
-
render_error
|
58
|
+
render_error T2Airtime::Error.new reply.error_code,
|
59
|
+
reply.error_message
|
56
60
|
end
|
57
61
|
end
|
58
62
|
|
59
63
|
def transaction
|
60
|
-
reply = T2Airtime::API.api.
|
64
|
+
reply = T2Airtime::API.api.transaction_info(params[:id])
|
61
65
|
if reply.success?
|
62
|
-
|
63
|
-
|
64
|
-
transaction: data,
|
65
|
-
status: :ok
|
66
|
-
}
|
66
|
+
render_data T2Airtime::Transaction.serialize_one reply.data,
|
67
|
+
reply.headers[:date]
|
67
68
|
else
|
68
|
-
render_error
|
69
|
+
render_error T2Airtime::Error.new reply.error_code,
|
70
|
+
reply.error_message
|
69
71
|
end
|
70
72
|
end
|
71
73
|
|
72
74
|
protected
|
73
75
|
|
76
|
+
def parse_time_param(timestr)
|
77
|
+
Time.zone.parse(timestr)
|
78
|
+
end
|
79
|
+
|
80
|
+
|
81
|
+
def render_data(data)
|
82
|
+
render json: {
|
83
|
+
data: data,
|
84
|
+
status: :ok
|
85
|
+
}
|
86
|
+
end
|
87
|
+
|
74
88
|
def render_error(error)
|
75
89
|
render json: {
|
76
90
|
errors: [{
|
77
91
|
code: error.code,
|
78
|
-
detail: error.message
|
92
|
+
detail: error.message,
|
93
|
+
title: "Error!"
|
79
94
|
}],
|
80
95
|
status: :bad_request
|
81
96
|
}
|
data/lib/t2_airtime/api.rb
CHANGED
@@ -8,7 +8,7 @@ module T2Airtime
|
|
8
8
|
|
9
9
|
# Returns the balance in your TransferTo account.
|
10
10
|
# This method shall not be used more than 24 times per day.
|
11
|
-
def
|
11
|
+
def account_info
|
12
12
|
run_action :check_wallet
|
13
13
|
end
|
14
14
|
|
@@ -196,7 +196,7 @@ module T2Airtime
|
|
196
196
|
# stop_date
|
197
197
|
# ---------
|
198
198
|
# Defines the end date of the search (included). Format must be YYYY-MM-DD.
|
199
|
-
def
|
199
|
+
def transaction_list(start=(Time.now-24.hours), stop=Time.now, msisdn=nil, destination=nil, code=nil)
|
200
200
|
@params[:code] = code unless code
|
201
201
|
@params[:msisdn] = msisdn unless msisdn
|
202
202
|
@params[:stop_date] = to_yyyymmdd(stop)
|
@@ -209,7 +209,7 @@ module T2Airtime
|
|
209
209
|
# “debit_amount_validated” are rounded to 2 digits after the comma but are
|
210
210
|
# the same as the values returned in the fields “input_value” and
|
211
211
|
# “validated_input_value” of the “topup” method response.
|
212
|
-
def
|
212
|
+
def transaction_info(id)
|
213
213
|
@params = { transactionid: id }
|
214
214
|
run_action :trans_info
|
215
215
|
end
|
data/lib/t2_airtime/base.rb
CHANGED
@@ -3,20 +3,25 @@ module T2Airtime
|
|
3
3
|
class Account
|
4
4
|
|
5
5
|
def self.info
|
6
|
-
reply = T2Airtime::API.api.
|
7
|
-
reply.success? ? serialize(reply.data) :
|
6
|
+
reply = T2Airtime::API.api.account_info
|
7
|
+
reply.success? ? serialize(reply.data, reply.headers[:date]) : []
|
8
8
|
end
|
9
9
|
|
10
|
-
def self.serialize(data)
|
10
|
+
def self.serialize(data, ts="#{Time.zone.now}")
|
11
11
|
{
|
12
|
-
type:
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
12
|
+
type: "accounts",
|
13
|
+
id: T2Airtime::API.api.user,
|
14
|
+
attributes: {
|
15
|
+
type: data[:type],
|
16
|
+
name: data[:name],
|
17
|
+
currency: data[:currency],
|
18
|
+
balance: Float(data[:balance]),
|
19
|
+
wallet: Float(data[:wallet]),
|
20
|
+
"balance-display": T2Airtime::Util.format_price(data[:balance], data[:currency]),
|
21
|
+
"wallet-display": T2Airtime::Util.format_price(data[:wallet], data[:currency]),
|
22
|
+
"fetched-at": T2Airtime::Util.format_time(ts)
|
23
|
+
}
|
24
|
+
}.as_json
|
20
25
|
end
|
21
26
|
|
22
27
|
end
|
@@ -25,11 +30,11 @@ module T2Airtime
|
|
25
30
|
|
26
31
|
def self.take(qty=5)
|
27
32
|
reply = T2Airtime::API.api.country_list
|
28
|
-
reply.success? ? serialize(reply.data,
|
33
|
+
reply.success? ? serialize(reply.data, reply.headers[:date], qty) : []
|
29
34
|
end
|
30
35
|
|
31
|
-
def self.serialize(data,
|
32
|
-
|
36
|
+
def self.serialize(data, ts="#{Time.zone.now}", qty=nil)
|
37
|
+
return [] if data[:countryid].nil?
|
33
38
|
names = data[:country].split(",")
|
34
39
|
ids = data[:countryid].split(",")
|
35
40
|
ids.take(qty.nil? ? ids.count : qty).each_with_index.map{|id, n| {
|
@@ -39,8 +44,15 @@ module T2Airtime
|
|
39
44
|
"name": names[n],
|
40
45
|
"alpha3": alpha3(names[n]),
|
41
46
|
"fetched-at": T2Airtime::Util.format_time(ts)
|
47
|
+
},
|
48
|
+
relationships: {
|
49
|
+
operators: {
|
50
|
+
links: {
|
51
|
+
related: "/countries/#{id}/operators"
|
52
|
+
}
|
53
|
+
}
|
42
54
|
}
|
43
|
-
}}
|
55
|
+
}}.as_json
|
44
56
|
end
|
45
57
|
|
46
58
|
def self.normalize(name)
|
@@ -81,23 +93,50 @@ module T2Airtime
|
|
81
93
|
countries = T2Airtime::Country.take(country_qty).shuffle
|
82
94
|
unless countries.empty?
|
83
95
|
countries.flat_map{|country| (
|
84
|
-
reply = T2Airtime::API.api.operator_list(country[
|
85
|
-
reply.success? ? serialize(reply.data, qty) : []
|
96
|
+
reply = T2Airtime::API.api.operator_list(country["id"])
|
97
|
+
reply.success? ? serialize(reply.data, reply.headers[:date], qty) : []
|
86
98
|
)}
|
87
99
|
end
|
88
100
|
end
|
89
101
|
|
90
|
-
def self.serialize(data, qty=nil)
|
102
|
+
def self.serialize(data, ts="#{Time.zone.now}", qty=nil)
|
103
|
+
return [] if data[:operator].nil?
|
91
104
|
names = data[:operator].split(",")
|
92
105
|
ids = data[:operatorid].split(",")
|
93
106
|
ids.take(qty.nil? ? ids.count : qty).each_with_index.map{|id, n| {
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
107
|
+
type: "operators",
|
108
|
+
id: Integer(id),
|
109
|
+
attributes: {
|
110
|
+
"name": names[n],
|
111
|
+
"fetched-at": T2Airtime::Util.format_time(ts)
|
112
|
+
},
|
113
|
+
links: {
|
114
|
+
logo: T2Airtime::Util.operator_logo_url(id)
|
115
|
+
},
|
116
|
+
relationships: {
|
117
|
+
country: {
|
118
|
+
data: {
|
119
|
+
type: "countries",
|
120
|
+
id: Integer(data[:countryid])
|
121
|
+
}
|
122
|
+
},
|
123
|
+
products: {
|
124
|
+
links: {
|
125
|
+
related: "/countries/#{data[:countryid]}/operators/#{id}/products"
|
126
|
+
}
|
127
|
+
}
|
128
|
+
},
|
129
|
+
included: [
|
130
|
+
{
|
131
|
+
type: "countries",
|
132
|
+
id: Integer(data[:countryid]),
|
133
|
+
attributes: {
|
134
|
+
"name": data[:country],
|
135
|
+
"alpha3": T2Airtime::Country.alpha3(data[:country])
|
136
|
+
}
|
137
|
+
}
|
138
|
+
]
|
139
|
+
}}.as_json
|
101
140
|
end
|
102
141
|
|
103
142
|
end
|
@@ -108,95 +147,174 @@ module T2Airtime
|
|
108
147
|
operators = T2Airtime::Operator.take(operator_qty).shuffle
|
109
148
|
unless operators.empty?
|
110
149
|
operators.flat_map{|operator| (
|
111
|
-
reply = T2Airtime::API.api.product_list(operator[
|
112
|
-
reply.success? ? serialize(reply.data, qty) : []
|
150
|
+
reply = T2Airtime::API.api.product_list(operator["id"])
|
151
|
+
reply.success? ? serialize(reply.data, reply.headers[:date], qty) : []
|
113
152
|
)}
|
114
153
|
end
|
115
154
|
end
|
116
155
|
|
117
|
-
def self.serialize(data, qty=nil)
|
156
|
+
def self.serialize(data, ts="#{Time.zone.now}", qty=nil)
|
157
|
+
return [] if data[:product_list].nil?
|
118
158
|
currency = data[:destination_currency]
|
119
159
|
retail_prices = data[:retail_price_list].split(",")
|
120
160
|
wholesale_prices = data[:wholesale_price_list].split(",")
|
121
161
|
ids = data[:product_list].split(",")
|
122
162
|
ids.take(qty.nil? ? ids.count : qty).each_with_index.map{|id, n| {
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
163
|
+
type: "products",
|
164
|
+
id: Integer(id),
|
165
|
+
attributes: {
|
166
|
+
"name": "#{id}#{currency}",
|
167
|
+
"currency": currency,
|
168
|
+
"local-price": Float(id),
|
169
|
+
"retail-price": Float(retail_prices[n]),
|
170
|
+
"wholesale-price": Float(wholesale_prices[n]),
|
171
|
+
"local-price-display": T2Airtime::Util.format_price(id, currency),
|
172
|
+
"retail-price-display": T2Airtime::Util.format_price(retail_prices[n]),
|
173
|
+
"wholesale-price-display": T2Airtime::Util.format_price(wholesale_prices[n]),
|
174
|
+
"fetched-at": T2Airtime::Util.format_time(ts)
|
175
|
+
},
|
176
|
+
relationships: {
|
177
|
+
country: {
|
178
|
+
data: {
|
179
|
+
type: "countries",
|
180
|
+
id: Integer(data[:countryid])
|
181
|
+
}
|
182
|
+
},
|
183
|
+
operator: {
|
184
|
+
data: {
|
185
|
+
type: "operators",
|
186
|
+
id: Integer(data[:operatorid])
|
187
|
+
}
|
188
|
+
}
|
189
|
+
},
|
190
|
+
included: [
|
191
|
+
{
|
192
|
+
type: "countries",
|
193
|
+
id: Integer(data[:countryid]),
|
194
|
+
attributes: {
|
195
|
+
"name": data[:country],
|
196
|
+
"alpha3": T2Airtime::Country.alpha3(data[:country])
|
197
|
+
}
|
198
|
+
},
|
199
|
+
{
|
200
|
+
type: "operators",
|
201
|
+
id: Integer(data[:operatorid]),
|
202
|
+
attributes: {
|
203
|
+
"name": data[:operator]
|
204
|
+
},
|
205
|
+
links: {
|
206
|
+
logo: T2Airtime::Util.operator_logo_url(data[:operatorid])
|
207
|
+
}
|
208
|
+
}
|
209
|
+
]
|
210
|
+
}}.as_json
|
139
211
|
end
|
140
212
|
|
141
213
|
end
|
142
214
|
|
143
215
|
class Transaction
|
144
216
|
|
145
|
-
def self.take(start, stop, msisdn=nil, destination=nil, code=nil, qty=5)
|
146
|
-
reply = T2Airtime::API.api.
|
217
|
+
def self.take(start=(Time.now-24.hours), stop=Time.now, msisdn=nil, destination=nil, code=nil, qty=5)
|
218
|
+
reply = T2Airtime::API.api.transaction_list(start, stop, msisdn, destination, code)
|
147
219
|
reply.success? ? serialize(reply.data, qty) : []
|
148
220
|
end
|
149
221
|
|
150
222
|
def self.serialize(data, qty=nil)
|
223
|
+
return [] if data[:transaction_list].nil?
|
151
224
|
ids = data[:transaction_list].split(",")
|
152
|
-
ids.
|
225
|
+
ids.take(qty.nil? ? ids.count : qty).each.map{ |id| show(id) }
|
153
226
|
end
|
154
227
|
|
155
228
|
|
156
229
|
def self.show(id)
|
157
|
-
reply = T2Airtime::API.api.
|
158
|
-
reply.success? ? serialize_one(reply.data) : {}
|
230
|
+
reply = T2Airtime::API.api.transaction_info(id)
|
231
|
+
reply.success? ? serialize_one(reply.data, reply.headers[:date]) : {}
|
159
232
|
end
|
160
233
|
|
161
|
-
def self.serialize_one(
|
234
|
+
def self.serialize_one(data, ts="#{Time.zone.now}")
|
162
235
|
{
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
236
|
+
type: "transactions",
|
237
|
+
id: Integer(data[:transactionid]),
|
238
|
+
attributes: {
|
239
|
+
"msisdn": data[:msisdn],
|
240
|
+
"destination-msisdn": data[:destination_msisdn],
|
241
|
+
"transaction-authentication-key": data[:transaction_authentication_key],
|
242
|
+
"transaction-error-code": Integer(data[:transaction_error_code]),
|
243
|
+
"transaction-error-txt": data[:transaction_error_txt],
|
244
|
+
"reference-operator": data[:reference_operator],
|
245
|
+
"product-requested-display": T2Airtime::Util.format_price(data[:product_requested], data[:destination_currency]),
|
246
|
+
"actual-product-sent": data[:actual_product_sent],
|
247
|
+
"actual-product-sent-display": T2Airtime::Util.format_price(data[:actual_product_sent], data[:destination_currency]),
|
248
|
+
"sms": data[:sms],
|
249
|
+
"cid1": data[:cid1],
|
250
|
+
"cid2": data[:cid2],
|
251
|
+
"cid3": data[:cid3],
|
252
|
+
"date": data[:date],
|
253
|
+
"originating-currency": data[:originating_currency],
|
254
|
+
"destination-currency": data[:destination_currency],
|
255
|
+
"pin-based": data[:pin_based],
|
256
|
+
"local-info-amount": data[:local_info_amount],
|
257
|
+
"local-info-amount-display": T2Airtime::Util.format_price(data[:local_info_amount], data[:local_info_currency]),
|
258
|
+
"local-info-currency": data[:local_info_currency],
|
259
|
+
"error-code": data[:error_code],
|
260
|
+
"error-txt": data[:error_txt],
|
261
|
+
"fetched-at": T2Airtime::Util.format_time(ts)
|
262
|
+
},
|
263
|
+
relationships: {
|
264
|
+
country: {
|
265
|
+
data: {
|
266
|
+
type: "countries",
|
267
|
+
id: Integer(data[:countryid])
|
268
|
+
}
|
269
|
+
},
|
270
|
+
operator: {
|
271
|
+
data: {
|
272
|
+
type: "operators",
|
273
|
+
id: Integer(data[:operatorid])
|
274
|
+
}
|
275
|
+
},
|
276
|
+
product: {
|
277
|
+
data: {
|
278
|
+
type: "products",
|
279
|
+
id: Integer(data[:product_requested])
|
280
|
+
}
|
281
|
+
}
|
282
|
+
},
|
283
|
+
included: [
|
284
|
+
{
|
285
|
+
type: "countries",
|
286
|
+
id: Integer(data[:countryid]),
|
287
|
+
attributes: {
|
288
|
+
"name": data[:country],
|
289
|
+
"alpha3": T2Airtime::Country.alpha3(data[:country])
|
290
|
+
}
|
291
|
+
},
|
292
|
+
{
|
293
|
+
type: "operators",
|
294
|
+
id: Integer(data[:operatorid]),
|
295
|
+
attributes: {
|
296
|
+
"name": data[:operator]
|
297
|
+
},
|
298
|
+
links: {
|
299
|
+
logo: T2Airtime::Util.operator_logo_url(data[:operatorid])
|
300
|
+
}
|
301
|
+
},
|
302
|
+
{
|
303
|
+
type: "products",
|
304
|
+
id: Integer(data[:product_requested]),
|
305
|
+
attributes: {
|
306
|
+
"name": "#{data[:product_requested]}#{data[:destination_currency]}",
|
307
|
+
"currency": data[:destination_currency],
|
308
|
+
"wholesale-price": data[:wholesale_price],
|
309
|
+
"wholesale-price-display": T2Airtime::Util.format_price(data[:wholesale_price], data[:originating_currency]),
|
310
|
+
"retail-price": data[:retail_price],
|
311
|
+
"retail-price-display": T2Airtime::Util.format_price(data[:retail_price], data[:originating_currency]),
|
312
|
+
"local-price": data[:local_info_value],
|
313
|
+
"local-price-display": T2Airtime::Util.format_price(data[:local_info_value], data[:local_info_currency])
|
314
|
+
}
|
315
|
+
}
|
316
|
+
]
|
317
|
+
}.as_json
|
200
318
|
end
|
201
319
|
|
202
320
|
|
data/lib/t2_airtime/version.rb
CHANGED
data/release
CHANGED
data/t2_airtime.gemspec
CHANGED
@@ -25,7 +25,8 @@ Gem::Specification.new do |spec|
|
|
25
25
|
spec.add_development_dependency "rake", "~> 10.0"
|
26
26
|
spec.add_development_dependency "rspec", "~> 3.0"
|
27
27
|
|
28
|
-
spec.
|
28
|
+
spec.add_dependency 'rails', '~> 5.1.3'
|
29
|
+
spec.add_runtime_dependency 'dotenv-rails', '~> 2.2', '>= 2.2.1'
|
29
30
|
spec.add_dependency "faraday", "0.9.1"
|
30
31
|
spec.add_dependency "countries", "2.1.2"
|
31
32
|
spec.add_dependency "money", "6.9.0"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: t2_airtime
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- matteolc
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-09-
|
11
|
+
date: 2017-09-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -52,6 +52,20 @@ dependencies:
|
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '3.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rails
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 5.1.3
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 5.1.3
|
55
69
|
- !ruby/object:Gem::Dependency
|
56
70
|
name: dotenv-rails
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|