quaderno 1.3.1 → 1.3.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/README.md +7 -7
- data/VERSION +1 -1
- data/build_install.sh +1 -1
- data/changelog.md +4 -0
- data/lib/quaderno-ruby/base.rb +21 -17
- 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 +3 -3
- data/test/fixtures/.DS_Store +0 -0
- data/test/fixtures/quaderno_cassettes/all_contacts.yml +15 -27
- data/test/fixtures/quaderno_cassettes/all_estimates.yml +19 -12
- data/test/fixtures/quaderno_cassettes/all_expenses.yml +17 -13
- data/test/fixtures/quaderno_cassettes/all_invoices.yml +18 -91
- data/test/fixtures/quaderno_cassettes/all_items.yml +10 -10
- data/test/fixtures/quaderno_cassettes/all_webhooks.yml +45 -45
- data/test/fixtures/quaderno_cassettes/deleted_contact.yml +49 -72
- data/test/fixtures/quaderno_cassettes/deleted_estimate.yml +54 -62
- data/test/fixtures/quaderno_cassettes/deleted_expense.yml +52 -63
- data/test/fixtures/quaderno_cassettes/deleted_invoice.yml +53 -140
- data/test/fixtures/quaderno_cassettes/deleted_item.yml +28 -28
- data/test/fixtures/quaderno_cassettes/deleted_webhook.yml +54 -54
- data/test/fixtures/quaderno_cassettes/delivered_estimate.yml +33 -26
- data/test/fixtures/quaderno_cassettes/delivered_invoice.yml +38 -113
- data/test/fixtures/quaderno_cassettes/found_contact.yml +26 -36
- data/test/fixtures/quaderno_cassettes/found_estimate.yml +34 -24
- data/test/fixtures/quaderno_cassettes/found_expense.yml +30 -26
- data/test/fixtures/quaderno_cassettes/found_invoice.yml +31 -110
- data/test/fixtures/quaderno_cassettes/found_item.yml +20 -19
- data/test/fixtures/quaderno_cassettes/found_webhook.yml +27 -27
- data/test/fixtures/quaderno_cassettes/new_contact.yml +10 -10
- data/test/fixtures/quaderno_cassettes/new_estimate.yml +35 -50
- data/test/fixtures/quaderno_cassettes/new_expense.yml +52 -63
- data/test/fixtures/quaderno_cassettes/new_invoice.yml +35 -49
- data/test/fixtures/quaderno_cassettes/new_item.yml +10 -10
- data/test/fixtures/quaderno_cassettes/new_webhook.yml +18 -18
- data/test/fixtures/quaderno_cassettes/paid_expense.yml +27 -23
- data/test/fixtures/quaderno_cassettes/paid_invoice.yml +28 -101
- data/test/fixtures/quaderno_cassettes/rate_limit.yml +7 -7
- data/test/fixtures/quaderno_cassettes/unpay_an_expense.yml +36 -32
- data/test/fixtures/quaderno_cassettes/unpay_an_invoice.yml +37 -110
- data/test/fixtures/quaderno_cassettes/updated_contact.yml +27 -37
- data/test/fixtures/quaderno_cassettes/updated_estimate.yml +46 -62
- data/test/fixtures/quaderno_cassettes/updated_expense.yml +45 -61
- data/test/fixtures/quaderno_cassettes/updated_invoice.yml +46 -61
- data/test/fixtures/quaderno_cassettes/updated_item.yml +20 -20
- data/test/fixtures/quaderno_cassettes/updated_webhook.yml +37 -37
- data/test/unit/test_quaderno_contacts.rb +2 -2
- data/test/unit/test_quaderno_estimates.rb +2 -2
- data/test/unit/test_quaderno_expenses.rb +2 -2
- data/test/unit/test_quaderno_invoices.rb +2 -2
- data/test/unit/test_quaderno_items.rb +2 -2
- data/test/unit/test_quaderno_webhooks.rb +2 -2
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
YWU4MDljODQ0MWYwMzk4ZjcwMWVkMDhhYjhjMjM0MDFiZDA1MDcwOA==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
MWEyNGVhOTAzYjcyMzE1YTYyOTFlM2EwZWY2MzljZmM5NWQyNTRjMw==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
YjBhNzg1M2ExOGUwYjZjOTcxYmRlYmZhZTFmYmUxNGQ3YjZkNTcwNjdiZjAy
|
10
|
+
ZWNlNDZjZDUxYjAzZTA5ZTIzNjhiMzI1YjkyMjI0ZjI3ZjdhZWNmZjFjNDk1
|
11
|
+
NDQzNDdkYTUwZGIwNzExYzMzNTZkZjA2NWI3NzUwZDdjMTQ5NDA=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
N2NjODQ0MzdmNzMxZTFiNjI2MzQyZjIyODJkZjQwZTg2ZGQ1ZDM0YzFkODYy
|
14
|
+
Mjc1Nzg3MDdmNDA0OTk2NGM3ZjFmMDk0MDU0NzVkNDI3ODZmZDMwNjc4NmRh
|
15
|
+
ZGMzMDYzZmEyZWMyMmQ4OTY3OWUzMDQxNGVhNjM4ZTJhOWJhYWU=
|
data/README.md
CHANGED
@@ -10,17 +10,17 @@ Current version is 1.3.1. See the changelog [here](https://github.com/recrea/qua
|
|
10
10
|
To install add the following to your Gemfile:
|
11
11
|
|
12
12
|
```ruby
|
13
|
-
|
13
|
+
gem 'quaderno', require: 'quaderno-ruby'
|
14
14
|
```
|
15
15
|
|
16
16
|
To configure just add this to your initializers
|
17
17
|
|
18
18
|
```ruby
|
19
|
-
|
20
|
-
|
21
|
-
|
19
|
+
Quaderno::Base.configure do |config|
|
20
|
+
config.auth_token = 'my_authenticate_token'
|
21
|
+
config.subdomain = 'my_subdomain'
|
22
22
|
config.environment = :production
|
23
|
-
|
23
|
+
end
|
24
24
|
```
|
25
25
|
|
26
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.
|
@@ -31,10 +31,10 @@ You can get your account subdomain by grabbing it from your account url or by ca
|
|
31
31
|
|
32
32
|
```ruby
|
33
33
|
Quaderno::Base.authorization 'my_authenticate_token', environment
|
34
|
-
# => {"identity"=>{"id"=>737000, "name"=>"Walter White", "email"=>"cooking@br.bd", "href"=>"https://quadernoapp.com/
|
34
|
+
# => {"identity"=>{"id"=>737000, "name"=>"Walter White", "email"=>"cooking@br.bd", "href"=>"https://my_subdomain.quadernoapp.com/api/v1/"}}
|
35
35
|
```
|
36
36
|
|
37
|
-
`
|
37
|
+
`environment` is an optional argument. By passing `:sandbox`, you will retrieve your credentials for the sandbox environment and not for production.
|
38
38
|
|
39
39
|
This will return a hash with the information about your api url, which includes the account subdomain.
|
40
40
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.3.
|
1
|
+
1.3.2
|
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.2.gem
|
data/changelog.md
CHANGED
data/lib/quaderno-ruby/base.rb
CHANGED
@@ -7,16 +7,16 @@ module Quaderno
|
|
7
7
|
include Quaderno::Exceptions
|
8
8
|
include Quaderno::Behavior::Crud
|
9
9
|
|
10
|
+
PRODUCTION_URL = 'https://quadernoapp.com'
|
11
|
+
SANDBOX_URL = 'http://sandbox-quadernoapp.com'
|
12
|
+
|
10
13
|
@@auth_token = nil
|
11
|
-
@@subdomain =
|
14
|
+
@@subdomain = 'subdomain'
|
12
15
|
@@rate_limit_info = nil
|
16
|
+
@@base_url = PRODUCTION_URL
|
13
17
|
@@environment = :production
|
14
|
-
@@base_url = 'https://quadernoapp.com'
|
15
|
-
|
16
|
-
def to_hash
|
17
|
-
self.marshal_dump
|
18
|
-
end
|
19
18
|
|
19
|
+
# Class methods
|
20
20
|
def self.api_model(klass)
|
21
21
|
instance_eval <<-END
|
22
22
|
def api_model
|
@@ -30,11 +30,9 @@ module Quaderno
|
|
30
30
|
END
|
31
31
|
end
|
32
32
|
|
33
|
-
#Default way to configure the authenticata data
|
34
33
|
def self.configure
|
35
34
|
yield self
|
36
|
-
|
37
|
-
@@base_url = @@environment == :sandbox ? 'http://sandbox-quadernoapp.com' : 'https://quadernoapp.com'
|
35
|
+
@@base_url = @@environment == :sandbox && !@@subdomain.nil? ? "http://#{@@subdomain}.sandbox-quadernoapp.com" : "https://#{@@subdomain}.quadernoapp.com"
|
38
36
|
end
|
39
37
|
|
40
38
|
def self.environment=(mode)
|
@@ -52,8 +50,8 @@ module Quaderno
|
|
52
50
|
def self.authorization(auth_token, mode = nil)
|
53
51
|
begin
|
54
52
|
mode ||= @@environment
|
55
|
-
base_url = mode == :sandbox ?
|
56
|
-
party_response = get("#{base_url}/
|
53
|
+
base_url = mode == :sandbox ? SANDBOX_URL : PRODUCTION_URL
|
54
|
+
party_response = get("#{base_url}/api/v1/authorization.json", basic_auth: { username: auth_token })
|
57
55
|
return JSON::parse party_response.body
|
58
56
|
rescue Exception
|
59
57
|
return false
|
@@ -63,7 +61,7 @@ module Quaderno
|
|
63
61
|
#Check the connection
|
64
62
|
def self.ping
|
65
63
|
begin
|
66
|
-
party_response = get("#{base_url}
|
64
|
+
party_response = get("#{@@base_url}/api/v1/ping.json", basic_auth: { username: auth_token })
|
67
65
|
rescue Errno::ECONNREFUSED
|
68
66
|
return false
|
69
67
|
end
|
@@ -72,23 +70,29 @@ module Quaderno
|
|
72
70
|
|
73
71
|
#Returns the rate limit information: limit and remaining requests
|
74
72
|
def self.rate_limit_info
|
75
|
-
party_response = get("#{@@base_url}
|
73
|
+
party_response = get("#{@@base_url}/api/v1/ping.json", basic_auth: { username: auth_token })
|
76
74
|
@@rate_limit_info = { limit: party_response.headers["x-ratelimit-limit"].to_i, remaining: party_response.headers["x-ratelimit-remaining"].to_i }
|
77
75
|
end
|
78
76
|
|
77
|
+
|
78
|
+
# Instance methods
|
79
|
+
def to_hash
|
80
|
+
self.marshal_dump
|
81
|
+
end
|
79
82
|
|
80
83
|
private
|
81
|
-
def self.base_url
|
82
|
-
@@base_url
|
83
|
-
end
|
84
|
-
|
85
84
|
def self.auth_token
|
86
85
|
@@auth_token
|
87
86
|
end
|
87
|
+
|
88
|
+
def self.base_url
|
89
|
+
@@base_url
|
90
|
+
end
|
88
91
|
|
89
92
|
def self.subdomain
|
90
93
|
@_subdomain = @@subdomain
|
91
94
|
end
|
95
|
+
|
92
96
|
#Set or returns the model path for the url
|
93
97
|
def self.api_path(api_path = nil)
|
94
98
|
@_api_path ||= api_path
|
@@ -28,7 +28,7 @@ module Quaderno
|
|
28
28
|
end
|
29
29
|
|
30
30
|
def all(filter = nil)
|
31
|
-
party_response = get("#{api_model.base_url}
|
31
|
+
party_response = get("#{api_model.base_url}/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.base_url}
|
45
|
+
party_response = get "#{api_model.base_url}/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.base_url}
|
55
|
+
party_response = post "#{api_model.base_url}/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.base_url}
|
65
|
+
party_response = put "#{api_model.base_url}/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 "#{api_model.base_url}
|
75
|
+
party_response = HTTParty.delete "#{api_model.base_url}/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.base_url}
|
11
|
+
party_response = api_model.get("#{api_model.base_url}/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.base_url}
|
14
|
+
party_response = api_model.post "#{api_model.base_url}/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 "#{api_model.base_url}
|
23
|
+
party_response = HTTParty.delete "#{api_model.base_url}/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.2 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.2"
|
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-07-01"
|
14
14
|
s.description = "longer description of your gem"
|
15
15
|
s.email = "carlos@recrea.es"
|
16
16
|
s.extra_rdoc_files = [
|
data/test/fixtures/.DS_Store
CHANGED
Binary file
|
@@ -2,13 +2,13 @@
|
|
2
2
|
http_interactions:
|
3
3
|
- request:
|
4
4
|
method: get
|
5
|
-
uri: http://
|
5
|
+
uri: http://RsNaLsNr1KZcdrQRKKKk@uruk-1066.sandbox-quadernoapp.com/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 UnNOYUxzTnIxS1pjZHJRUktLS2s6
|
12
12
|
response:
|
13
13
|
status:
|
14
14
|
code: 200
|
@@ -17,7 +17,7 @@ http_interactions:
|
|
17
17
|
server:
|
18
18
|
- nginx/1.4.5
|
19
19
|
date:
|
20
|
-
-
|
20
|
+
- Tue, 01 Jul 2014 09:05:52 GMT
|
21
21
|
content-type:
|
22
22
|
- application/json; charset=utf-8
|
23
23
|
transfer-encoding:
|
@@ -29,43 +29,31 @@ http_interactions:
|
|
29
29
|
x-ratelimit-limit:
|
30
30
|
- '2000'
|
31
31
|
x-ratelimit-remaining:
|
32
|
-
- '
|
32
|
+
- '1992'
|
33
33
|
x-pages-currentpage:
|
34
34
|
- '1'
|
35
35
|
x-pages-totalpages:
|
36
|
-
- '
|
36
|
+
- '1'
|
37
37
|
x-ua-compatible:
|
38
38
|
- IE=Edge,chrome=1
|
39
39
|
etag:
|
40
|
-
- ! '"
|
40
|
+
- ! '"397ea9c20a05a7decf631efe5da3f44f"'
|
41
41
|
cache-control:
|
42
42
|
- must-revalidate, private, max-age=0
|
43
43
|
x-request-id:
|
44
|
-
-
|
44
|
+
- 57504a795970902ab55c10e485edac2f
|
45
45
|
x-runtime:
|
46
|
-
- '0.
|
46
|
+
- '0.092150'
|
47
47
|
x-rack-cache:
|
48
48
|
- miss
|
49
49
|
body:
|
50
50
|
encoding: US-ASCII
|
51
|
-
string: ! '[{"id":
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
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
|
+
string: ! '[{"id":142297,"kind":"company","full_name":"Dummy","contact_name":null,"street_line_1":"","street_line_2":null,"postal_code":"","city":"","region":"","country":"US","phone_1":"","phone_2":null,"fax":null,"email":"","web":null,"discount":null,"tax_id":"","language":"ES","notes":null,"url":"http://uruk-1066.sandbox-quadernoapp.com/api/v1/contacts/142297"},{"id":142302,"kind":"company","full_name":"Pepe
|
52
|
+
Gotera & Otilio","contact_name":null,"street_line_1":"","street_line_2":null,"postal_code":"","city":"","region":"","country":"ES","phone_1":"","phone_2":null,"fax":null,"email":"","web":null,"discount":null,"tax_id":"","bank_account":null,"language":"ES","notes":null,"url":"http://uruk-1066.sandbox-quadernoapp.com/api/v1/contacts/142302"},{"id":142299,"kind":"person","first_name":"Smilin''
|
53
|
+
Stan S.","last_name":"Stanman","full_name":"Smilin'' Stan S. Stanman","street_line_1":"","street_line_2":null,"postal_code":"","city":"","region":"Monkey
|
54
|
+
Island","country":"BS","phone_1":"","phone_2":null,"fax":null,"email":"","web":null,"discount":null,"tax_id":"","language":"ES","notes":null,"url":"http://uruk-1066.sandbox-quadernoapp.com/api/v1/contacts/142299"},{"id":142298,"kind":"company","full_name":"Test","contact_name":null,"street_line_1":"Evergreen
|
55
|
+
Terrace","street_line_2":null,"postal_code":"K0A 1B0","city":"Springfield","region":"","country":"US","phone_1":"3447277","phone_2":null,"fax":null,"email":"","web":null,"discount":null,"tax_id":"","language":"ES","notes":null,"url":"http://uruk-1066.sandbox-quadernoapp.com/api/v1/contacts/142298"},{"id":142303,"kind":"company","full_name":"Test_Skynet","contact_name":null,"street_line_1":null,"street_line_2":null,"postal_code":null,"city":null,"region":null,"country":"US","phone_1":null,"phone_2":null,"fax":null,"email":"my_little@po.ny","web":null,"discount":null,"tax_id":null,"language":"EN","notes":null,"url":"http://uruk-1066.sandbox-quadernoapp.com/api/v1/contacts/142303"},{"id":142301,"kind":"person","first_name":"Vince","last_name":"Offer","full_name":"Vince
|
56
|
+
Offer","street_line_1":"","street_line_2":null,"postal_code":"","city":"","region":"","country":"US","phone_1":"","phone_2":null,"fax":null,"email":"","web":null,"discount":null,"tax_id":"","language":"ES","notes":null,"url":"http://uruk-1066.sandbox-quadernoapp.com/api/v1/contacts/142301"}]'
|
69
57
|
http_version: '1.1'
|
70
|
-
recorded_at:
|
58
|
+
recorded_at: Tue, 01 Jul 2014 09:05:52 GMT
|
71
59
|
recorded_with: VCR 2.9.2
|
@@ -2,13 +2,13 @@
|
|
2
2
|
http_interactions:
|
3
3
|
- request:
|
4
4
|
method: get
|
5
|
-
uri: http://
|
5
|
+
uri: http://RsNaLsNr1KZcdrQRKKKk@uruk-1066.sandbox-quadernoapp.com/api/v1/estimates.json
|
6
6
|
body:
|
7
7
|
encoding: US-ASCII
|
8
8
|
string: ''
|
9
9
|
headers:
|
10
10
|
authorization:
|
11
|
-
- Basic
|
11
|
+
- Basic UnNOYUxzTnIxS1pjZHJRUktLS2s6
|
12
12
|
response:
|
13
13
|
status:
|
14
14
|
code: 200
|
@@ -17,7 +17,7 @@ http_interactions:
|
|
17
17
|
server:
|
18
18
|
- nginx/1.4.5
|
19
19
|
date:
|
20
|
-
-
|
20
|
+
- Tue, 01 Jul 2014 09:06:22 GMT
|
21
21
|
content-type:
|
22
22
|
- application/json; charset=utf-8
|
23
23
|
transfer-encoding:
|
@@ -29,7 +29,7 @@ http_interactions:
|
|
29
29
|
x-ratelimit-limit:
|
30
30
|
- '2000'
|
31
31
|
x-ratelimit-remaining:
|
32
|
-
- '
|
32
|
+
- '1978'
|
33
33
|
x-pages-currentpage:
|
34
34
|
- '1'
|
35
35
|
x-pages-totalpages:
|
@@ -37,21 +37,28 @@ http_interactions:
|
|
37
37
|
x-ua-compatible:
|
38
38
|
- IE=Edge,chrome=1
|
39
39
|
etag:
|
40
|
-
- ! '"
|
40
|
+
- ! '"d33c420455711494333dc878dbb2cf3a"'
|
41
41
|
cache-control:
|
42
42
|
- must-revalidate, private, max-age=0
|
43
43
|
x-request-id:
|
44
|
-
-
|
44
|
+
- da5ba41b8bf4fd6ddb544d649d6ab8ce
|
45
45
|
x-runtime:
|
46
|
-
- '0.
|
46
|
+
- '0.084998'
|
47
47
|
x-rack-cache:
|
48
48
|
- miss
|
49
49
|
body:
|
50
50
|
encoding: US-ASCII
|
51
|
-
string: ! '[{"id":
|
52
|
-
|
53
|
-
|
54
|
-
\u20ac","discount":"0.00 \u20ac","
|
51
|
+
string: ! '[{"id":492372,"number":"0000002","issue_date":"2014-07-01","contact":{"id":142302,"full_name":"Pepe
|
52
|
+
Gotera & Otilio"},"po_number":"","currency":"EUR","items":[{"id":1294890,"description":"Test
|
53
|
+
Item #5","quantity":"1.0","unit_price":"52.0","discount_rate":"0.0","tax_1_name":"","tax_1_rate":null,"tax_2_name":"","tax_2_rate":null,"reference":"","subtotal":"52.00
|
54
|
+
\u20ac","discount":"0.00 \u20ac","gross_amount":"52.00 \u20ac"},{"id":1294891,"description":"Test
|
55
|
+
Item #6","quantity":"1.0","unit_price":"30.0","discount_rate":"0.0","tax_1_name":"","tax_1_rate":null,"tax_2_name":"","tax_2_rate":null,"reference":"","subtotal":"30.00
|
56
|
+
\u20ac","discount":"0.00 \u20ac","gross_amount":"30.00 \u20ac"}],"subtotal":"82.00
|
57
|
+
\u20ac","discount":"0.00 \u20ac","taxes":[],"total":"82.00 \u20ac","payment_details":"","notes":"","state":"draft","tag_list":[],"secure_id":"4cf5cf7de5fa21c0c68737db16aa8d4630d11d19","permalink":"http://uruk-1066.sandbox-quadernoapp.com/estimate/4cf5cf7de5fa21c0c68737db16aa8d4630d11d19","url":"http://uruk-1066.sandbox-quadernoapp.com/api/v1/estimates/492372.json"},{"id":492371,"number":"0000001","issue_date":"2014-07-01","contact":{"id":142302,"full_name":"Pepe
|
58
|
+
Gotera & Otilio"},"po_number":"","currency":"EUR","items":[{"id":1294889,"description":"Test
|
59
|
+
Item #4","quantity":"1.0","unit_price":"3430.0","discount_rate":"0.0","tax_1_name":"","tax_1_rate":null,"tax_2_name":"","tax_2_rate":null,"reference":"","subtotal":"3,430.00
|
60
|
+
\u20ac","discount":"0.00 \u20ac","gross_amount":"3,430.00 \u20ac"}],"subtotal":"3,430.00
|
61
|
+
\u20ac","discount":"0.00 \u20ac","taxes":[],"total":"3,430.00 \u20ac","payment_details":"","notes":"","state":"draft","tag_list":[],"secure_id":"4f635b1811bc6cc20a071fe4f85bf8733c04b451","permalink":"http://uruk-1066.sandbox-quadernoapp.com/estimate/4f635b1811bc6cc20a071fe4f85bf8733c04b451","url":"http://uruk-1066.sandbox-quadernoapp.com/api/v1/estimates/492371.json"}]'
|
55
62
|
http_version: '1.1'
|
56
|
-
recorded_at:
|
63
|
+
recorded_at: Tue, 01 Jul 2014 09:06:22 GMT
|
57
64
|
recorded_with: VCR 2.9.2
|
@@ -2,13 +2,13 @@
|
|
2
2
|
http_interactions:
|
3
3
|
- request:
|
4
4
|
method: get
|
5
|
-
uri: http://
|
5
|
+
uri: http://RsNaLsNr1KZcdrQRKKKk@uruk-1066.sandbox-quadernoapp.com/api/v1/expenses.json
|
6
6
|
body:
|
7
7
|
encoding: US-ASCII
|
8
8
|
string: ''
|
9
9
|
headers:
|
10
10
|
authorization:
|
11
|
-
- Basic
|
11
|
+
- Basic UnNOYUxzTnIxS1pjZHJRUktLS2s6
|
12
12
|
response:
|
13
13
|
status:
|
14
14
|
code: 200
|
@@ -17,7 +17,7 @@ http_interactions:
|
|
17
17
|
server:
|
18
18
|
- nginx/1.4.5
|
19
19
|
date:
|
20
|
-
-
|
20
|
+
- Tue, 01 Jul 2014 09:07:17 GMT
|
21
21
|
content-type:
|
22
22
|
- application/json; charset=utf-8
|
23
23
|
transfer-encoding:
|
@@ -29,7 +29,7 @@ http_interactions:
|
|
29
29
|
x-ratelimit-limit:
|
30
30
|
- '2000'
|
31
31
|
x-ratelimit-remaining:
|
32
|
-
- '
|
32
|
+
- '1961'
|
33
33
|
x-pages-currentpage:
|
34
34
|
- '1'
|
35
35
|
x-pages-totalpages:
|
@@ -37,22 +37,26 @@ http_interactions:
|
|
37
37
|
x-ua-compatible:
|
38
38
|
- IE=Edge,chrome=1
|
39
39
|
etag:
|
40
|
-
- ! '"
|
40
|
+
- ! '"3e3f97d65226a933e567d56c0eec4407"'
|
41
41
|
cache-control:
|
42
42
|
- must-revalidate, private, max-age=0
|
43
43
|
x-request-id:
|
44
|
-
-
|
44
|
+
- d82a1a1f7354aad334ebf4c7c194dba3
|
45
45
|
x-runtime:
|
46
|
-
- '0.
|
46
|
+
- '0.155546'
|
47
47
|
x-rack-cache:
|
48
48
|
- miss
|
49
49
|
body:
|
50
50
|
encoding: US-ASCII
|
51
|
-
string: ! '[{"id":
|
52
|
-
|
53
|
-
\u20ac","discount":"0.00 \u20ac","gross_amount":"
|
54
|
-
\u20ac","discount":"0.00 \u20ac","taxes":[],"total":"
|
55
|
-
\u20ac","url":"http://
|
51
|
+
string: ! '[{"id":492370,"number":null,"issue_date":"2014-07-01","contact":{"id":142301,"full_name":"Vince
|
52
|
+
Offer"},"po_number":"","currency":"EUR","items":[{"id":1294888,"description":"ShamWow","quantity":"100.0","unit_price":"9.99","discount_rate":"0.0","tax_1_name":"","tax_1_rate":null,"tax_2_name":"","tax_2_rate":null,"reference":"","subtotal":"999.00
|
53
|
+
\u20ac","discount":"0.00 \u20ac","gross_amount":"999.00 \u20ac"}],"subtotal":"999.00
|
54
|
+
\u20ac","discount":"0.00 \u20ac","taxes":[],"total":"999.00 \u20ac","payments":[{"id":328807,"date":"2014-07-01","payment_method":"cash","amount":"10,000.00
|
55
|
+
\u20ac","url":"http://uruk-1066.sandbox-quadernoapp.com/api/v1/expenses/492370/payments/328807.json"}],"notes":"","state":"paid","tag_list":[],"url":"http://uruk-1066.sandbox-quadernoapp.com/api/v1/expenses/492370.json"},{"id":492368,"number":null,"issue_date":"2014-07-01","contact":{"id":142299,"full_name":"Test_OCP
|
56
|
+
Stanman"},"po_number":"","currency":"EUR","items":[{"id":1294884,"description":"The
|
57
|
+
Cadillac of Coffins''","quantity":"1.0","unit_price":"100000.0","discount_rate":"0.0","tax_1_name":"","tax_1_rate":null,"tax_2_name":"","tax_2_rate":null,"reference":"","subtotal":"100,000.00
|
58
|
+
\u20ac","discount":"0.00 \u20ac","gross_amount":"100,000.00 \u20ac"}],"subtotal":"100,000.00
|
59
|
+
\u20ac","discount":"0.00 \u20ac","taxes":[],"total":"100,000.00 \u20ac","payments":[],"notes":"","state":"outstanding","tag_list":[],"url":"http://uruk-1066.sandbox-quadernoapp.com/api/v1/expenses/492368.json"}]'
|
56
60
|
http_version: '1.1'
|
57
|
-
recorded_at:
|
61
|
+
recorded_at: Tue, 01 Jul 2014 09:07:17 GMT
|
58
62
|
recorded_with: VCR 2.9.2
|