quaderno 1.3.1 → 1.3.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (55) hide show
  1. checksums.yaml +8 -8
  2. data/README.md +7 -7
  3. data/VERSION +1 -1
  4. data/build_install.sh +1 -1
  5. data/changelog.md +4 -0
  6. data/lib/quaderno-ruby/base.rb +21 -17
  7. data/lib/quaderno-ruby/behavior/crud.rb +5 -5
  8. data/lib/quaderno-ruby/behavior/deliver.rb +1 -1
  9. data/lib/quaderno-ruby/behavior/payment.rb +2 -2
  10. data/quaderno.gemspec +3 -3
  11. data/test/fixtures/.DS_Store +0 -0
  12. data/test/fixtures/quaderno_cassettes/all_contacts.yml +15 -27
  13. data/test/fixtures/quaderno_cassettes/all_estimates.yml +19 -12
  14. data/test/fixtures/quaderno_cassettes/all_expenses.yml +17 -13
  15. data/test/fixtures/quaderno_cassettes/all_invoices.yml +18 -91
  16. data/test/fixtures/quaderno_cassettes/all_items.yml +10 -10
  17. data/test/fixtures/quaderno_cassettes/all_webhooks.yml +45 -45
  18. data/test/fixtures/quaderno_cassettes/deleted_contact.yml +49 -72
  19. data/test/fixtures/quaderno_cassettes/deleted_estimate.yml +54 -62
  20. data/test/fixtures/quaderno_cassettes/deleted_expense.yml +52 -63
  21. data/test/fixtures/quaderno_cassettes/deleted_invoice.yml +53 -140
  22. data/test/fixtures/quaderno_cassettes/deleted_item.yml +28 -28
  23. data/test/fixtures/quaderno_cassettes/deleted_webhook.yml +54 -54
  24. data/test/fixtures/quaderno_cassettes/delivered_estimate.yml +33 -26
  25. data/test/fixtures/quaderno_cassettes/delivered_invoice.yml +38 -113
  26. data/test/fixtures/quaderno_cassettes/found_contact.yml +26 -36
  27. data/test/fixtures/quaderno_cassettes/found_estimate.yml +34 -24
  28. data/test/fixtures/quaderno_cassettes/found_expense.yml +30 -26
  29. data/test/fixtures/quaderno_cassettes/found_invoice.yml +31 -110
  30. data/test/fixtures/quaderno_cassettes/found_item.yml +20 -19
  31. data/test/fixtures/quaderno_cassettes/found_webhook.yml +27 -27
  32. data/test/fixtures/quaderno_cassettes/new_contact.yml +10 -10
  33. data/test/fixtures/quaderno_cassettes/new_estimate.yml +35 -50
  34. data/test/fixtures/quaderno_cassettes/new_expense.yml +52 -63
  35. data/test/fixtures/quaderno_cassettes/new_invoice.yml +35 -49
  36. data/test/fixtures/quaderno_cassettes/new_item.yml +10 -10
  37. data/test/fixtures/quaderno_cassettes/new_webhook.yml +18 -18
  38. data/test/fixtures/quaderno_cassettes/paid_expense.yml +27 -23
  39. data/test/fixtures/quaderno_cassettes/paid_invoice.yml +28 -101
  40. data/test/fixtures/quaderno_cassettes/rate_limit.yml +7 -7
  41. data/test/fixtures/quaderno_cassettes/unpay_an_expense.yml +36 -32
  42. data/test/fixtures/quaderno_cassettes/unpay_an_invoice.yml +37 -110
  43. data/test/fixtures/quaderno_cassettes/updated_contact.yml +27 -37
  44. data/test/fixtures/quaderno_cassettes/updated_estimate.yml +46 -62
  45. data/test/fixtures/quaderno_cassettes/updated_expense.yml +45 -61
  46. data/test/fixtures/quaderno_cassettes/updated_invoice.yml +46 -61
  47. data/test/fixtures/quaderno_cassettes/updated_item.yml +20 -20
  48. data/test/fixtures/quaderno_cassettes/updated_webhook.yml +37 -37
  49. data/test/unit/test_quaderno_contacts.rb +2 -2
  50. data/test/unit/test_quaderno_estimates.rb +2 -2
  51. data/test/unit/test_quaderno_expenses.rb +2 -2
  52. data/test/unit/test_quaderno_invoices.rb +2 -2
  53. data/test/unit/test_quaderno_items.rb +2 -2
  54. data/test/unit/test_quaderno_webhooks.rb +2 -2
  55. metadata +2 -2
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- MzA3ZDIzYmY5YjRhOTJmMGE3M2QzNWM2ZmM4ODgxN2M3ODA0NTk5Zg==
4
+ YWU4MDljODQ0MWYwMzk4ZjcwMWVkMDhhYjhjMjM0MDFiZDA1MDcwOA==
5
5
  data.tar.gz: !binary |-
