caren-api 0.5.13 → 0.5.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.5.13
1
+ 0.5.14
data/caren-api.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "caren-api"
8
- s.version = "0.5.13"
8
+ s.version = "0.5.14"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Andre Foeken"]
12
- s.date = "2012-04-10"
12
+ s.date = "2012-04-11"
13
13
  s.description = "You can use this gem as inspiration of the base of your connections with Caren."
14
14
  s.email = "andre.foeken@nedap.com"
15
15
  s.extra_rdoc_files = [
data/lib/caren/caren.rb CHANGED
@@ -10,10 +10,11 @@ module Caren
10
10
 
11
11
  class ServerSideError < Caren::Exceptions::StandardError
12
12
 
13
- attr_accessor :errors
13
+ attr_accessor :errors, :http_code
14
14
 
15
- def initialize errors=[]
15
+ def initialize errors=[], http_code=nil
16
16
  self.errors = errors
17
+ self.http_code = http_code
17
18
  end
18
19
 
19
20
  end
@@ -67,7 +68,7 @@ module Caren
67
68
  :user_agent => user_agent
68
69
  return check_signature(response)
69
70
  rescue RestClient::Exception => e
70
- handle_error(e.response)
71
+ handle_error(e.response,e.http_code)
71
72
  end
72
73
  end
73
74
 
@@ -81,7 +82,7 @@ module Caren
81
82
  :user_agent => user_agent
82
83
  return check_signature(response)
83
84
  rescue RestClient::Exception => e
84
- handle_error(e.response)
85
+ handle_error(e.response,e.http_code)
85
86
  end
86
87
  end
87
88
 
@@ -95,7 +96,7 @@ module Caren
95
96
  :user_agent => user_agent
96
97
  return check_signature(response)
97
98
  rescue RestClient::Exception => e
98
- handle_error(e.response)
99
+ handle_error(e.response,e.http_code)
99
100
  end
100
101
  end
101
102
 
@@ -109,7 +110,7 @@ module Caren
109
110
  :user_agent => user_agent
110
111
  return check_signature(response)
111
112
  rescue RestClient::Exception => e
112
- handle_error(e.response)
113
+ handle_error(e.response,e.http_code)
113
114
  end
114
115
  end
115
116
 
@@ -204,7 +205,7 @@ module Caren
204
205
  private
205
206
 
206
207
  # Raise a Caren exception on errors
207
- def handle_error response
208
+ def handle_error response, http_code
208
209
  errors = []
209
210
  doc = REXML::Document.new(response)
210
211
  doc.elements.each('errors/error') do |error|
@@ -212,10 +213,23 @@ module Caren
212
213
  attrs = { :on => error.attributes["on"].to_s.underscore.to_sym }
213
214
  errors << Caren::ValidationError.new( error.attributes["category"], error.text.strip, attrs )
214
215
  else
215
- errors << Caren::Error.new( error.attributes["category"], error.text.strip )
216
+ case http_code
217
+ when 400
218
+ errors << Caren::BadRequestError.new( error.attributes["category"], error.text.strip )
219
+ when 401
220
+ errors << Caren::UnauthorizedError.new( error.attributes["category"], error.text.strip )
221
+ when 404
222
+ errors << Caren::NotFoundError.new( error.attributes["category"], error.text.strip )
223
+ when 405
224
+ errors << Caren::MethodNotAllowedError.new( error.attributes["category"], error.text.strip )
225
+ when 406
226
+ errors << Caren::NotAcceptableError.new( error.attributes["category"], error.text.strip )
227
+ else
228
+ errors << Caren::Error.new( error.attributes["category"], error.text.strip )
229
+ end
216
230
  end
217
231
  end
218
- raise Caren::Exceptions::ServerSideError.new(errors)
232
+ raise Caren::Exceptions::ServerSideError.new(errors,http_code)
219
233
  end
220
234
 
221
235
  end
data/lib/caren/error.rb CHANGED
@@ -11,7 +11,22 @@ class Caren::Error
11
11
 
12
12
  end
13
13
 
14
- class Caren::ValidationError < Caren::Error
14
+ class Caren::UnauthorizedError < Caren::Error
15
+ end
16
+
17
+ class Caren::NotFoundError < Caren::Error
18
+ end
19
+
20
+ class Caren::BadRequestError < Caren::Error
21
+ end
22
+
23
+ class Caren::NotAcceptableError < Caren::Error
24
+ end
25
+
26
+ class Caren::MethodNotAllowedError < Caren::Error
27
+ end
28
+
29
+ class Caren::ValidationError < Caren::NotAcceptableError
15
30
 
16
31
  def field
17
32
  attributes[:on]
@@ -46,7 +46,6 @@ describe "Store::Invoice", "REST methods" do
46
46
  invoices_search = File.read("spec/fixtures/caren_invoices_search.xml")
47
47
 
48
48
  invoice_url = Caren::Api.session.url_for( Caren::Store::Invoice.resource_url(17) )
49
- invoice_email_url = Caren::Api.session.url_for( "#{Caren::Store::Invoice.resource_url(17)}/email" )
50
49
  invoices_url = Caren::Api.session.url_for( Caren::Store::Invoice.resource_url )
51
50
  invoices_search_url = Caren::Api.session.url_for( "#{Caren::Store::Invoice.resource_url}?key=reference&value=NW-05463-12-0" )
52
51
  timestamp = DateTime.now.to_i
@@ -55,7 +54,6 @@ describe "Store::Invoice", "REST methods" do
55
54
  FakeWeb.register_uri(:get, invoices_search_url, :body => invoices_search, :signature => Caren::Api.session.sign(timestamp,nil,invoices_search), :timestamp => timestamp )
56
55
  FakeWeb.register_uri(:get, invoice_url, :body => invoice, :signature => Caren::Api.session.sign(timestamp,nil,invoice), :timestamp => timestamp )
57
56
 
58
- FakeWeb.register_uri(:post, invoice_email_url, :status => 201, :signature => Caren::Api.session.sign(timestamp), :timestamp => timestamp )
59
57
  FakeWeb.register_uri(:post, invoices_url, :status => 201, :signature => Caren::Api.session.sign(timestamp), :timestamp => timestamp )
60
58
  FakeWeb.register_uri(:put, invoice_url, :body => invoice, :signature => Caren::Api.session.sign(timestamp,nil,invoice), :timestamp => timestamp )
61
59
  FakeWeb.register_uri(:delete, invoice_url, :signature => Caren::Api.session.sign(timestamp), :timestamp => timestamp )
@@ -85,10 +83,6 @@ describe "Store::Invoice", "REST methods" do
85
83
  it "should be able to update an invoice" do
86
84
  lambda{ Caren::Store::Invoice.new( :id => 17, :reference => "JL-1" ).update(Caren::Api.session) }.should_not raise_error
87
85
  end
88
-
89
- it "should be able to email an invoice" do
90
- lambda{ Caren::Store::Invoice.new( :id => 17 ).email(Caren::Api.session) }.should_not raise_error
91
- end
92
86
 
93
87
  it "should be able to delete an external invoice" do
94
88
  lambda{ Caren::Store::Invoice.new( :id => 17 ).delete(Caren::Api.session) }.should_not raise_error
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: caren-api
3
3
  version: !ruby/object:Gem::Version
4
- hash: 17
4
+ hash: 23
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 5
9
- - 13
10
- version: 0.5.13
9
+ - 14
10
+ version: 0.5.14
11
11
  platform: ruby
12
12
  authors:
13
13
  - Andre Foeken
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2012-04-10 00:00:00 Z
18
+ date: 2012-04-11 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  requirement: &id001 !ruby/object:Gem::Requirement