persevere 0.17.0 → 0.18.0
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/lib/persevere.rb +9 -10
- data/spec/persevere_spec.rb +6 -7
- data/spec/spec_helper.rb +52 -14
- metadata +25 -25
data/lib/persevere.rb
CHANGED
@@ -34,10 +34,9 @@ class PersevereResult
|
|
34
34
|
end
|
35
35
|
|
36
36
|
class Persevere
|
37
|
-
VERSION = '1.1'
|
38
37
|
HEADERS = { 'Accept' => 'application/json',
|
39
38
|
'Content-Type' => 'application/json'
|
40
|
-
}
|
39
|
+
} unless defined?(HEADERS)
|
41
40
|
|
42
41
|
attr_accessor :server_url, :pservr
|
43
42
|
|
@@ -49,12 +48,12 @@ class Persevere
|
|
49
48
|
end
|
50
49
|
|
51
50
|
# Pass in a resource hash
|
52
|
-
def create(path, resource)
|
51
|
+
def create(path, resource, headers = {})
|
53
52
|
json_blob = resource.to_json
|
54
53
|
response = nil
|
55
54
|
while response.nil?
|
56
55
|
begin
|
57
|
-
response = @persevere.send_request('POST', path, json_blob, HEADERS)
|
56
|
+
response = @persevere.send_request('POST', path, json_blob, HEADERS.merge(headers))
|
58
57
|
rescue Timeout::Error, Errno::EINVAL, Errno::ECONNRESET, EOFError,
|
59
58
|
Net::HTTPBadResponse, Net::HTTPHeaderSyntaxError, Net::ProtocolError => e
|
60
59
|
puts "Persevere Create Failed: #{e}, Trying again."
|
@@ -63,11 +62,11 @@ class Persevere
|
|
63
62
|
return PersevereResult.make(response)
|
64
63
|
end
|
65
64
|
|
66
|
-
def retrieve(path)
|
65
|
+
def retrieve(path, headers = {})
|
67
66
|
response = nil
|
68
67
|
while response.nil?
|
69
68
|
begin
|
70
|
-
response = @persevere.send_request('GET', path, nil, HEADERS)
|
69
|
+
response = @persevere.send_request('GET', path, nil, HEADERS.merge(headers))
|
71
70
|
rescue Timeout::Error, Errno::EINVAL, Errno::ECONNRESET, EOFError,
|
72
71
|
Net::HTTPBadResponse, Net::HTTPHeaderSyntaxError, Net::ProtocolError => e
|
73
72
|
puts "Persevere Create Failed: #{e}, Trying again."
|
@@ -76,13 +75,13 @@ class Persevere
|
|
76
75
|
return PersevereResult.make(response)
|
77
76
|
end
|
78
77
|
|
79
|
-
def update(path, resource)
|
78
|
+
def update(path, resource, headers = {})
|
80
79
|
json_blob = resource.to_json
|
81
80
|
# puts "JSON to PERSEVERE: #{json_blob}"
|
82
81
|
response = nil
|
83
82
|
while response.nil?
|
84
83
|
begin
|
85
|
-
response = @persevere.send_request('PUT', path, json_blob, HEADERS)
|
84
|
+
response = @persevere.send_request('PUT', path, json_blob, HEADERS.merge(headers))
|
86
85
|
rescue Timeout::Error, Errno::EINVAL, Errno::ECONNRESET, EOFError,
|
87
86
|
Net::HTTPBadResponse, Net::HTTPHeaderSyntaxError, Net::ProtocolError => e
|
88
87
|
puts "Persevere Create Failed: #{e}, Trying again."
|
@@ -91,11 +90,11 @@ class Persevere
|
|
91
90
|
return PersevereResult.make(response)
|
92
91
|
end
|
93
92
|
|
94
|
-
def delete(path)
|
93
|
+
def delete(path, headers = {})
|
95
94
|
response = nil
|
96
95
|
while response.nil?
|
97
96
|
begin
|
98
|
-
response = @persevere.send_request('DELETE', path, nil, HEADERS)
|
97
|
+
response = @persevere.send_request('DELETE', path, nil, HEADERS.merge(headers))
|
99
98
|
rescue Timeout::Error, Errno::EINVAL, Errno::ECONNRESET, EOFError,
|
100
99
|
Net::HTTPBadResponse, Net::HTTPHeaderSyntaxError, Net::ProtocolError => e
|
101
100
|
puts "Persevere Create Failed: #{e}, Trying again."
|
data/spec/persevere_spec.rb
CHANGED
@@ -57,7 +57,6 @@ describe Persevere do
|
|
57
57
|
result = @p.create('/Class/', @blobObj)
|
58
58
|
result.code.should == "201"
|
59
59
|
JSON.parse(result.body).should == @blobObj
|
60
|
-
# result.body.should == "\"Can not modify queries\""
|
61
60
|
# This shouldn't be a 201, it should say something mean.
|
62
61
|
end
|
63
62
|
end
|
@@ -73,7 +72,7 @@ describe Persevere do
|
|
73
72
|
end
|
74
73
|
|
75
74
|
it 'should 404 on a non-existent object' do
|
76
|
-
result = @p.retrieve('/Class/
|
75
|
+
result = @p.retrieve('/Class/GetNotThere')
|
77
76
|
result.code.should == "404"
|
78
77
|
result.message.should == "Not Found"
|
79
78
|
end
|
@@ -91,9 +90,10 @@ describe Persevere do
|
|
91
90
|
end
|
92
91
|
|
93
92
|
it 'should fail to modify a non-existent item' do
|
94
|
-
result = @p.update('/Class/
|
93
|
+
result = @p.update('/Class/NonExistent', @blobObj)
|
95
94
|
result.code.should == "500"
|
96
95
|
result.body.should == "\"id does not match location\""
|
96
|
+
@p.delete('/Class/NonExistent') # A bug(?) in Persevere makes a broken NonExistent class.
|
97
97
|
# This should be a 404 and not throw a persevere server exception
|
98
98
|
end
|
99
99
|
end
|
@@ -110,10 +110,9 @@ describe Persevere do
|
|
110
110
|
|
111
111
|
it 'should fail to delete a non-existent item' do
|
112
112
|
result = @p.delete('/Class/NotThere')
|
113
|
-
result.code.should == "
|
114
|
-
result.message.should == "
|
115
|
-
result.body.should
|
116
|
-
# This should be a 404 and not fail silently with a 204
|
113
|
+
result.code.should == "404"
|
114
|
+
result.message.should == "Not Found"
|
115
|
+
result.body.should == "\"Class/NotThere not found\""
|
117
116
|
end
|
118
117
|
end
|
119
118
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,14 +1,52 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
#
|
1
|
+
require 'pathname'
|
2
|
+
require 'rubygems'
|
3
|
+
|
4
|
+
require 'addressable/uri'
|
5
|
+
require 'spec'
|
6
|
+
|
7
|
+
require 'ruby-debug'
|
8
|
+
|
9
|
+
require 'dm-core'
|
10
|
+
|
11
|
+
require 'adapter_shared_spec'
|
12
|
+
|
13
|
+
SPEC_ROOT = Pathname(__FILE__).dirname.expand_path
|
14
|
+
# $LOAD_PATH.unshift(SPEC_ROOT.parent + 'lib')
|
15
|
+
|
16
|
+
Pathname.glob((SPEC_ROOT + '{lib,*/shared}/**/*.rb').to_s).each { |file| require file }
|
17
|
+
|
18
|
+
ENV['ADAPTERS'] ||= 'all'
|
19
|
+
|
20
|
+
ADAPTERS = []
|
21
|
+
|
22
|
+
PRIMARY = {
|
23
|
+
'persevere' => {:adapter => 'persevere', :host => 'localhost', :port => '8080'}
|
24
|
+
}
|
25
|
+
|
26
|
+
adapters = ENV['ADAPTERS'].split(' ').map { |adapter_name| adapter_name.strip.downcase }.uniq
|
27
|
+
adapters = PRIMARY.keys if adapters.include?('all')
|
28
|
+
|
29
|
+
PRIMARY.only(*adapters).each do |name, default|
|
30
|
+
connection_string = ENV["#{name.upcase}_SPEC_URI"] || default
|
31
|
+
begin
|
32
|
+
adapter = DataMapper.setup(name.to_sym, connection_string)
|
33
|
+
|
34
|
+
# test the connection if possible
|
35
|
+
if adapter.respond_to?(:query)
|
36
|
+
name == 'oracle' ? adapter.select('SELECT 1 FROM dual') : adapter.select('SELECT 1')
|
37
|
+
end
|
38
|
+
|
39
|
+
ADAPTERS << name
|
40
|
+
PRIMARY[name] = connection_string # ensure *_SPEC_URI is saved
|
41
|
+
rescue Exception => exception
|
42
|
+
puts "Could not connect to the database using #{connection_string.inspect} because: #{exception.inspect}"
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
logger = DataMapper::Logger.new(DataMapper.root / 'log' / 'dm.log', :debug)
|
47
|
+
logger.auto_flush = true
|
48
|
+
|
49
|
+
Spec::Runner.configure do |config|
|
50
|
+
config.extend(DataMapper::Spec::AdapterHelpers)
|
51
|
+
# config.include(DataMapper::Spec::PendingHelpers)
|
52
|
+
end
|
metadata
CHANGED
@@ -1,57 +1,57 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: persevere
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.18.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
|
8
|
-
|
7
|
+
- Ivan R. Judson
|
8
|
+
- The Yogo Data Management Development Team
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2010-01-
|
13
|
+
date: 2010-01-13 00:00:00 -07:00
|
14
14
|
default_executable:
|
15
15
|
dependencies: []
|
16
16
|
|
17
17
|
description: A ruby wrapper for persevere
|
18
18
|
email:
|
19
|
-
|
19
|
+
- irjudson [a] gmail [d] com
|
20
20
|
executables: []
|
21
21
|
|
22
22
|
extensions: []
|
23
23
|
|
24
24
|
extra_rdoc_files:
|
25
|
-
|
26
|
-
|
25
|
+
- LICENSE.txt
|
26
|
+
- README.txt
|
27
27
|
files:
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
28
|
+
- LICENSE.txt
|
29
|
+
- Rakefile
|
30
|
+
- lib/persevere.rb
|
31
|
+
- persevere/History.txt
|
32
|
+
- persevere/README.txt
|
33
|
+
- README.txt
|
34
34
|
has_rdoc: true
|
35
35
|
homepage: http://github.com/yogo/persevere
|
36
36
|
licenses: []
|
37
37
|
|
38
38
|
post_install_message:
|
39
39
|
rdoc_options:
|
40
|
-
|
41
|
-
|
40
|
+
- --main
|
41
|
+
- persevere/README.txt
|
42
42
|
require_paths:
|
43
|
-
|
43
|
+
- lib
|
44
44
|
required_ruby_version: !ruby/object:Gem::Requirement
|
45
45
|
requirements:
|
46
|
-
|
47
|
-
|
48
|
-
|
46
|
+
- - ">="
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: "0"
|
49
49
|
version:
|
50
50
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
|
53
|
-
|
54
|
-
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: "0"
|
55
55
|
version:
|
56
56
|
requirements: []
|
57
57
|
|
@@ -61,6 +61,6 @@ signing_key:
|
|
61
61
|
specification_version: 3
|
62
62
|
summary: A ruby wrapper for persevere
|
63
63
|
test_files:
|
64
|
-
|
65
|
-
|
66
|
-
|
64
|
+
- spec/persevere_spec.rb
|
65
|
+
- spec/spec.opts
|
66
|
+
- spec/spec_helper.rb
|