6
- Nzg1ZjkyM2M3ODUxM2IyZmVhMDBiZDU3ZTExZDVhYzA4MDc3Y2E2YQ==
6
+ MWEyNGVhOTAzYjcyMzE1YTYyOTFlM2EwZWY2MzljZmM5NWQyNTRjMw==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- Y2NiZWY3YjE2NThhYTViYjQzOTFjZTcwMTBhYzVmZjEwZTRhZTE0NWU5OTI4
10
- ZWVlZTc1Mjk4YWI2NGMyYmFhZTIwNDcwMGQyMzFmMGRiNDMzMmQxYTg4NTM2
11
- NDJlM2M0ZTg1ODFhZDhmZWI3M2IwZjg2Y2M5MmQyYWQzMzZmMDU=
9
+ YjBhNzg1M2ExOGUwYjZjOTcxYmRlYmZhZTFmYmUxNGQ3YjZkNTcwNjdiZjAy
10
+ ZWNlNDZjZDUxYjAzZTA5ZTIzNjhiMzI1YjkyMjI0ZjI3ZjdhZWNmZjFjNDk1
11
+ NDQzNDdkYTUwZGIwNzExYzMzNTZkZjA2NWI3NzUwZDdjMTQ5NDA=
12
12
  data.tar.gz: !binary |-
13
- MzA0Nzc5ODM0NDIzNTllYjU5YmIyNDlhNzY1YTk2OGZiNDI3MzE3NDhhODIw
14
- NjYxZTkxYzA0NTZhMWYxZjFhOTUwMmYyYzZiNDUyN2U3MTAwNzBmZDc3NzY4
15
- YzllYTU4NjgxMTJhNzdlMDMyOWFjNGUyNzAxNTQ5MTQ2NDc2MDg=
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
- gem 'quaderno', require: 'quaderno-ruby'
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
- Quaderno::Base.configure do |config|
20
- config.auth_token = 'my_authenticate_token'
21
- config.subdomain = 'my_account_subdomain'
19
+ Quaderno::Base.configure do |config|
20
+ config.auth_token = 'my_authenticate_token'
21
+ config.subdomain = 'my_subdomain'
22
22
  config.environment = :production
