figo 1.1 → 1.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -7
- data/.travis.yml +9 -1
- data/Gemfile +1 -0
- data/README.md +49 -17
- data/figo.gemspec +1 -1
- data/lib/cacert.pem +0 -41
- data/lib/figo.rb +15 -18
- data/lib/models.rb +7 -6
- data/test/test_figo.rb +2 -7
- metadata +46 -40
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
|
-
---
|
2
|
-
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
5
|
-
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 390163889160a8aefcb91f1f8b4f99e18c84efb9
|
4
|
+
data.tar.gz: 2a24495ecbb097b1659dbb29f8ad697b082d24a2
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: e0c1cc2c14a9b6db75c5724b949ec2d0b7d496103247bd4bdcd72993e549d6371465dcd1222105ca939d7837c99ee44d2f6937efe56b606cffb40982641eb52f
|
7
|
+
data.tar.gz: b5401f6d092be459e5165bb86564d4180e7529cfd750261604865e17d5fcac0e0b44c3ecc311b435b194fcb4dc0d3ffd936be1840ba9dda2c5e012a48de97f2a
|
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -6,35 +6,67 @@ Ruby bindings for the figo Connect API: http://developer.figo.me
|
|
6
6
|
Usage
|
7
7
|
=====
|
8
8
|
|
9
|
-
First, you've to install the gem
|
9
|
+
First, you've to install the gem:
|
10
10
|
|
11
11
|
```bash
|
12
|
-
|
12
|
+
gem install figo
|
13
13
|
```
|
14
14
|
|
15
|
-
and
|
15
|
+
Now you can create a new session and access data:
|
16
16
|
|
17
17
|
```ruby
|
18
|
-
|
18
|
+
require "figo"
|
19
|
+
|
20
|
+
session = Figo::Session.new("ASHWLIkouP2O6_bgA2wWReRhletgWKHYjLqDaqb0LFfamim9RjexTo22ujRIP_cjLiRiSyQXyt2kM1eXU2XLFZQ0Hro15HikJQT_eNeT_9XQ")
|
21
|
+
|
22
|
+
# Print out list of account numbers and balances.
|
23
|
+
session.accounts.each do |account|
|
24
|
+
puts account.account_number
|
25
|
+
puts account.balance.balance
|
26
|
+
end
|
27
|
+
|
28
|
+
# Print out the list of all transaction originators/recipients of a specific account.
|
29
|
+
session.get_account("A1.1").transactions.each do |transaction|
|
30
|
+
puts transaction.name
|
31
|
+
end
|
19
32
|
```
|
20
33
|
|
21
|
-
|
34
|
+
It is just as simple to allow users to login through the API:
|
22
35
|
|
23
36
|
```ruby
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
37
|
+
require "figo"
|
38
|
+
require "launchy"
|
39
|
+
|
40
|
+
connection = Figo::Connection.new("<client ID>", "<client secret>", "http://my-domain.org/redirect-url")
|
41
|
+
|
42
|
+
def start_login
|
43
|
+
# Open webbrowser to kick of the login process.
|
44
|
+
Launchy.open(connection.login_url("qweqwe"))
|
45
|
+
end
|
46
|
+
|
47
|
+
def process_redirect(authorization_code, state)
|
48
|
+
# Handle the redirect URL invocation from the initial start_login call.
|
49
|
+
|
50
|
+
# Ignore bogus redirects.
|
51
|
+
if state != "qweqwe"
|
52
|
+
return
|
53
|
+
end
|
54
|
+
|
55
|
+
# Trade in authorization code for access token.
|
56
|
+
token_hash = connection.obtain_access_token(authorization_code)
|
57
|
+
|
58
|
+
# Start session.
|
59
|
+
session = Figo::Session.new(token_hash["access_token"])
|
60
|
+
|
61
|
+
# Print out list of account numbers.
|
62
|
+
session.accounts.each do |account|
|
63
|
+
puts account.account_number
|
64
|
+
end
|
65
|
+
end
|
36
66
|
```
|
37
67
|
|
68
|
+
You can find more documentation at http://rubydoc.info/github/figo-connect/ruby-figo/master/frames
|
69
|
+
|
38
70
|
Requirements
|
39
71
|
============
|
40
72
|
|
data/figo.gemspec
CHANGED
data/lib/cacert.pem
CHANGED
@@ -1,41 +0,0 @@
|
|
1
|
-
-----BEGIN CERTIFICATE-----
|
2
|
-
MIIHPTCCBSWgAwIBAgIBADANBgkqhkiG9w0BAQQFADB5MRAwDgYDVQQKEwdSb290
|
3
|
-
IENBMR4wHAYDVQQLExVodHRwOi8vd3d3LmNhY2VydC5vcmcxIjAgBgNVBAMTGUNB
|
4
|
-
IENlcnQgU2lnbmluZyBBdXRob3JpdHkxITAfBgkqhkiG9w0BCQEWEnN1cHBvcnRA
|
5
|
-
Y2FjZXJ0Lm9yZzAeFw0wMzAzMzAxMjI5NDlaFw0zMzAzMjkxMjI5NDlaMHkxEDAO
|
6
|
-
BgNVBAoTB1Jvb3QgQ0ExHjAcBgNVBAsTFWh0dHA6Ly93d3cuY2FjZXJ0Lm9yZzEi
|
7
|
-
MCAGA1UEAxMZQ0EgQ2VydCBTaWduaW5nIEF1dGhvcml0eTEhMB8GCSqGSIb3DQEJ
|
8
|
-
ARYSc3VwcG9ydEBjYWNlcnQub3JnMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC
|
9
|
-
CgKCAgEAziLA4kZ97DYoB1CW8qAzQIxL8TtmPzHlawI229Z89vGIj053NgVBlfkJ
|
10
|
-
8BLPRoZzYLdufujAWGSuzbCtRRcMY/pnCujW0r8+55jE8Ez64AO7NV1sId6eINm6
|
11
|
-
zWYyN3L69wj1x81YyY7nDl7qPv4coRQKFWyGhFtkZip6qUtTefWIonvuLwphK42y
|
12
|
-
fk1WpRPs6tqSnqxEQR5YYGUFZvjARL3LlPdCfgv3ZWiYUQXw8wWRBB0bF4LsyFe7
|
13
|
-
w2t6iPGwcswlWyCR7BYCEo8y6RcYSNDHBS4CMEK4JZwFaz+qOqfrU0j36NK2B5jc
|
14
|
-
G8Y0f3/JHIJ6BVgrCFvzOKKrF11myZjXnhCLotLddJr3cQxyYN/Nb5gznZY0dj4k
|
15
|
-
epKwDpUeb+agRThHqtdB7Uq3EvbXG4OKDy7YCbZZ16oE/9KTfWgu3YtLq1i6L43q
|
16
|
-
laegw1SJpfvbi1EinbLDvhG+LJGGi5Z4rSDTii8aP8bQUWWHIbEZAWV/RRyH9XzQ
|
17
|
-
QUxPKZgh/TMfdQwEUfoZd9vUFBzugcMd9Zi3aQaRIt0AUMyBMawSB3s42mhb5ivU
|
18
|
-
fslfrejrckzzAeVLIL+aplfKkQABi6F1ITe1Yw1nPkZPcCBnzsXWWdsC4PDSy826
|
19
|
-
YreQQejdIOQpvGQpQsgi3Hia/0PsmBsJUUtaWsJx8cTLc6nloQsCAwEAAaOCAc4w
|
20
|
-
ggHKMB0GA1UdDgQWBBQWtTIb1Mfz4OaO873SsDrusjkY0TCBowYDVR0jBIGbMIGY
|
21
|
-
gBQWtTIb1Mfz4OaO873SsDrusjkY0aF9pHsweTEQMA4GA1UEChMHUm9vdCBDQTEe
|
22
|
-
MBwGA1UECxMVaHR0cDovL3d3dy5jYWNlcnQub3JnMSIwIAYDVQQDExlDQSBDZXJ0
|
23
|
-
IFNpZ25pbmcgQXV0aG9yaXR5MSEwHwYJKoZIhvcNAQkBFhJzdXBwb3J0QGNhY2Vy
|
24
|
-
dC5vcmeCAQAwDwYDVR0TAQH/BAUwAwEB/zAyBgNVHR8EKzApMCegJaAjhiFodHRw
|
25
|
-
czovL3d3dy5jYWNlcnQub3JnL3Jldm9rZS5jcmwwMAYJYIZIAYb4QgEEBCMWIWh0
|
26
|
-
dHBzOi8vd3d3LmNhY2VydC5vcmcvcmV2b2tlLmNybDA0BglghkgBhvhCAQgEJxYl
|
27
|
-
aHR0cDovL3d3dy5jYWNlcnQub3JnL2luZGV4LnBocD9pZD0xMDBWBglghkgBhvhC
|
28
|
-
AQ0ESRZHVG8gZ2V0IHlvdXIgb3duIGNlcnRpZmljYXRlIGZvciBGUkVFIGhlYWQg
|
29
|
-
b3ZlciB0byBodHRwOi8vd3d3LmNhY2VydC5vcmcwDQYJKoZIhvcNAQEEBQADggIB
|
30
|
-
ACjH7pyCArpcgBLKNQodgW+JapnM8mgPf6fhjViVPr3yBsOQWqy1YPaZQwGjiHCc
|
31
|
-
nWKdpIevZ1gNMDY75q1I08t0AoZxPuIrA2jxNGJARjtT6ij0rPtmlVOKTV39O9lg
|
32
|
-
18p5aTuxZZKmxoGCXJzN600BiqXfEVWqFcofN8CCmHBh22p8lqOOLlQ+TyGpkO/c
|
33
|
-
gr/c6EWtTZBzCDyUZbAEmXZ/4rzCahWqlwQ3JNgelE5tDlG+1sSPypZt90Pf6DBl
|
34
|
-
Jzt7u0NDY8RD97LsaMzhGY4i+5jhe1o+ATc7iwiwovOVThrLm82asduycPAtStvY
|
35
|
-
sONvRUgzEv/+PDIqVPfE94rwiCPCR/5kenHA0R6mY7AHfqQv0wGP3J8rtsYIqQ+T
|
36
|
-
SCX8Ev2fQtzzxD72V7DX3WnRBnc0CkvSyqD/HMaMyRa+xMwyN2hzXwj7UfdJUzYF
|
37
|
-
CpUCTPJ5GhD22Dp1nPMd8aINcGeGG7MW9S/lpOt5hvk9C8JzC6WZrG/8Z7jlLwum
|
38
|
-
GCSNe9FINSkYQKyTYOGWhlC0elnYjyELn8+CkcY7v2vcB5G5l1YjqrZslMZIBjzk
|
39
|
-
zk6q5PYvCdxTby78dOs6Y5nCpqyJvKeyRKANihDjbPIky/qbn3BHLt4Ui9SyIAmW
|
40
|
-
omTxJBzcoTWcFbLUvFUufQb1nA5V9FrWk9p2rSVzTMVD
|
41
|
-
-----END CERTIFICATE-----
|
data/lib/figo.rb
CHANGED
@@ -21,8 +21,7 @@
|
|
21
21
|
#
|
22
22
|
|
23
23
|
require "json"
|
24
|
-
require "
|
25
|
-
require 'net/http/persistent'
|
24
|
+
require "net/http/persistent"
|
26
25
|
require "digest/sha1"
|
27
26
|
require_relative "models.rb"
|
28
27
|
|
@@ -30,12 +29,9 @@ require_relative "models.rb"
|
|
30
29
|
# Ruby bindings for the figo Connect API: http://developer.figo.me
|
31
30
|
module Figo
|
32
31
|
|
33
|
-
$api_endpoint = "api.
|
32
|
+
$api_endpoint = "api.figo.me"
|
34
33
|
|
35
|
-
$valid_fingerprints = ["
|
36
|
-
"AD:A0:E3:2B:1F:CE:E8:44:F2:83:BA:AE:E4:7D:F2:AD:44:48:7F:1E"]
|
37
|
-
|
38
|
-
$logger = Logger.new(STDOUT)
|
34
|
+
$valid_fingerprints = ["3A:62:54:4D:86:B4:34:38:EA:34:64:4E:95:10:A9:FF:37:27:69:C0"]
|
39
35
|
|
40
36
|
# Base class for all errors transported via the figo Connect API.
|
41
37
|
class Error < RuntimeError
|
@@ -104,7 +100,6 @@ module Figo
|
|
104
100
|
when Net::HTTPServiceUnavailable
|
105
101
|
raise Error.new("service_unavailable", "Exceeded rate limit.")
|
106
102
|
else
|
107
|
-
$logger.warn("Querying the API failed when accessing '#{path}': #{response.code}")
|
108
103
|
raise Error.new("internal_server_error", "We are very sorry, but something went wrong.")
|
109
104
|
end
|
110
105
|
end
|
@@ -141,7 +136,7 @@ module Figo
|
|
141
136
|
request.basic_auth(@client_id, @client_secret)
|
142
137
|
request["Accept"] = "application/json"
|
143
138
|
request["Content-Type"] = "application/x-www-form-urlencoded"
|
144
|
-
request[
|
139
|
+
request["User-Agent"] = "ruby-figo"
|
145
140
|
request.body = URI.encode_www_form(data) unless data.nil?
|
146
141
|
|
147
142
|
# Send HTTP request.
|
@@ -163,6 +158,7 @@ module Figo
|
|
163
158
|
# validated the authenticity of the call to the redirect URL
|
164
159
|
# @param scope [String] optional scope of data access to ask the user for,
|
165
160
|
# e.g. `accounts=ro`
|
161
|
+
# @return [String] the URL to be opened by the user.
|
166
162
|
def login_url(state, scope = nil)
|
167
163
|
data = { "response_type" => "code", "client_id" => @client_id, "state" => state }
|
168
164
|
data["redirect_uri"] = @redirect_uri unless @redirect_uri.nil?
|
@@ -179,7 +175,7 @@ module Figo
|
|
179
175
|
# @param scope [String] optional scope of data access to ask the user for,
|
180
176
|
# e.g. `accounts=ro`
|
181
177
|
# @return [Hash] object with the keys `access_token`, `refresh_token` and
|
182
|
-
# `expires
|
178
|
+
# `expires`, as documented in the figo Connect API specification.
|
183
179
|
def obtain_access_token(authorization_code_or_refresh_token, scope = nil)
|
184
180
|
# Authorization codes always start with "O" and refresh tokens always start with "R".
|
185
181
|
if authorization_code_or_refresh_token[0] == "O"
|
@@ -196,7 +192,7 @@ module Figo
|
|
196
192
|
#
|
197
193
|
# @note this action has immediate effect, i.e. you will not be able use that token anymore after this call.
|
198
194
|
#
|
199
|
-
# @param
|
195
|
+
# @param refresh_token_or_access_token [String] access or refresh token to be revoked
|
200
196
|
# @return [nil]
|
201
197
|
def revoke_token(refresh_token_or_access_token)
|
202
198
|
data = { "token" => refresh_token_or_access_token }
|
@@ -221,6 +217,7 @@ module Figo
|
|
221
217
|
#
|
222
218
|
# @param path [String] the URL path on the server
|
223
219
|
# @param data [hash] this optional object will be used as JSON-encoded POST content.
|
220
|
+
# @param method [String] the HTTP method
|
224
221
|
# @return [Hash] JSON response
|
225
222
|
def query_api(path, data=nil, method="GET") # :nodoc:
|
226
223
|
uri = URI("https://#{$api_endpoint}#{path}")
|
@@ -240,7 +237,7 @@ module Figo
|
|
240
237
|
request["Authorization"] = "Bearer #{@access_token}"
|
241
238
|
request["Accept"] = "application/json"
|
242
239
|
request["Content-Type"] = "application/json"
|
243
|
-
request[
|
240
|
+
request["User-Agent"] = "ruby-figo"
|
244
241
|
request.body = JSON.generate(data) unless data.nil?
|
245
242
|
|
246
243
|
# Send HTTP request.
|
@@ -270,14 +267,14 @@ module Figo
|
|
270
267
|
# @return [Account] account object
|
271
268
|
def get_account(account_id)
|
272
269
|
response = query_api("/rest/accounts/#{account_id}")
|
273
|
-
return Account.new(self, response)
|
270
|
+
return response.nil? ? nil : Account.new(self, response)
|
274
271
|
end
|
275
272
|
|
276
273
|
# Request list of transactions.
|
277
274
|
#
|
278
|
-
# @param since [String] this parameter can either be a transaction ID or a date
|
275
|
+
# @param since [String, Date] this parameter can either be a transaction ID or a date
|
279
276
|
# @param start_id [String] do only return transactions which were booked after the start transaction ID
|
280
|
-
# @param count [
|
277
|
+
# @param count [Integer] limit the number of returned transactions
|
281
278
|
# @param include_pending [Boolean] this flag indicates whether pending transactions should be included
|
282
279
|
# in the response; pending transactions are always included as a complete set, regardless of
|
283
280
|
# the `since` parameter
|
@@ -294,7 +291,7 @@ module Figo
|
|
294
291
|
|
295
292
|
# Request the URL a user should open in the web browser to start the synchronization process.
|
296
293
|
#
|
297
|
-
# @param redirect_uri [String]
|
294
|
+
# @param redirect_uri [String] the user will be redirected to this URL after the process completes
|
298
295
|
# @param state [String] this string will be passed on through the complete synchronization process
|
299
296
|
# and to the redirect target at the end. It should be used to validated the authenticity of
|
300
297
|
# the call to the redirect URL
|
@@ -338,13 +335,13 @@ module Figo
|
|
338
335
|
return Notification.new(self, response)
|
339
336
|
end
|
340
337
|
|
341
|
-
# Modify
|
338
|
+
# Modify notification.
|
342
339
|
#
|
343
340
|
# @param notification [Notification] modified notification object
|
344
341
|
# @return [nil]
|
345
342
|
def modify_notification(notification)
|
346
343
|
data = { "observe_key" => notification.observe_key, "notify_uri" => notification.notify_uri, "state" => notification.state }
|
347
|
-
|
344
|
+
query_api("/rest/notifications/#{notification.notification_id}", data, "PUT")
|
348
345
|
return nil
|
349
346
|
end
|
350
347
|
|
data/lib/models.rb
CHANGED
@@ -36,6 +36,7 @@ module Figo
|
|
36
36
|
CREDIT_CARD = "Credit card"
|
37
37
|
LOAN = "Loan account"
|
38
38
|
PAYPAL = "PayPal"
|
39
|
+
CASH_BOOK = "Cash book"
|
39
40
|
UNKNOWN = "Unknown"
|
40
41
|
end
|
41
42
|
|
@@ -155,13 +156,13 @@ module Figo
|
|
155
156
|
|
156
157
|
# Request list of transactions of this account.
|
157
158
|
#
|
158
|
-
# @param since [String] this parameter can either be a transaction ID or a date
|
159
|
+
# @param since [String, Date] this parameter can either be a transaction ID or a date
|
159
160
|
# @param start_id [String] do only return transactions which were booked after the start transaction ID
|
160
|
-
# @param count [
|
161
|
+
# @param count [Integer] limit the number of returned transactions
|
161
162
|
# @param include_pending [Boolean] this flag indicates whether pending transactions should be included
|
162
163
|
# in the response; pending transactions are always included as a complete set, regardless of
|
163
164
|
# the `since` parameter
|
164
|
-
# @return [Array] an array of `Transaction` objects, one for each transaction of
|
165
|
+
# @return [Array] an array of `Transaction` objects, one for each transaction of this account
|
165
166
|
def transactions(since = nil, start_id = nil, count = 1000, include_pending = false)
|
166
167
|
data = {}
|
167
168
|
data["since"] = (since.is_a?(Date) ? since.to_s : since) unless since.nil?
|
@@ -172,13 +173,13 @@ module Figo
|
|
172
173
|
return response["transactions"].map {|transaction| Transaction.new(@session, transaction)}
|
173
174
|
end
|
174
175
|
|
175
|
-
# Request
|
176
|
+
# Request specific transaction.
|
176
177
|
#
|
177
178
|
# @param transaction_id [String] ID of the transaction to be retrieved
|
178
179
|
# @return [Transaction] transaction object
|
179
180
|
def transaction(transaction_id)
|
180
181
|
response = @session.query_api("/rest/accounts/#{@account_id}/transactions/#{transaction_id}")
|
181
|
-
return Transaction.new(@session, response)
|
182
|
+
return response.nil? ? nil : Transaction.new(@session, response)
|
182
183
|
end
|
183
184
|
|
184
185
|
end
|
@@ -227,7 +228,7 @@ module Figo
|
|
227
228
|
# @return [String]
|
228
229
|
attr_accessor :account_number
|
229
230
|
|
230
|
-
# Bank code of originator or
|
231
|
+
# Bank code of originator or recipient.
|
231
232
|
# @return [String]
|
232
233
|
attr_accessor :bank_code
|
233
234
|
|
data/test/test_figo.rb
CHANGED
@@ -20,17 +20,12 @@
|
|
20
20
|
# THE SOFTWARE.
|
21
21
|
#
|
22
22
|
|
23
|
-
require "
|
23
|
+
require "minitest/autorun"
|
24
24
|
require_relative "../lib/figo"
|
25
25
|
|
26
26
|
|
27
|
-
class FigoTest <
|
27
|
+
class FigoTest < MiniTest::Unit::TestCase
|
28
28
|
|
29
|
-
def setup
|
30
|
-
$api_endpoint = "api.staging.figo.me"
|
31
|
-
$valid_fingerprints = ["AF:FF:C3:2A:45:13:86:FB:28:57:55:80:0A:58:23:C7:7A:70:B6:2D"]
|
32
|
-
end
|
33
|
-
|
34
29
|
def test_accounts
|
35
30
|
sut = Figo::Session.new("ASHWLIkouP2O6_bgA2wWReRhletgWKHYjLqDaqb0LFfamim9RjexTo22ujRIP_cjLiRiSyQXyt2kM1eXU2XLFZQ0Hro15HikJQT_eNeT_9XQ")
|
36
31
|
|
metadata
CHANGED
@@ -1,47 +1,52 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: figo
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.1.1
|
5
5
|
platform: ruby
|
6
|
-
authors:
|
6
|
+
authors:
|
7
7
|
- Stefan Richter
|
8
8
|
- Michael Haller
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2014-04-10 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
16
15
|
name: flt
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
- !ruby/object:Gem::Version
|
23
|
-
version: "0"
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
requirements:
|
18
|
+
- - '>='
|
19
|
+
- !ruby/object:Gem::Version
|
20
|
+
version: '0'
|
24
21
|
type: :runtime
|
25
|
-
version_requirements: *id001
|
26
|
-
- !ruby/object:Gem::Dependency
|
27
|
-
name: net-http-persistent
|
28
22
|
prerelease: false
|
29
|
-
|
30
|
-
requirements:
|
31
|
-
-
|
23
|
+
version_requirements: !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - '>='
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
version: '0'
|
28
|
+
- !ruby/object:Gem::Dependency
|
29
|
+
name: net-http-persistent
|
30
|
+
requirement: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - '>='
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: '0'
|
32
35
|
type: :runtime
|
33
|
-
|
36
|
+
prerelease: false
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - '>='
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: '0'
|
34
42
|
description: Library to easily use the API of http://www.figo.me
|
35
|
-
email:
|
43
|
+
email:
|
36
44
|
- stefan.richter@figo.me
|
37
45
|
- michael.haller@figo.me
|
38
46
|
executables: []
|
39
|
-
|
40
47
|
extensions: []
|
41
|
-
|
42
48
|
extra_rdoc_files: []
|
43
|
-
|
44
|
-
files:
|
49
|
+
files:
|
45
50
|
- .gitignore
|
46
51
|
- .travis.yml
|
47
52
|
- Gemfile
|
@@ -53,27 +58,28 @@ files:
|
|
53
58
|
- lib/models.rb
|
54
59
|
- test/test_figo.rb
|
55
60
|
homepage: https://github.com/figo-connect/ruby-figo
|
56
|
-
licenses:
|
61
|
+
licenses:
|
57
62
|
- MIT
|
58
63
|
metadata: {}
|
59
|
-
|
60
64
|
post_install_message:
|
61
65
|
rdoc_options: []
|
62
|
-
|
63
|
-
require_paths:
|
66
|
+
require_paths:
|
64
67
|
- lib
|
65
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
66
|
-
requirements:
|
67
|
-
-
|
68
|
-
|
69
|
-
|
70
|
-
|
68
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
69
|
+
requirements:
|
70
|
+
- - '>='
|
71
|
+
- !ruby/object:Gem::Version
|
72
|
+
version: '0'
|
73
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
74
|
+
requirements:
|
75
|
+
- - '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
71
78
|
requirements: []
|
72
|
-
|
73
79
|
rubyforge_project:
|
74
|
-
rubygems_version: 2.
|
80
|
+
rubygems_version: 2.1.11
|
75
81
|
signing_key:
|
76
82
|
specification_version: 4
|
77
83
|
summary: API wrapper for figo Connect.
|
78
|
-
test_files:
|
84
|
+
test_files:
|
79
85
|
- test/test_figo.rb
|