quaderno 1.3.0 → 1.3.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/Gemfile +3 -2
- data/Gemfile.lock +27 -22
- data/README.md +7 -2
- data/Rakefile +5 -6
- data/VERSION +1 -1
- data/build_install.sh +1 -1
- data/changelog.md +5 -0
- data/lib/quaderno-ruby/base.rb +24 -8
- data/lib/quaderno-ruby/behavior/crud.rb +5 -5
- data/lib/quaderno-ruby/behavior/deliver.rb +1 -1
- data/lib/quaderno-ruby/behavior/payment.rb +2 -2
- data/quaderno.gemspec +8 -7
- data/test/fixtures/.DS_Store +0 -0
- data/test/fixtures/quaderno_cassettes/.DS_Store +0 -0
- data/test/fixtures/quaderno_cassettes/all_contacts.yml +44 -26
- data/test/fixtures/quaderno_cassettes/all_estimates.yml +29 -37
- data/test/fixtures/quaderno_cassettes/all_expenses.yml +30 -40
- data/test/fixtures/quaderno_cassettes/all_invoices.yml +108 -36
- data/test/fixtures/quaderno_cassettes/all_items.yml +27 -23
- data/test/fixtures/quaderno_cassettes/all_webhooks.yml +124 -104
- data/test/fixtures/quaderno_cassettes/deleted_contact.yml +135 -92
- data/test/fixtures/quaderno_cassettes/deleted_estimate.yml +125 -105
- data/test/fixtures/quaderno_cassettes/deleted_expense.yml +126 -108
- data/test/fixtures/quaderno_cassettes/deleted_invoice.yml +203 -104
- data/test/fixtures/quaderno_cassettes/deleted_item.yml +74 -62
- data/test/fixtures/quaderno_cassettes/deleted_webhook.yml +149 -125
- data/test/fixtures/quaderno_cassettes/delivered_estimate.yml +75 -75
- data/test/fixtures/quaderno_cassettes/delivered_invoice.yml +159 -77
- data/test/fixtures/quaderno_cassettes/found_contact.yml +71 -49
- data/test/fixtures/quaderno_cassettes/found_estimate.yml +59 -64
- data/test/fixtures/quaderno_cassettes/found_expense.yml +61 -71
- data/test/fixtures/quaderno_cassettes/found_invoice.yml +145 -66
- data/test/fixtures/quaderno_cassettes/found_item.yml +54 -46
- data/test/fixtures/quaderno_cassettes/found_webhook.yml +75 -63
- data/test/fixtures/quaderno_cassettes/new_contact.yml +28 -24
- data/test/fixtures/quaderno_cassettes/new_estimate.yml +97 -69
- data/test/fixtures/quaderno_cassettes/new_expense.yml +126 -108
- data/test/fixtures/quaderno_cassettes/new_invoice.yml +96 -69
- data/test/fixtures/quaderno_cassettes/new_item.yml +28 -24
- data/test/fixtures/quaderno_cassettes/new_webhook.yml +50 -42
- data/test/fixtures/quaderno_cassettes/paid_expense.yml +57 -63
- data/test/fixtures/quaderno_cassettes/paid_invoice.yml +135 -59
- data/test/fixtures/quaderno_cassettes/rate_limit.yml +24 -20
- data/test/fixtures/quaderno_cassettes/unpay_an_expense.yml +79 -81
- data/test/fixtures/quaderno_cassettes/unpay_an_invoice.yml +157 -77
- data/test/fixtures/quaderno_cassettes/updated_contact.yml +71 -49
- data/test/fixtures/quaderno_cassettes/updated_estimate.yml +126 -94
- data/test/fixtures/quaderno_cassettes/updated_expense.yml +125 -93
- data/test/fixtures/quaderno_cassettes/updated_invoice.yml +125 -94
- data/test/fixtures/quaderno_cassettes/updated_item.yml +54 -46
- data/test/fixtures/quaderno_cassettes/updated_webhook.yml +103 -87
- data/test/unit/test_quaderno_contacts.rb +5 -9
- data/test/unit/test_quaderno_estimates.rb +3 -3
- data/test/unit/test_quaderno_expenses.rb +3 -3
- data/test/unit/test_quaderno_invoices.rb +3 -3
- data/test/unit/test_quaderno_items.rb +6 -6
- data/test/unit/test_quaderno_webhooks.rb +14 -14
- metadata +8 -7
- data/test/test_quaderno-ruby.rb +0 -4
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
MzA3ZDIzYmY5YjRhOTJmMGE3M2QzNWM2ZmM4ODgxN2M3ODA0NTk5Zg==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
Nzg1ZjkyM2M3ODUxM2IyZmVhMDBiZDU3ZTExZDVhYzA4MDc3Y2E2YQ==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
Y2NiZWY3YjE2NThhYTViYjQzOTFjZTcwMTBhYzVmZjEwZTRhZTE0NWU5OTI4
|
10
|
+
ZWVlZTc1Mjk4YWI2NGMyYmFhZTIwNDcwMGQyMzFmMGRiNDMzMmQxYTg4NTM2
|
11
|
+
NDJlM2M0ZTg1ODFhZDhmZWI3M2IwZjg2Y2M5MmQyYWQzMzZmMDU=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
MzA0Nzc5ODM0NDIzNTllYjU5YmIyNDlhNzY1YTk2OGZiNDI3MzE3NDhhODIw
|
14
|
+
NjYxZTkxYzA0NTZhMWYxZjFhOTUwMmYyYzZiNDUyN2U3MTAwNzBmZDc3NzY4
|
15
|
+
YzllYTU4NjgxMTJhNzdlMDMyOWFjNGUyNzAxNTQ5MTQ2NDc2MDg=
|
data/Gemfile
CHANGED
@@ -5,7 +5,7 @@ source "http://rubygems.org"
|
|
5
5
|
|
6
6
|
# Add dependencies to develop your gem here.
|
7
7
|
# Include everything needed to run rake, tests, features, etc.
|
8
|
-
gem 'httparty'
|
8
|
+
gem 'httparty', '~> 0.13.1'
|
9
9
|
gem "rdoc", "~> 3.12"
|
10
10
|
|
11
11
|
group :development do
|
@@ -15,7 +15,8 @@ end
|
|
15
15
|
group :test do
|
16
16
|
gem "bundler", ">= 1.0.0"
|
17
17
|
gem 'fakeweb'
|
18
|
-
gem
|
18
|
+
gem 'minitest', '~> 4.7.5 '
|
19
|
+
gem "simplecov", ">= 0"
|
19
20
|
gem "shoulda", ">= 0"
|
20
21
|
gem 'vcr', :require => 'vcr'
|
21
22
|
end
|
data/Gemfile.lock
CHANGED
@@ -1,20 +1,21 @@
|
|
1
1
|
GEM
|
2
2
|
remote: http://rubygems.org/
|
3
3
|
specs:
|
4
|
-
activesupport (4.
|
4
|
+
activesupport (4.0.5)
|
5
5
|
i18n (~> 0.6, >= 0.6.9)
|
6
|
-
|
7
|
-
|
6
|
+
minitest (~> 4.2)
|
7
|
+
multi_json (~> 1.3)
|
8
8
|
thread_safe (~> 0.1)
|
9
|
-
tzinfo (~>
|
9
|
+
tzinfo (~> 0.3.37)
|
10
10
|
addressable (2.3.6)
|
11
11
|
builder (3.2.2)
|
12
12
|
descendants_tracker (0.0.4)
|
13
13
|
thread_safe (~> 0.3, >= 0.3.1)
|
14
|
+
docile (1.1.4)
|
14
15
|
fakeweb (1.3.0)
|
15
16
|
faraday (0.9.0)
|
16
17
|
multipart-post (>= 1.2, < 3)
|
17
|
-
git (1.2.
|
18
|
+
git (1.2.7)
|
18
19
|
github_api (0.11.3)
|
19
20
|
addressable (~> 2.3)
|
20
21
|
descendants_tracker (~> 0.0.1)
|
@@ -23,7 +24,7 @@ GEM
|
|
23
24
|
multi_json (>= 1.7.5, < 2.0)
|
24
25
|
nokogiri (~> 1.6.0)
|
25
26
|
oauth2
|
26
|
-
hashie (
|
27
|
+
hashie (3.0.0)
|
27
28
|
highline (1.6.21)
|
28
29
|
httparty (0.13.1)
|
29
30
|
json (~> 1.8)
|
@@ -39,23 +40,22 @@ GEM
|
|
39
40
|
rake
|
40
41
|
rdoc
|
41
42
|
json (1.8.1)
|
42
|
-
jwt (0.
|
43
|
-
mini_portile (0.
|
44
|
-
minitest (
|
45
|
-
multi_json (1.10.
|
43
|
+
jwt (1.0.0)
|
44
|
+
mini_portile (0.6.0)
|
45
|
+
minitest (4.7.5)
|
46
|
+
multi_json (1.10.1)
|
46
47
|
multi_xml (0.5.5)
|
47
48
|
multipart-post (2.0.0)
|
48
|
-
nokogiri (1.6.1)
|
49
|
-
mini_portile (
|
50
|
-
oauth2 (0.9.
|
49
|
+
nokogiri (1.6.2.1)
|
50
|
+
mini_portile (= 0.6.0)
|
51
|
+
oauth2 (0.9.4)
|
51
52
|
faraday (>= 0.8, < 0.10)
|
52
|
-
jwt (~>
|
53
|
+
jwt (~> 1.0)
|
53
54
|
multi_json (~> 1.3)
|
54
55
|
multi_xml (~> 0.5)
|
55
56
|
rack (~> 1.2)
|
56
57
|
rack (1.5.2)
|
57
|
-
rake (10.3.
|
58
|
-
rcov (0.9.11)
|
58
|
+
rake (10.3.2)
|
59
59
|
rdoc (3.12.2)
|
60
60
|
json (~> 1.4)
|
61
61
|
shoulda (3.5.0)
|
@@ -64,10 +64,14 @@ GEM
|
|
64
64
|
shoulda-context (1.2.1)
|
65
65
|
shoulda-matchers (2.6.1)
|
66
66
|
activesupport (>= 3.0.0)
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
67
|
+
simplecov (0.8.2)
|
68
|
+
docile (~> 1.1.0)
|
69
|
+
multi_json
|
70
|
+
simplecov-html (~> 0.8.0)
|
71
|
+
simplecov-html (0.8.0)
|
72
|
+
thread_safe (0.3.4)
|
73
|
+
tzinfo (0.3.39)
|
74
|
+
vcr (2.9.2)
|
71
75
|
|
72
76
|
PLATFORMS
|
73
77
|
ruby
|
@@ -75,9 +79,10 @@ PLATFORMS
|
|
75
79
|
DEPENDENCIES
|
76
80
|
bundler (>= 1.0.0)
|
77
81
|
fakeweb
|
78
|
-
httparty
|
82
|
+
httparty (~> 0.13.1)
|
79
83
|
jeweler (~> 2.0.1)
|
80
|
-
|
84
|
+
minitest (~> 4.7.5)
|
81
85
|
rdoc (~> 3.12)
|
82
86
|
shoulda
|
87
|
+
simplecov
|
83
88
|
vcr
|
data/README.md
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
Quaderno-ruby is a ruby wrapper for [quaderno api] (https://github.com/recrea/quaderno-api).
|
4
4
|
As the API, it's mostly CRUD.
|
5
5
|
|
6
|
-
Current version is 1.
|
6
|
+
Current version is 1.3.1. See the changelog [here](https://github.com/recrea/quaderno-ruby/blob/master/changelog.md)
|
7
7
|
|
8
8
|
## Installation & Configuration
|
9
9
|
|
@@ -19,18 +19,23 @@ To configure just add this to your initializers
|
|
19
19
|
Quaderno::Base.configure do |config|
|
20
20
|
config.auth_token = 'my_authenticate_token'
|
21
21
|
config.subdomain = 'my_account_subdomain'
|
22
|
+
config.environment = :production
|
22
23
|
end
|
23
24
|
```
|
24
25
|
|
26
|
+
The `environment` attribute is optional and set to `:production` by default. Optionally, you can set it to `:sandbox` in order to test your application before deploying it to production.
|
27
|
+
|
25
28
|
## Get authorization data
|
26
29
|
|
27
30
|
You can get your account subdomain by grabbing it from your account url or by calling the authorization method with your personal api token.
|
28
31
|
|
29
32
|
```ruby
|
30
|
-
Quaderno::Base.authorization 'my_authenticate_token'
|
33
|
+
Quaderno::Base.authorization 'my_authenticate_token', environment
|
31
34
|
# => {"identity"=>{"id"=>737000, "name"=>"Walter White", "email"=>"cooking@br.bd", "href"=>"https://quadernoapp.com/my_account_subdomain/api/v1/"}}
|
32
35
|
```
|
33
36
|
|
37
|
+
`envirnment` is an optional argument. By passing `:sandbox`, you will retrieve your credentials for the sandbox environment and not for production.
|
38
|
+
|
34
39
|
This will return a hash with the information about your api url, which includes the account subdomain.
|
35
40
|
|
36
41
|
## Ping the service
|
data/Rakefile
CHANGED
@@ -32,14 +32,13 @@ Rake::TestTask.new(:test) do |test|
|
|
32
32
|
test.verbose = true
|
33
33
|
end
|
34
34
|
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
test.verbose = true
|
40
|
-
test.rcov_opts << '--exclude "gems/*"'
|
35
|
+
desc "Code coverage detail"
|
36
|
+
task :simplecov do
|
37
|
+
ENV['COVERAGE'] = "true"
|
38
|
+
Rake::Task['test'].execute
|
41
39
|
end
|
42
40
|
|
41
|
+
|
43
42
|
task :default => :test
|
44
43
|
|
45
44
|
require 'rdoc/task'
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.3.
|
1
|
+
1.3.1
|
data/build_install.sh
CHANGED
@@ -1,2 +1,2 @@
|
|
1
1
|
gem build quaderno.gemspec
|
2
|
-
gem install quaderno-1.3.
|
2
|
+
gem install quaderno-1.3.1.gem
|
data/changelog.md
CHANGED
data/lib/quaderno-ruby/base.rb
CHANGED
@@ -10,8 +10,12 @@ module Quaderno
|
|
10
10
|
@@auth_token = nil
|
11
11
|
@@subdomain = nil
|
12
12
|
@@rate_limit_info = nil
|
13
|
-
|
14
|
-
|
13
|
+
@@environment = :production
|
14
|
+
@@base_url = 'https://quadernoapp.com'
|
15
|
+
|
16
|
+
def to_hash
|
17
|
+
self.marshal_dump
|
18
|
+
end
|
15
19
|
|
16
20
|
def self.api_model(klass)
|
17
21
|
instance_eval <<-END
|
@@ -29,8 +33,14 @@ module Quaderno
|
|
29
33
|
#Default way to configure the authenticata data
|
30
34
|
def self.configure
|
31
35
|
yield self
|
36
|
+
|
37
|
+
@@base_url = @@environment == :sandbox ? 'http://sandbox-quadernoapp.com' : 'https://quadernoapp.com'
|
32
38
|
end
|
33
39
|
|
40
|
+
def self.environment=(mode)
|
41
|
+
@@environment = mode
|
42
|
+
end
|
43
|
+
|
34
44
|
def self.auth_token=(auth_token)
|
35
45
|
@@auth_token = auth_token
|
36
46
|
end
|
@@ -39,11 +49,13 @@ module Quaderno
|
|
39
49
|
@@subdomain = subdomain
|
40
50
|
end
|
41
51
|
|
42
|
-
def self.authorization(auth_token)
|
52
|
+
def self.authorization(auth_token, mode = nil)
|
43
53
|
begin
|
44
|
-
|
54
|
+
mode ||= @@environment
|
55
|
+
base_url = mode == :sandbox ? 'http://sandbox-quadernoapp.com' : 'https://quadernoapp.com'
|
56
|
+
party_response = get("#{base_url}/subdomain/api/v1/authorization.json", basic_auth: { username: auth_token })
|
45
57
|
return JSON::parse party_response.body
|
46
|
-
rescue
|
58
|
+
rescue Exception
|
47
59
|
return false
|
48
60
|
end
|
49
61
|
end
|
@@ -51,7 +63,7 @@ module Quaderno
|
|
51
63
|
#Check the connection
|
52
64
|
def self.ping
|
53
65
|
begin
|
54
|
-
party_response = get("/#{ subdomain }/api/v1/ping.json", basic_auth: { username: auth_token })
|
66
|
+
party_response = get("#{base_url}/#{ subdomain }/api/v1/ping.json", basic_auth: { username: auth_token })
|
55
67
|
rescue Errno::ECONNREFUSED
|
56
68
|
return false
|
57
69
|
end
|
@@ -60,12 +72,16 @@ module Quaderno
|
|
60
72
|
|
61
73
|
#Returns the rate limit information: limit and remaining requests
|
62
74
|
def self.rate_limit_info
|
63
|
-
party_response = get("/#{ subdomain }/api/v1/ping.json", basic_auth: { username: auth_token })
|
75
|
+
party_response = get("#{@@base_url}/#{ subdomain }/api/v1/ping.json", basic_auth: { username: auth_token })
|
64
76
|
@@rate_limit_info = { limit: party_response.headers["x-ratelimit-limit"].to_i, remaining: party_response.headers["x-ratelimit-remaining"].to_i }
|
65
77
|
end
|
66
78
|
|
67
79
|
|
68
|
-
private
|
80
|
+
private
|
81
|
+
def self.base_url
|
82
|
+
@@base_url
|
83
|
+
end
|
84
|
+
|
69
85
|
def self.auth_token
|
70
86
|
@@auth_token
|
71
87
|
end
|
@@ -28,7 +28,7 @@ module Quaderno
|
|
28
28
|
end
|
29
29
|
|
30
30
|
def all(filter = nil)
|
31
|
-
party_response = get("/#{ api_model.subdomain }/api/v1/#{ api_model.api_path }.json", body: filter, basic_auth: { username: api_model.auth_token })
|
31
|
+
party_response = get("#{api_model.base_url}/#{ api_model.subdomain }/api/v1/#{ api_model.api_path }.json", body: filter, basic_auth: { username: api_model.auth_token })
|
32
32
|
check_exception_for(party_response, { rate_limit: true, subdomain_or_token: true })
|
33
33
|
array = JSON::parse party_response.body
|
34
34
|
collection = []
|
@@ -42,7 +42,7 @@ module Quaderno
|
|
42
42
|
end
|
43
43
|
|
44
44
|
def find(id)
|
45
|
-
party_response = get "/#{ api_model.subdomain }/api/v1/#{ api_model.api_path }/#{ id }.json", basic_auth: { username: api_model.auth_token }
|
45
|
+
party_response = get "#{api_model.base_url}/#{ api_model.subdomain }/api/v1/#{ api_model.api_path }/#{ id }.json", basic_auth: { username: api_model.auth_token }
|
46
46
|
check_exception_for(party_response, { rate_limit: true, subdomain_or_token: true, id: true })
|
47
47
|
hash = JSON::parse party_response.body
|
48
48
|
if (api_model == Quaderno::Invoice) || (api_model == Quaderno::Estimate) || (api_model == Quaderno::Expense)
|
@@ -52,7 +52,7 @@ module Quaderno
|
|
52
52
|
end
|
53
53
|
|
54
54
|
def create(params)
|
55
|
-
party_response = post "/#{ api_model.subdomain }/api/v1/#{ api_model.api_path }.json", body: params, basic_auth: { username: api_model.auth_token }
|
55
|
+
party_response = post "#{api_model.base_url}/#{ api_model.subdomain }/api/v1/#{ api_model.api_path }.json", body: params, basic_auth: { username: api_model.auth_token }
|
56
56
|
check_exception_for(party_response, { rate_limit: true, subdomain_or_token: true, required_fields: true })
|
57
57
|
hash = JSON::parse party_response.body
|
58
58
|
if (api_model == Quaderno::Invoice) || (api_model == Quaderno::Estimate) || (api_model == Quaderno::Expense)
|
@@ -62,7 +62,7 @@ module Quaderno
|
|
62
62
|
end
|
63
63
|
|
64
64
|
def update(id, params)
|
65
|
-
party_response = put "/#{ api_model.subdomain }/api/v1/#{ api_model.api_path }/#{ id }.json", body: params, basic_auth: { username: api_model.auth_token }
|
65
|
+
party_response = put "#{api_model.base_url}/#{ api_model.subdomain }/api/v1/#{ api_model.api_path }/#{ id }.json", body: params, basic_auth: { username: api_model.auth_token }
|
66
66
|
check_exception_for(party_response, { rate_limit: true, subdomain_or_token: true, id: true })
|
67
67
|
hash = JSON::parse party_response.body
|
68
68
|
if (api_model == Quaderno::Invoice) || (api_model == Quaderno::Estimate) || (api_model == Quaderno::Expense)
|
@@ -72,7 +72,7 @@ module Quaderno
|
|
72
72
|
end
|
73
73
|
|
74
74
|
def delete(id)
|
75
|
-
party_response = HTTParty.delete "#{
|
75
|
+
party_response = HTTParty.delete "#{api_model.base_url}/#{ api_model.subdomain }/api/v1/#{ api_model.api_path }/#{ id }.json", basic_auth: { username: api_model.auth_token }
|
76
76
|
check_exception_for(party_response, { rate_limit: true, subdomain_or_token: true, id: true, has_documents: true })
|
77
77
|
true
|
78
78
|
end
|
@@ -8,7 +8,7 @@ module Quaderno
|
|
8
8
|
|
9
9
|
module InstanceMethods
|
10
10
|
def deliver
|
11
|
-
party_response = api_model.get("/#{ api_model.subdomain }/api/v1/#{ api_model.api_path }/#{ id }/deliver.json", basic_auth: { username: api_model.auth_token })
|
11
|
+
party_response = api_model.get("#{api_model.base_url}/#{ api_model.subdomain }/api/v1/#{ api_model.api_path }/#{ id }/deliver.json", basic_auth: { username: api_model.auth_token })
|
12
12
|
api_model.check_exception_for(party_response, { rate_limit: true, subdomain_or_token: true, id: true, required_fields: true })
|
13
13
|
{ limit: party_response.headers["x-ratelimit-limit"].to_i, remaining: party_response.headers["x-ratelimit-remaining"].to_i }
|
14
14
|
end
|
@@ -11,7 +11,7 @@ module Quaderno
|
|
11
11
|
end
|
12
12
|
|
13
13
|
def add_payment(params)
|
14
|
-
party_response = api_model.post "/#{ api_model.subdomain }/api/v1/#{ api_model.api_path }/#{ id }/payments.json", body: params, basic_auth: { username: api_model.auth_token }
|
14
|
+
party_response = api_model.post "#{api_model.base_url}/#{ api_model.subdomain }/api/v1/#{ api_model.api_path }/#{ id }/payments.json", body: params, basic_auth: { username: api_model.auth_token }
|
15
15
|
api_model.check_exception_for(party_response, { rate_limit: true, subdomain_or_token: true, required_fields: true })
|
16
16
|
parsed = JSON::parse party_response.body
|
17
17
|
instance = to_instance(Quaderno::Payment, parsed)
|
@@ -20,7 +20,7 @@ module Quaderno
|
|
20
20
|
end
|
21
21
|
|
22
22
|
def remove_payment(payment_id)
|
23
|
-
party_response = HTTParty.delete "#{
|
23
|
+
party_response = HTTParty.delete "#{api_model.base_url}/#{ api_model.subdomain }/api/v1/#{ api_model.api_path }/#{ id }/payments/#{ payment_id }.json", basic_auth: { username: api_model.auth_token }
|
24
24
|
to_delete = nil
|
25
25
|
payments.each do |payment|
|
26
26
|
if payment.id == payment_id
|
data/quaderno.gemspec
CHANGED
@@ -2,15 +2,15 @@
|
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
3
|
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
|
-
# stub: quaderno 1.3.
|
5
|
+
# stub: quaderno 1.3.1 ruby lib
|
6
6
|
|
7
7
|
Gem::Specification.new do |s|
|
8
8
|
s.name = "quaderno"
|
9
|
-
s.version = "1.3.
|
9
|
+
s.version = "1.3.1"
|
10
10
|
|
11
11
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
12
12
|
s.authors = ["Recrea"]
|
13
|
-
s.date = "2014-
|
13
|
+
s.date = "2014-06-13"
|
14
14
|
s.description = "longer description of your gem"
|
15
15
|
s.email = "carlos@recrea.es"
|
16
16
|
s.extra_rdoc_files = [
|
@@ -42,6 +42,8 @@ Gem::Specification.new do |s|
|
|
42
42
|
"lib/quaderno-ruby/payment.rb",
|
43
43
|
"lib/quaderno-ruby/webhook.rb",
|
44
44
|
"quaderno.gemspec",
|
45
|
+
"test/fixtures/.DS_Store",
|
46
|
+
"test/fixtures/quaderno_cassettes/.DS_Store",
|
45
47
|
"test/fixtures/quaderno_cassettes/all_contacts.yml",
|
46
48
|
"test/fixtures/quaderno_cassettes/all_estimates.yml",
|
47
49
|
"test/fixtures/quaderno_cassettes/all_expenses.yml",
|
@@ -80,7 +82,6 @@ Gem::Specification.new do |s|
|
|
80
82
|
"test/fixtures/quaderno_cassettes/updated_item.yml",
|
81
83
|
"test/fixtures/quaderno_cassettes/updated_webhook.yml",
|
82
84
|
"test/helper.rb",
|
83
|
-
"test/test_quaderno-ruby.rb",
|
84
85
|
"test/unit/test_quaderno_contacts.rb",
|
85
86
|
"test/unit/test_quaderno_estimates.rb",
|
86
87
|
"test/unit/test_quaderno_expenses.rb",
|
@@ -98,16 +99,16 @@ Gem::Specification.new do |s|
|
|
98
99
|
s.specification_version = 4
|
99
100
|
|
100
101
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
101
|
-
s.add_runtime_dependency(%q<httparty>, ["
|
102
|
+
s.add_runtime_dependency(%q<httparty>, ["~> 0.13.1"])
|
102
103
|
s.add_runtime_dependency(%q<rdoc>, ["~> 3.12"])
|
103
104
|
s.add_development_dependency(%q<jeweler>, ["~> 2.0.1"])
|
104
105
|
else
|
105
|
-
s.add_dependency(%q<httparty>, ["
|
106
|
+
s.add_dependency(%q<httparty>, ["~> 0.13.1"])
|
106
107
|
s.add_dependency(%q<rdoc>, ["~> 3.12"])
|
107
108
|
s.add_dependency(%q<jeweler>, ["~> 2.0.1"])
|
108
109
|
end
|
109
110
|
else
|
110
|
-
s.add_dependency(%q<httparty>, ["
|
111
|
+
s.add_dependency(%q<httparty>, ["~> 0.13.1"])
|
111
112
|
s.add_dependency(%q<rdoc>, ["~> 3.12"])
|
112
113
|
s.add_dependency(%q<jeweler>, ["~> 2.0.1"])
|
113
114
|
end
|
Binary file
|
Binary file
|
@@ -2,52 +2,70 @@
|
|
2
2
|
http_interactions:
|
3
3
|
- request:
|
4
4
|
method: get
|
5
|
-
uri: http://
|
5
|
+
uri: http://kAppsMggGcw8psUwdZBV@sandbox-quadernoapp.com/ninive-688/api/v1/contacts.json
|
6
6
|
body:
|
7
7
|
encoding: US-ASCII
|
8
8
|
string: ''
|
9
9
|
headers:
|
10
10
|
authorization:
|
11
|
-
- Basic
|
11
|
+
- Basic a0FwcHNNZ2dHY3c4cHNVd2RaQlY6
|
12
12
|
response:
|
13
13
|
status:
|
14
14
|
code: 200
|
15
|
-
message:
|
15
|
+
message: OK
|
16
16
|
headers:
|
17
|
+
server:
|
18
|
+
- nginx/1.4.5
|
19
|
+
date:
|
20
|
+
- Fri, 13 Jun 2014 12:33:05 GMT
|
21
|
+
content-type:
|
22
|
+
- application/json; charset=utf-8
|
23
|
+
transfer-encoding:
|
24
|
+
- chunked
|
25
|
+
connection:
|
26
|
+
- close
|
27
|
+
status:
|
28
|
+
- 200 OK
|
17
29
|
x-ratelimit-limit:
|
18
30
|
- '2000'
|
19
31
|
x-ratelimit-remaining:
|
20
|
-
- '
|
32
|
+
- '1506'
|
21
33
|
x-pages-currentpage:
|
22
34
|
- '1'
|
23
35
|
x-pages-totalpages:
|
24
|
-
- '
|
25
|
-
content-type:
|
26
|
-
- application/json; charset=utf-8
|
36
|
+
- '6'
|
27
37
|
x-ua-compatible:
|
28
|
-
- IE=Edge
|
38
|
+
- IE=Edge,chrome=1
|
29
39
|
etag:
|
30
|
-
- ! '"
|
40
|
+
- ! '"78987cdc82808337e2e0baa06f1a206c"'
|
31
41
|
cache-control:
|
32
|
-
-
|
42
|
+
- must-revalidate, private, max-age=0
|
33
43
|
x-request-id:
|
34
|
-
-
|
44
|
+
- 39dab9a17986be2f75473a773948360f
|
35
45
|
x-runtime:
|
36
|
-
- '0.
|
37
|
-
|
38
|
-
-
|
39
|
-
date:
|
40
|
-
- Tue, 04 Feb 2014 14:39:43 GMT
|
41
|
-
content-length:
|
42
|
-
- '1879'
|
43
|
-
connection:
|
44
|
-
- close
|
46
|
+
- '0.142266'
|
47
|
+
x-rack-cache:
|
48
|
+
- miss
|
45
49
|
body:
|
46
50
|
encoding: US-ASCII
|
47
|
-
string: ! '[{"id":
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
+
string: ! '[{"id":760,"kind":"company","full_name":"\u0003 esatipa","contact_name":null,"street_line_1":"Torres
|
52
|
+
Quevedo","street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"ES","phone_1":"673832948","phone_2":null,"fax":null,"email":null,"web":null,"discount":null,"tax_id":null,"bank_account":null,"language":"EN","notes":null,"url":"http://ninive-688.sandbox-quadernoapp.com/api/v1/contacts/760"},{"id":113,"kind":"company","full_name":"100-499","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"ES","phone_1":null,"phone_2":null,"fax":null,"email":"totoro.estepario@gmail.com","web":null,"discount":null,"tax_id":"","bank_account":null,"language":"EN","notes":null,"url":"http://ninive-688.sandbox-quadernoapp.com/api/v1/contacts/113"},{"id":694,"kind":"company","full_name":"Ale","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"ES","phone_1":"+34650960183","phone_2":null,"fax":null,"email":null,"web":null,"discount":null,"tax_id":null,"bank_account":null,"language":"EN","notes":null,"url":"http://ninive-688.sandbox-quadernoapp.com/api/v1/contacts/694"},{"id":498,"kind":"company","full_name":"Alejandro","contact_name":"","street_line_1":"","street_line_2":"","postal_code":"","city":"","region":"","country":"ES","phone_1":"","phone_2":"","fax":"","email":"alexmanalopez@gmail.com","web":"","discount":null,"tax_id":"","bank_account":"","language":"ES","notes":"","url":"http://ninive-688.sandbox-quadernoapp.com/api/v1/contacts/498"},{"id":744,"kind":"company","full_name":"Alejandro
|
53
|
+
Lopez Santos","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"ES","phone_1":null,"phone_2":null,"fax":null,"email":"alexmanalopez@gmail.com","web":null,"discount":null,"tax_id":null,"bank_account":null,"language":"EN","notes":null,"url":"http://ninive-688.sandbox-quadernoapp.com/api/v1/contacts/744"},{"id":739,"kind":"company","full_name":"ANA","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"ES","phone_1":null,"phone_2":null,"fax":null,"email":"ana@vali2.com","web":null,"discount":null,"tax_id":null,"bank_account":null,"language":"EN","notes":null,"url":"http://ninive-688.sandbox-quadernoapp.com/api/v1/contacts/739"},{"id":773,"kind":"company","full_name":"Angel
|
54
|
+
Ramos de Miguel","contact_name":null,"street_line_1":";;;Las Palmas de Gran
|
55
|
+
Canaria;;;Espa\u00f1a","street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"ES","phone_1":"668829133","phone_2":null,"fax":null,"email":"aramos.gcc@gmail.com","web":null,"discount":null,"tax_id":null,"bank_account":null,"language":"EN","notes":null,"url":"http://ninive-688.sandbox-quadernoapp.com/api/v1/contacts/773"},{"id":717,"kind":"company","full_name":"Angel
|
56
|
+
Ramos de Miguel","contact_name":null,"street_line_1":";;;Las Palmas de Gran
|
57
|
+
Canaria;;;Espa\u00f1a","street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"ES","phone_1":"668829133","phone_2":null,"fax":null,"email":"aramos.gcc@gmail.com","web":null,"discount":null,"tax_id":null,"bank_account":null,"language":"EN","notes":null,"url":"http://ninive-688.sandbox-quadernoapp.com/api/v1/contacts/717"},{"id":748,"kind":"company","full_name":"Antonio Brito","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"ES","phone_1":"605100535","phone_2":null,"fax":null,"email":null,"web":null,"discount":null,"tax_id":null,"bank_account":null,"language":"EN","notes":null,"url":"http://ninive-688.sandbox-quadernoapp.com/api/v1/contacts/748"},{"id":752,"kind":"company","full_name":"Antonio
|
58
|
+
C. Dom\u00ednguez Brito","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"ES","phone_1":null,"phone_2":null,"fax":null,"email":"adominguez@iusiani.ulpgc.es","web":null,"discount":null,"tax_id":null,"bank_account":null,"language":"EN","notes":null,"url":"http://ninive-688.sandbox-quadernoapp.com/api/v1/contacts/752"},{"id":733,"kind":"company","full_name":"aviso_llegada","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"ES","phone_1":null,"phone_2":null,"fax":null,"email":"avisollegada@adtpostales.com","web":null,"discount":null,"tax_id":null,"bank_account":null,"language":"EN","notes":null,"url":"http://ninive-688.sandbox-quadernoapp.com/api/v1/contacts/733"},{"id":764,"kind":"company","full_name":"Aythami","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"ES","phone_1":"678875767","phone_2":null,"fax":null,"email":null,"web":null,"discount":null,"tax_id":null,"bank_account":null,"language":"EN","notes":null,"url":"http://ninive-688.sandbox-quadernoapp.com/api/v1/contacts/764"},{"id":736,"kind":"company","full_name":"Borja
|
59
|
+
Santana Corvo","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"ES","phone_1":null,"phone_2":null,"fax":null,"email":"ahviel@hotmail.com","web":null,"discount":null,"tax_id":null,"bank_account":null,"language":"EN","notes":null,"url":"http://ninive-688.sandbox-quadernoapp.com/api/v1/contacts/736"},{"id":713,"kind":"company","full_name":"Bycor","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"ES","phone_1":"+34646675709","phone_2":null,"fax":null,"email":null,"web":null,"discount":null,"tax_id":null,"bank_account":null,"language":"EN","notes":null,"url":"http://ninive-688.sandbox-quadernoapp.com/api/v1/contacts/713"},{"id":728,"kind":"company","full_name":"Bycor
|
60
|
+
S\u00e1nchez","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"ES","phone_1":null,"phone_2":null,"fax":null,"email":"bycor1989@gmail.com","web":null,"discount":null,"tax_id":null,"bank_account":null,"language":"EN","notes":null,"url":"http://ninive-688.sandbox-quadernoapp.com/api/v1/contacts/728"},{"id":729,"kind":"company","full_name":"Canal
|
61
|
+
Amena","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"ES","phone_1":"2224","phone_2":null,"fax":null,"email":null,"web":null,"discount":null,"tax_id":null,"bank_account":null,"language":"EN","notes":null,"url":"http://ninive-688.sandbox-quadernoapp.com/api/v1/contacts/729"},{"id":755,"kind":"company","full_name":"Carlos
|
62
|
+
Hern\u00e1ndez","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"ES","phone_1":"620815221","phone_2":null,"fax":null,"email":"carlos@recrea.es","web":null,"discount":null,"tax_id":null,"bank_account":null,"language":"EN","notes":null,"url":"http://ninive-688.sandbox-quadernoapp.com/api/v1/contacts/755"},{"id":735,"kind":"company","full_name":"Carlos
|
63
|
+
Hern\u00e1ndez Medina","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"ES","phone_1":null,"phone_2":null,"fax":null,"email":"carlos@recrea.es","web":null,"discount":null,"tax_id":null,"bank_account":null,"language":"EN","notes":null,"url":"http://ninive-688.sandbox-quadernoapp.com/api/v1/contacts/735"},{"id":686,"kind":"company","full_name":"Coolmod","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"ES","phone_1":"902
|
64
|
+
88 85 34","phone_2":null,"fax":null,"email":null,"web":null,"discount":null,"tax_id":null,"bank_account":null,"language":"EN","notes":null,"url":"http://ninive-688.sandbox-quadernoapp.com/api/v1/contacts/686"},{"id":749,"kind":"company","full_name":"Cristina","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"ES","phone_1":"+34650756263","phone_2":null,"fax":null,"email":null,"web":null,"discount":null,"tax_id":null,"bank_account":null,"language":"EN","notes":null,"url":"http://ninive-688.sandbox-quadernoapp.com/api/v1/contacts/749"},{"id":726,"kind":"company","full_name":"Cruz
|
65
|
+
Roja","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"ES","phone_1":"987795001","phone_2":null,"fax":null,"email":null,"web":null,"discount":null,"tax_id":null,"bank_account":null,"language":"EN","notes":null,"url":"http://ninive-688.sandbox-quadernoapp.com/api/v1/contacts/726"},{"id":763,"kind":"company","full_name":"Dalia","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"ES","phone_1":"637
|
66
|
+
22 08 60","phone_2":null,"fax":null,"email":null,"web":null,"discount":null,"tax_id":null,"bank_account":null,"language":"EN","notes":null,"url":"http://ninive-688.sandbox-quadernoapp.com/api/v1/contacts/763"},{"id":711,"kind":"company","full_name":"David","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"ES","phone_1":"620453446","phone_2":null,"fax":null,"email":null,"web":null,"discount":null,"tax_id":null,"bank_account":null,"language":"EN","notes":null,"url":"http://ninive-688.sandbox-quadernoapp.com/api/v1/contacts/711"},{"id":673,"kind":"company","full_name":"David
|
67
|
+
Meli\u00e1n Godoy","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"ES","phone_1":null,"phone_2":null,"fax":null,"email":"dmg_dragon@hotmail.com","web":null,"discount":null,"tax_id":null,"bank_account":null,"language":"EN","notes":null,"url":"http://ninive-688.sandbox-quadernoapp.com/api/v1/contacts/673"},{"id":756,"kind":"company","full_name":"David
|
68
|
+
Santiago","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"ES","phone_1":"660608373","phone_2":null,"fax":null,"email":null,"web":null,"discount":null,"tax_id":null,"bank_account":null,"language":"EN","notes":null,"url":"http://ninive-688.sandbox-quadernoapp.com/api/v1/contacts/756"}]'
|
51
69
|
http_version: '1.1'
|
52
|
-
recorded_at:
|
53
|
-
recorded_with: VCR 2.
|
70
|
+
recorded_at: Fri, 13 Jun 2014 12:33:05 GMT
|
71
|
+
recorded_with: VCR 2.9.2
|