caren-api 0.4.19 → 0.4.20

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.4.19
1
+ 0.4.20
data/caren-api.gemspec CHANGED
@@ -4,14 +4,14 @@
4
4
  # -*- encoding: utf-8 -*-
5
5
 
6
6
  Gem::Specification.new do |s|
7
- s.name = %q{caren-api}
8
- s.version = "0.4.19"
7
+ s.name = "caren-api"
8
+ s.version = "0.4.20"
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 = %q{2011-11-18}
13
- s.description = %q{You can use this gem as inspiration of the base of your connections with Caren.}
14
- s.email = %q{andre.foeken@nedap.com}
12
+ s.date = "2012-01-23"
13
+ s.description = "You can use this gem as inspiration of the base of your connections with Caren."
14
+ s.email = "andre.foeken@nedap.com"
15
15
  s.extra_rdoc_files = [
16
16
  "LICENSE.txt",
17
17
  "README.rdoc"
@@ -71,17 +71,16 @@ Gem::Specification.new do |s|
71
71
  "spec/spec.opts",
72
72
  "spec/spec_helper.rb"
73
73
  ]
74
- s.homepage = %q{http://github.com/foeken/caren-api}
74
+ s.homepage = "http://github.com/foeken/caren-api"
75
75
  s.licenses = ["MIT"]
76
76
  s.require_paths = ["lib"]
77
- s.rubygems_version = %q{1.3.6}
78
- s.summary = %q{Reference implementation of Caren CareProvider API}
77
+ s.rubygems_version = "1.8.15"
78
+ s.summary = "Reference implementation of Caren CareProvider API"
79
79
 
80
80
  if s.respond_to? :specification_version then
81
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
82
81
  s.specification_version = 3
83
82
 
84
- if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
83
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
85
84
  s.add_runtime_dependency(%q<i18n>, [">= 0"])
86
85
  s.add_runtime_dependency(%q<activesupport>, [">= 0"])
87
86
  s.add_runtime_dependency(%q<builder>, [">= 0"])
data/lib/caren/base.rb CHANGED
@@ -42,6 +42,7 @@ class Caren::Base
42
42
 
43
43
  # Convert a XML string to a single object or an array of objects
44
44
  def self.from_xml xml
45
+ return nil if xml == ''
45
46
  hash = xml.is_a?(Hash) ? xml : Hash.from_xml(xml)
46
47
  raise Caren::Exceptions::InvalidXmlResponse unless hash
47
48
  if hash.has_key?(self.array_root.to_s)
data/lib/caren/caren.rb CHANGED
@@ -166,8 +166,8 @@ module Caren
166
166
 
167
167
  # Sign your string and timestamp using private key
168
168
  # Timestamp is UNIX timestamp seconds since 1970
169
- def sign timestamp, path, string=nil, private_key=self.private_key
170
- path = URI.parse(path).path
169
+ def sign timestamp, path=nil, string=nil, private_key=self.private_key
170
+ path = URI.parse(path).path if path
171
171
  encrypted_digest = private_key.sign( "sha1", path.to_s + string.to_s + timestamp.to_s )
172
172
  signature = CGI.escape(Base64.encode64(encrypted_digest))
173
173
  return signature
@@ -175,15 +175,15 @@ module Caren
175
175
 
176
176
  # Check the signature of the response from rest-client
177
177
  def check_signature response
178
- return response if self.verify_signature( response.headers[:signature], response.headers[:timestamp], response )
178
+ return response if self.verify_signature( response.headers[:signature], response.headers[:timestamp], nil, response )
179
179
  raise Caren::Exceptions::SignatureMismatch.new
180
180
  end
181
181
 
182
182
  # Verify the signature using the caren public key
183
- def verify_signature signature, timestamp, string=nil, public_key=self.caren_public_key
183
+ def verify_signature signature, timestamp, path, string=nil, public_key=self.caren_public_key
184
184
  return false unless public_key
185
185
  signature = Base64.decode64(CGI.unescape(signature.to_s))
186
- public_key.verify( "sha1", signature, string.to_s + timestamp.to_s )
186
+ public_key.verify( "sha1", signature, path.to_s + string.to_s + timestamp.to_s )
187
187
  end
188
188
 
189
189
  def create_photo_signature url_shortcut, external_or_caren_id, private_key=self.private_key
data/lib/caren-api.rb CHANGED
@@ -4,8 +4,8 @@ rescue LoadError
4
4
  end
5
5
 
6
6
  require "active_support"
7
- require "active_support/secure_random"
8
7
  require "active_support/core_ext"
8
+ require "active_support/secure_random" rescue
9
9
  require "builder"
10
10
  require "rest_client"
11
11
  require "rexml/document"
@@ -81,9 +81,9 @@ describe "CareProvider", "REST methods" do
81
81
  timestamp = DateTime.now.to_i
82
82
 
83
83
  FakeWeb.register_uri(:put, care_provider_url, :timestamp => timestamp, :signature => Caren::Api.session.sign(timestamp) )
84
- FakeWeb.register_uri(:get, care_provider_url, :body => care_provider, :timestamp => timestamp, :signature => Caren::Api.session.sign(timestamp,care_provider) )
85
- FakeWeb.register_uri(:get, care_providers_url, :body => care_providers, :timestamp => timestamp, :signature => Caren::Api.session.sign(timestamp,care_providers) )
86
- FakeWeb.register_uri(:get, search_url, :body => care_providers_search, :timestamp => timestamp, :signature => Caren::Api.session.sign(timestamp,care_providers_search) )
84
+ FakeWeb.register_uri(:get, care_provider_url, :body => care_provider, :timestamp => timestamp, :signature => Caren::Api.session.sign(timestamp,nil,care_provider) )
85
+ FakeWeb.register_uri(:get, care_providers_url, :body => care_providers, :timestamp => timestamp, :signature => Caren::Api.session.sign(timestamp,nil,care_providers) )
86
+ FakeWeb.register_uri(:get, search_url, :body => care_providers_search, :timestamp => timestamp, :signature => Caren::Api.session.sign(timestamp,nil,care_providers_search) )
87
87
  end
88
88
 
89
89
  it "should be able to update a care provider" do
data/spec/caren_spec.rb CHANGED
@@ -74,7 +74,7 @@ describe "Caren", "signature checks" do
74
74
  it "should be able to handle incoming xml from caren" do
75
75
  incoming = File.read "spec/fixtures/incoming.xml"
76
76
  timestamp = DateTime.now.to_i
77
- results = Caren::Api.session.incoming(incoming, Caren::Api.session.sign(timestamp, incoming), timestamp )
77
+ results = Caren::Api.session.incoming(incoming, Caren::Api.session.sign(timestamp, nil, incoming), timestamp )
78
78
  results.should have(4).things
79
79
  external_messages = results.select{ |x| x.is_a?(Caren::ExternalMessage) }
80
80
  external_messages.first.id.should == 1
@@ -36,8 +36,8 @@ describe "ExternalMessage", "REST methods" do
36
36
  message_url = Caren::Api.session.url_for( Caren::ExternalMessage.resource_url(1,1) )
37
37
  timestamp = DateTime.now.to_i
38
38
 
39
- FakeWeb.register_uri(:get, messages_url, :body => messages, :signature => Caren::Api.session.sign(timestamp,messages), :timestamp => timestamp )
40
- FakeWeb.register_uri(:get, message_url, :body => message, :signature => Caren::Api.session.sign(timestamp,message), :timestamp => timestamp )
39
+ FakeWeb.register_uri(:get, messages_url, :body => messages, :signature => Caren::Api.session.sign(timestamp,nil,messages), :timestamp => timestamp )
40
+ FakeWeb.register_uri(:get, message_url, :body => message, :signature => Caren::Api.session.sign(timestamp,nil,message), :timestamp => timestamp )
41
41
  FakeWeb.register_uri(:post, messages_url, :status => 201, :signature => Caren::Api.session.sign(timestamp), :timestamp => timestamp )
42
42
  FakeWeb.register_uri(:delete, message_url, :signature => Caren::Api.session.sign(timestamp), :timestamp => timestamp )
43
43
  end
data/spec/link_spec.rb CHANGED
@@ -30,9 +30,9 @@ describe "Link", "REST methods" do
30
30
 
31
31
  timestamp = DateTime.now.to_i
32
32
 
33
- FakeWeb.register_uri(:get, link_url, :body => link, :timestamp => timestamp, :signature => Caren::Api.session.sign(timestamp,link) )
34
- FakeWeb.register_uri(:get, links_url, :body => links, :timestamp => timestamp, :signature => Caren::Api.session.sign(timestamp,links) )
35
- FakeWeb.register_uri(:get, search_url, :body => search, :timestamp => timestamp, :signature => Caren::Api.session.sign(timestamp,search) )
33
+ FakeWeb.register_uri(:get, link_url, :body => link, :timestamp => timestamp, :signature => Caren::Api.session.sign(timestamp,nil,link) )
34
+ FakeWeb.register_uri(:get, links_url, :body => links, :timestamp => timestamp, :signature => Caren::Api.session.sign(timestamp,nil,links) )
35
+ FakeWeb.register_uri(:get, search_url, :body => search, :timestamp => timestamp, :signature => Caren::Api.session.sign(timestamp,nil,search) )
36
36
  FakeWeb.register_uri(:post, links_url, :status => 201, :timestamp => timestamp, :signature => Caren::Api.session.sign(timestamp) )
37
37
  end
38
38
 
@@ -30,9 +30,9 @@ describe "ProductCategory", "REST methods" do
30
30
 
31
31
  timestamp = DateTime.now.to_i
32
32
 
33
- FakeWeb.register_uri(:get, product_categories_url, :body => product_categories, :timestamp => timestamp, :signature => Caren::Api.session.sign(timestamp,product_categories) )
34
- FakeWeb.register_uri(:get, product_category_url, :body => product_category, :timestamp => timestamp, :signature => Caren::Api.session.sign(timestamp,product_category) )
35
- FakeWeb.register_uri(:get, search_url, :body => product_categories_search, :timestamp => timestamp, :signature => Caren::Api.session.sign(timestamp,product_categories_search) )
33
+ FakeWeb.register_uri(:get, product_categories_url, :body => product_categories, :timestamp => timestamp, :signature => Caren::Api.session.sign(timestamp,nil,product_categories) )
34
+ FakeWeb.register_uri(:get, product_category_url, :body => product_category, :timestamp => timestamp, :signature => Caren::Api.session.sign(timestamp,nil,product_category) )
35
+ FakeWeb.register_uri(:get, search_url, :body => product_categories_search, :timestamp => timestamp, :signature => Caren::Api.session.sign(timestamp,nil,product_categories_search) )
36
36
  end
37
37
 
38
38
  it "should be able to search for a specific product category" do
data/spec/product_spec.rb CHANGED
@@ -29,12 +29,12 @@ describe "Product", "REST methods" do
29
29
  search_url = Caren::Api.session.url_for( "#{Caren::Product.resource_url}?key=name&value=bedpan" )
30
30
 
31
31
  timestamp = DateTime.now.to_i
32
-
32
+
33
33
  FakeWeb.register_uri(:post, products_url, :timestamp => timestamp, :signature => Caren::Api.session.sign(timestamp) )
34
34
  FakeWeb.register_uri(:put, product_url, :timestamp => timestamp, :signature => Caren::Api.session.sign(timestamp) )
35
- FakeWeb.register_uri(:get, products_url, :body => products, :timestamp => timestamp, :signature => Caren::Api.session.sign(timestamp,products) )
36
- FakeWeb.register_uri(:get, product_url, :body => product, :timestamp => timestamp, :signature => Caren::Api.session.sign(timestamp,product) )
37
- FakeWeb.register_uri(:get, search_url, :body => product_search, :timestamp => timestamp, :signature => Caren::Api.session.sign(timestamp,product_search) )
35
+ FakeWeb.register_uri(:get, products_url, :body => products, :timestamp => timestamp, :signature => Caren::Api.session.sign(timestamp,nil,products) )
36
+ FakeWeb.register_uri(:get, product_url, :body => product, :timestamp => timestamp, :signature => Caren::Api.session.sign(timestamp,nil,product) )
37
+ FakeWeb.register_uri(:get, search_url, :body => product_search, :timestamp => timestamp, :signature => Caren::Api.session.sign(timestamp,nil,product_search) )
38
38
  end
39
39
 
40
40
  it "should be able to update a product" do
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
- prerelease: false
4
+ hash: 39
5
+ prerelease:
5
6
  segments:
6
7
  - 0
7
8
  - 4
8
- - 19
9
- segments_generated: true
10
- version: 0.4.19
9
+ - 20
10
+ version: 0.4.20
11
11
  platform: ruby
12
12
  authors:
13
13
  - Andre Foeken
@@ -15,141 +15,150 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-11-18 00:00:00 +01:00
19
- default_executable:
18
+ date: 2012-01-23 00:00:00 Z
20
19
  dependencies:
21
20
  - !ruby/object:Gem::Dependency
22
- type: :runtime
23
- name: i18n
24
- version_requirements: &id001 !ruby/object:Gem::Requirement
21
+ requirement: &id001 !ruby/object:Gem::Requirement
22
+ none: false
25
23
  requirements:
26
24
  - - ">="
27
25
  - !ruby/object:Gem::Version
26
+ hash: 3
28
27
  segments:
29
28
  - 0
30
- segments_generated: true
31
29
  version: "0"
32
- requirement: *id001
30
+ version_requirements: *id001
31
+ name: i18n
33
32
  prerelease: false
34
- - !ruby/object:Gem::Dependency
35
33
  type: :runtime
36
- name: activesupport
37
- version_requirements: &id002 !ruby/object:Gem::Requirement
34
+ - !ruby/object:Gem::Dependency
35
+ requirement: &id002 !ruby/object:Gem::Requirement
36
+ none: false
38
37
  requirements:
39
38
  - - ">="
40
39
  - !ruby/object:Gem::Version
40
+ hash: 3
41
41
  segments:
42
42
  - 0
43
- segments_generated: true
44
43
  version: "0"
45
- requirement: *id002
44
+ version_requirements: *id002
45
+ name: activesupport
46
46
  prerelease: false
47
- - !ruby/object:Gem::Dependency
48
47
  type: :runtime
49
- name: builder
50
- version_requirements: &id003 !ruby/object:Gem::Requirement
48
+ - !ruby/object:Gem::Dependency
49
+ requirement: &id003 !ruby/object:Gem::Requirement
50
+ none: false
51
51
  requirements:
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
+ hash: 3
54
55
  segments:
55
56
  - 0
56
- segments_generated: true
57
57
  version: "0"
58
- requirement: *id003
58
+ version_requirements: *id003
59
+ name: builder
59
60
  prerelease: false
60
- - !ruby/object:Gem::Dependency
61
61
  type: :runtime
62
- name: rest-client
63
- version_requirements: &id004 !ruby/object:Gem::Requirement
62
+ - !ruby/object:Gem::Dependency
63
+ requirement: &id004 !ruby/object:Gem::Requirement
64
+ none: false
64
65
  requirements:
65
66
  - - "="
66
67
  - !ruby/object:Gem::Version
68
+ hash: 1
67
69
  segments:
68
70
  - 1
69
71
  - 6
70
72
  - 7
71
- segments_generated: true
72
73
  version: 1.6.7
73
- requirement: *id004
74
+ version_requirements: *id004
75
+ name: rest-client
74
76
  prerelease: false
77
+ type: :runtime
75
78
  - !ruby/object:Gem::Dependency
76
- type: :development
77
- name: bundler
78
- version_requirements: &id005 !ruby/object:Gem::Requirement
79
+ requirement: &id005 !ruby/object:Gem::Requirement
80
+ none: false
79
81
  requirements:
80
82
  - - ">="
81
83
  - !ruby/object:Gem::Version
84
+ hash: 3
82
85
  segments:
83
86
  - 0
84
- segments_generated: true
85
87
  version: "0"
86
- requirement: *id005
88
+ version_requirements: *id005
89
+ name: bundler
87
90
  prerelease: false
88
- - !ruby/object:Gem::Dependency
89
91
  type: :development
90
- name: rcov
91
- version_requirements: &id006 !ruby/object:Gem::Requirement
92
+ - !ruby/object:Gem::Dependency
93
+ requirement: &id006 !ruby/object:Gem::Requirement
94
+ none: false
92
95
  requirements:
93
96
  - - ">="
94
97
  - !ruby/object:Gem::Version
98
+ hash: 3
95
99
  segments:
96
100
  - 0
97
- segments_generated: true
98
101
  version: "0"
99
- requirement: *id006
102
+ version_requirements: *id006
103
+ name: rcov
100
104
  prerelease: false
101
- - !ruby/object:Gem::Dependency
102
105
  type: :development
103
- name: capybara
104
- version_requirements: &id007 !ruby/object:Gem::Requirement
106
+ - !ruby/object:Gem::Dependency
107
+ requirement: &id007 !ruby/object:Gem::Requirement
108
+ none: false
105
109
  requirements:
106
110
  - - ">="
107
111
  - !ruby/object:Gem::Version
112
+ hash: 3
108
113
  segments:
109
114
  - 0
110
- segments_generated: true
111
115
  version: "0"
112
- requirement: *id007
116
+ version_requirements: *id007
117
+ name: capybara
113
118
  prerelease: false
114
- - !ruby/object:Gem::Dependency
115
119
  type: :development
116
- name: rspec
117
- version_requirements: &id008 !ruby/object:Gem::Requirement
120
+ - !ruby/object:Gem::Dependency
121
+ requirement: &id008 !ruby/object:Gem::Requirement
122
+ none: false
118
123
  requirements:
119
124
  - - ">="
120
125
  - !ruby/object:Gem::Version
126
+ hash: 3
121
127
  segments:
122
128
  - 0
123
- segments_generated: true
124
129
  version: "0"
125
- requirement: *id008
130
+ version_requirements: *id008
131
+ name: rspec
126
132
  prerelease: false
127
- - !ruby/object:Gem::Dependency
128
133
  type: :development
129
- name: fakeweb
130
- version_requirements: &id009 !ruby/object:Gem::Requirement
134
+ - !ruby/object:Gem::Dependency
135
+ requirement: &id009 !ruby/object:Gem::Requirement
136
+ none: false
131
137
  requirements:
132
138
  - - ">="
133
139
  - !ruby/object:Gem::Version
140
+ hash: 3
134
141
  segments:
135
142
  - 0
136
- segments_generated: true
137
143
  version: "0"
138
- requirement: *id009
144
+ version_requirements: *id009
145
+ name: fakeweb
139
146
  prerelease: false
140
- - !ruby/object:Gem::Dependency
141
147
  type: :development
142
- name: jeweler
143
- version_requirements: &id010 !ruby/object:Gem::Requirement
148
+ - !ruby/object:Gem::Dependency
149
+ requirement: &id010 !ruby/object:Gem::Requirement
150
+ none: false
144
151
  requirements:
145
152
  - - ">="
146
153
  - !ruby/object:Gem::Version
154
+ hash: 3
147
155
  segments:
148
156
  - 0
149
- segments_generated: true
150
157
  version: "0"
151
- requirement: *id010
158
+ version_requirements: *id010
159
+ name: jeweler
152
160
  prerelease: false
161
+ type: :development
153
162
  description: You can use this gem as inspiration of the base of your connections with Caren.
154
163
  email: andre.foeken@nedap.com
155
164
  executables: []
@@ -213,7 +222,6 @@ files:
213
222
  - spec/product_spec.rb
214
223
  - spec/spec.opts
215
224
  - spec/spec_helper.rb
216
- has_rdoc: true
217
225
  homepage: http://github.com/foeken/caren-api
218
226
  licenses:
219
227
  - MIT
@@ -223,25 +231,27 @@ rdoc_options: []
223
231
  require_paths:
224
232
  - lib
225
233
  required_ruby_version: !ruby/object:Gem::Requirement
234
+ none: false
226
235
  requirements:
227
236
  - - ">="
228
237
  - !ruby/object:Gem::Version
238
+ hash: 3
229
239
  segments:
230
240
  - 0
231
- segments_generated: true
232
241
  version: "0"
233
242
  required_rubygems_version: !ruby/object:Gem::Requirement
243
+ none: false
234
244
  requirements:
235
245
  - - ">="
236
246
  - !ruby/object:Gem::Version
247
+ hash: 3
237
248
  segments:
238
249
  - 0
239
- segments_generated: true
240
250
  version: "0"
241
251
  requirements: []
242
252
 
243
253
  rubyforge_project:
244
- rubygems_version: 1.3.6
254
+ rubygems_version: 1.8.15
245
255
  signing_key:
246
256
  specification_version: 3
247
257
  summary: Reference implementation of Caren CareProvider API