23
- end
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/my_account_subdomain/api/v1/"}}
34
+ # => {"identity"=>{"id"=>737000, "name"=>"Walter White", "email"=>"cooking@br.bd", "href"=>"https://my_subdomain.quadernoapp.com/api/v1/"}}
35
35
  ```
36
36
 
37
- `envirnment` is an optional argument. By passing `:sandbox`, you will retrieve your credentials for the sandbox environment and not for production.
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
+ 1.3.2
data/build_install.sh CHANGED
@@ -1,2 +1,2 @@
1
1
  gem build quaderno.gemspec
2
- gem install quaderno-1.3.1.gem
2
+ gem install quaderno-1.3.2.gem
data/changelog.md CHANGED
@@ -1,4 +1,8 @@
1
1
  #Changelog
2
+ ##1.3.2
3
+
4
+ * Use new urls format
5
+
2
6
  ##1.3.1
3
7
 
4
8
  * Added sandbox environment
@@ -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 = nil
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 ? 'http://sandbox-quadernoapp.com' : 'https://quadernoapp.com'
56
- party_response = get("#{base_url}/subdomain/api/v1/authorization.json", basic_auth: { username: auth_token })
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}/#{ subdomain }/api/v1/ping.json", basic_auth: { username: auth_token })
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}/#{ subdomain }/api/v1/ping.json", basic_auth: { username: auth_token })
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}/#{ 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/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}/#{ 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/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}/#{ 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/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}/#{ 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/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}/#{ api_model.subdomain }/api/v1/#{ api_model.api_path }/#{ id }.json", basic_auth: { username: api_model.auth_token }
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}/#{ 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/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}/#{ 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/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}/#{ api_model.subdomain }/api/v1/#{ api_model.api_path }/#{ id }/payments/#{ payment_id }.json", basic_auth: { username: api_model.auth_token }
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.1 ruby lib
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.1"
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-06-13"
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 = [
Binary file
@@ -2,13 +2,13 @@
2
2
  http_interactions:
3
3
  - request:
4
4
  method: get
5
- uri: http://kAppsMggGcw8psUwdZBV@sandbox-quadernoapp.com/ninive-688/api/v1/contacts.json
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 a0FwcHNNZ2dHY3c4cHNVd2RaQlY6
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
- - Fri, 13 Jun 2014 12:33:05 GMT
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
- - '1506'
32
+ - '1992'
33
33
  x-pages-currentpage:
34
34
  - '1'
35
35
  x-pages-totalpages:
36
- - '6'
36
+ - '1'
37
37
  x-ua-compatible:
38
38
  - IE=Edge,chrome=1
39
39
  etag:
40
- - ! '"78987cdc82808337e2e0baa06f1a206c"'
40
+ - ! '"397ea9c20a05a7decf631efe5da3f44f"'
41
41
  cache-control:
42
42
  - must-revalidate, private, max-age=0
43
43
  x-request-id:
44
- - 39dab9a17986be2f75473a773948360f
44
+ - 57504a795970902ab55c10e485edac2f
45
45
  x-runtime:
46
- - '0.142266'
46
+ - '0.092150'
47
47
  x-rack-cache:
48
48
  - miss
49
49
  body:
50
50
  encoding: US-ASCII
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
+ 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: Fri, 13 Jun 2014 12:33:05 GMT
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://kAppsMggGcw8psUwdZBV@sandbox-quadernoapp.com/ninive-688/api/v1/estimates.json
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 a0FwcHNNZ2dHY3c4cHNVd2RaQlY6
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
- - Fri, 13 Jun 2014 12:37:55 GMT
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
- - '1456'
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
- - ! '"5d184cc5cf5eeab4c09eef2efe84c3cf"'
40
+ - ! '"d33c420455711494333dc878dbb2cf3a"'
41
41
  cache-control:
42
42
  - must-revalidate, private, max-age=0
43
43
  x-request-id:
44
- - 08f32eff100d143009988b07ad4c245d
44
+ - da5ba41b8bf4fd6ddb544d649d6ab8ce
45
45
  x-runtime:
46
- - '0.082863'
46
+ - '0.084998'
47
47
  x-rack-cache:
48
48
  - miss
49
49
  body:
50
50
  encoding: US-ASCII
51
- string: ! '[{"id":539,"number":"0000001","issue_date":"2014-06-13","contact":{"id":790,"full_name":"Test
52
- Contact"},"po_number":"","currency":"EUR","items":[{"id":693,"description":"Something","quantity":"1.0","unit_price":"0.0","discount_rate":"0.0","tax_1_name":"","tax_1_rate":null,"tax_2_name":"","tax_2_rate":null,"reference":"","subtotal":"0.00
53
- \u20ac","discount":"0.00 \u20ac","gross_amount":"0.00 \u20ac"}],"subtotal":"0.00
54
- \u20ac","discount":"0.00 \u20ac","taxes":[],"total":"0.00 \u20ac","payment_details":"","notes":"","state":"draft","tag_list":[],"secure_id":"8d2bccffae34fb6fa7bd943f7642956de77ce693","permalink":"http://ninive-688.sandbox-quadernoapp.com/estimate/8d2bccffae34fb6fa7bd943f7642956de77ce693","url":"http://ninive-688.sandbox-quadernoapp.com/api/v1/estimates/539.json"}]'
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: Fri, 13 Jun 2014 12:37:55 GMT
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://kAppsMggGcw8psUwdZBV@sandbox-quadernoapp.com/ninive-688/api/v1/expenses.json
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 a0FwcHNNZ2dHY3c4cHNVd2RaQlY6
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
- - Fri, 13 Jun 2014 12:41:50 GMT
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
- - '1439'
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
- - ! '"f8c16df3cad07eca53aa3d6a08d8657b"'
40
+ - ! '"3e3f97d65226a933e567d56c0eec4407"'
41
41
  cache-control:
42
42
  - must-revalidate, private, max-age=0
43
43
  x-request-id:
44
- - 018ad080bcece775cac2912892127b06
44
+ - d82a1a1f7354aad334ebf4c7c194dba3
45
45
  x-runtime:
46
- - '0.169892'
46
+ - '0.155546'
47
47
  x-rack-cache:
48
48
  - miss
49
49
  body:
50
50
  encoding: US-ASCII
51
- string: ! '[{"id":543,"number":null,"issue_date":"2014-06-13","contact":{"id":790,"full_name":"Test
52
- Contact"},"po_number":"","currency":"EUR","items":[{"id":697,"description":"Hello","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
53
- \u20ac","discount":"0.00 \u20ac","gross_amount":"30.00 \u20ac"}],"subtotal":"30.00
54
- \u20ac","discount":"0.00 \u20ac","taxes":[],"total":"30.00 \u20ac","payments":[{"id":373,"date":"2014-06-13","payment_method":"cash","amount":"10,000.00
55
- \u20ac","url":"http://ninive-688.sandbox-quadernoapp.com/api/v1/expenses/543/payments/373.json"}],"notes":"","state":"paid","tag_list":[],"url":"http://ninive-688.sandbox-quadernoapp.com/api/v1/expenses/543.json"}]'
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: Fri, 13 Jun 2014 12:41:50 GMT
61
+ recorded_at: Tue, 01 Jul 2014 09:07:17 GMT
58
62
  recorded_with: VCR 2.9.2