restfully 0.8.6 → 0.8.7
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/bin/restfully +25 -26
- data/lib/restfully/resource.rb +1 -2
- data/lib/restfully/version.rb +1 -1
- data/spec/restfully/media_type/application_vnd_bonfire_xml_spec.rb +5 -5
- metadata +107 -160
data/bin/restfully
CHANGED
@@ -1,9 +1,6 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
# The command line Restfully client
|
3
3
|
|
4
|
-
lib_dir = File.expand_path(File.dirname(__FILE__) + '/../lib')
|
5
|
-
$LOAD_PATH.unshift lib_dir unless $LOAD_PATH.include? lib_dir
|
6
|
-
|
7
4
|
require 'restfully'
|
8
5
|
require 'optparse'
|
9
6
|
require 'logger'
|
@@ -71,10 +68,8 @@ if given_uri = ARGV.shift
|
|
71
68
|
@options["uri"] = given_uri
|
72
69
|
end
|
73
70
|
|
74
|
-
@session = Restfully::Session.new(@options)
|
75
|
-
|
76
71
|
def session
|
77
|
-
@session
|
72
|
+
@session ||= Restfully::Session.new(@options)
|
78
73
|
end
|
79
74
|
|
80
75
|
def root
|
@@ -93,32 +88,36 @@ HOME = ENV['HOME'] || ENV['HOMEPATH']
|
|
93
88
|
IRB.conf[:SAVE_HISTORY] = 100
|
94
89
|
IRB.conf[:HISTORY_FILE] = "#{HOME}/.irb-save-history"
|
95
90
|
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
91
|
+
# Raises an error on Windows, so disabling it.
|
92
|
+
if RUBY_PLATFORM !~ /(win|w)32$/
|
93
|
+
module Readline
|
94
|
+
module History
|
95
|
+
LOG = "#{HOME}/.irb-history"
|
96
|
+
|
97
|
+
def self.write_log(line)
|
98
|
+
File.open(LOG, 'ab') {|f|
|
99
|
+
f << "#{line}\n"
|
100
|
+
}
|
101
|
+
end
|
105
102
|
|
106
|
-
|
107
|
-
|
103
|
+
def self.start_session_log
|
104
|
+
write_log("\n")
|
105
|
+
end
|
108
106
|
end
|
109
|
-
end
|
110
107
|
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
108
|
+
alias :old_readline :readline
|
109
|
+
def readline(*args)
|
110
|
+
ln = old_readline(*args)
|
111
|
+
begin
|
112
|
+
History.write_log(ln)
|
113
|
+
rescue
|
114
|
+
end
|
115
|
+
ln
|
117
116
|
end
|
118
|
-
ln
|
119
117
|
end
|
118
|
+
Readline::History.start_session_log
|
120
119
|
end
|
121
|
-
|
120
|
+
|
122
121
|
ARGV.clear
|
123
122
|
ARGV.concat [ "--readline", "--prompt-mode", "simple" ]
|
124
123
|
IRB.start
|
data/lib/restfully/resource.rb
CHANGED
@@ -198,9 +198,8 @@ module Restfully
|
|
198
198
|
|
199
199
|
# Build the resource after loading.
|
200
200
|
def build
|
201
|
-
metaclass = class << self; self; end
|
202
201
|
extend Collection if collection?
|
203
|
-
|
202
|
+
metaclass = class << self; self; end
|
204
203
|
response.links.each do |link|
|
205
204
|
metaclass.send(:define_method, link.id.to_sym) do |*args|
|
206
205
|
session.get(link.href, :head => {
|
data/lib/restfully/version.rb
CHANGED
@@ -154,7 +154,7 @@ describe Restfully::MediaType::ApplicationVndBonfireXml do
|
|
154
154
|
@expected_compute_hash,
|
155
155
|
:serialization => {"__type__" => "compute"}
|
156
156
|
)
|
157
|
-
serialized.should == "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<compute xmlns=\"http://api.bonfire-project.eu/doc/schemas/occi\">\n <startup href=\"file:///path/to/startup-script/sh\"/>\n <
|
157
|
+
serialized.split("\n").sort.should == "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<compute xmlns=\"http://api.bonfire-project.eu/doc/schemas/occi\">\n <name>Compute name</name>\n <startup href=\"file:///path/to/startup-script/sh\"/>\n <instance_type>small</instance_type>\n <description>Compute description</description>\n <nic id=\"0\">\n <device>eth0</device>\n <mac>AA:AA:AA:AA</mac>\n <network href=\"/locations/fr-inria/networks/1\"/>\n <ip>123.123.123.123</ip>\n </nic>\n <nic id=\"1\">\n <device>eth1</device>\n <mac>BB:BB:BB:BB</mac>\n <network href=\"/locations/fr-inria/networks/2\"/>\n <ip>123.123.124.2</ip>\n </nic>\n <context>\n <bonfire_credentials>crohr:p4ssw0rd</bonfire_credentials>\n <monitoring_ip>123.123.123.2</monitoring_ip>\n </context>\n <link id=\"0\" href=\"/locations/fr-inria\" rel=\"location\" type=\"application/vnd.bonfire+xml\"/>\n <link id=\"1\" href=\"/locations/uk-epcc/computes/1\" rel=\"self\"/>\n <disk id=\"0\">\n <type>OS</type>\n <storage href=\"/locations/fr-inria/storages/1\"/>\n <target>sda</target>\n </disk>\n <disk id=\"1\">\n <type>CDROM</type>\n <storage href=\"/locations/fr-inria/storages/2\"/>\n <target>sdc</target>\n </disk>\n <state>ACTIVE</state>\n</compute>\n".split("\n").sort
|
158
158
|
end
|
159
159
|
|
160
160
|
it "should correctly deal with XML::Node elements" do
|
@@ -163,7 +163,7 @@ describe Restfully::MediaType::ApplicationVndBonfireXml do
|
|
163
163
|
'metrics' => XML::Node.new_cdata('<metric>hello,world</metric>')
|
164
164
|
}
|
165
165
|
}, :serialization => {"__type__" => "compute"})
|
166
|
-
serialized.should == "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<compute xmlns=\"http://api.bonfire-project.eu/doc/schemas/occi\">\n <context>\n <metrics><![CDATA[<metric>hello,world</metric>]]></metrics>\n </context>\n</compute>\n"
|
166
|
+
serialized.split("\n").sort.should == "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<compute xmlns=\"http://api.bonfire-project.eu/doc/schemas/occi\">\n <context>\n <metrics><![CDATA[<metric>hello,world</metric>]]></metrics>\n </context>\n</compute>\n".split("\n").sort
|
167
167
|
end
|
168
168
|
|
169
169
|
it "should correctly deal with SAVE_AS elements" do
|
@@ -171,13 +171,13 @@ describe Restfully::MediaType::ApplicationVndBonfireXml do
|
|
171
171
|
{
|
172
172
|
:name => "whatever",
|
173
173
|
:disk => [{
|
174
|
-
:
|
175
|
-
:
|
174
|
+
:save_as => {:name => "name of storage"},
|
175
|
+
:storage => {"href" => "/somewhere"}
|
176
176
|
}]
|
177
177
|
},
|
178
178
|
:serialization => {"__type__" => "compute"}
|
179
179
|
)
|
180
|
-
serialized.should == "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<compute xmlns=\"http://api.bonfire-project.eu/doc/schemas/occi\">\n <name>whatever</name>\n <disk id=\"0\">\n <save_as name=\"name of storage\"/>\n <storage href=\"/somewhere\"/>\n </disk>\n</compute>\n"
|
180
|
+
serialized.split("\n").sort.should == "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<compute xmlns=\"http://api.bonfire-project.eu/doc/schemas/occi\">\n <name>whatever</name>\n <disk id=\"0\">\n <save_as name=\"name of storage\"/>\n <storage href=\"/somewhere\"/>\n </disk>\n</compute>\n".split("\n").sort
|
181
181
|
end
|
182
182
|
end
|
183
183
|
end
|
metadata
CHANGED
@@ -1,191 +1,148 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: restfully
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.8.7
|
5
5
|
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 8
|
9
|
-
- 6
|
10
|
-
version: 0.8.6
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Cyril Rohr
|
14
9
|
autorequire:
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
|
-
|
18
|
-
date: 2011-06-28 00:00:00 +02:00
|
12
|
+
date: 2011-07-28 00:00:00.000000000 +02:00
|
19
13
|
default_executable:
|
20
|
-
dependencies:
|
21
|
-
- !ruby/object:Gem::Dependency
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
22
16
|
name: json
|
23
|
-
|
24
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
17
|
+
requirement: &2153574600 !ruby/object:Gem::Requirement
|
25
18
|
none: false
|
26
|
-
requirements:
|
19
|
+
requirements:
|
27
20
|
- - ~>
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
|
30
|
-
segments:
|
31
|
-
- 1
|
32
|
-
- 5
|
33
|
-
version: "1.5"
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '1.5'
|
34
23
|
type: :runtime
|
35
|
-
version_requirements: *id001
|
36
|
-
- !ruby/object:Gem::Dependency
|
37
|
-
name: rest-client
|
38
24
|
prerelease: false
|
39
|
-
|
25
|
+
version_requirements: *2153574600
|
26
|
+
- !ruby/object:Gem::Dependency
|
27
|
+
name: rest-client
|
28
|
+
requirement: &2153574140 !ruby/object:Gem::Requirement
|
40
29
|
none: false
|
41
|
-
requirements:
|
30
|
+
requirements:
|
42
31
|
- - ~>
|
43
|
-
- !ruby/object:Gem::Version
|
44
|
-
|
45
|
-
segments:
|
46
|
-
- 1
|
47
|
-
- 6
|
48
|
-
version: "1.6"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '1.6'
|
49
34
|
type: :runtime
|
50
|
-
version_requirements: *id002
|
51
|
-
- !ruby/object:Gem::Dependency
|
52
|
-
name: rest-client-components
|
53
35
|
prerelease: false
|
54
|
-
|
36
|
+
version_requirements: *2153574140
|
37
|
+
- !ruby/object:Gem::Dependency
|
38
|
+
name: rest-client-components
|
39
|
+
requirement: &2153573760 !ruby/object:Gem::Requirement
|
55
40
|
none: false
|
56
|
-
requirements:
|
57
|
-
- -
|
58
|
-
- !ruby/object:Gem::Version
|
59
|
-
|
60
|
-
segments:
|
61
|
-
- 0
|
62
|
-
version: "0"
|
41
|
+
requirements:
|
42
|
+
- - ! '>='
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
version: '0'
|
63
45
|
type: :runtime
|
64
|
-
version_requirements: *id003
|
65
|
-
- !ruby/object:Gem::Dependency
|
66
|
-
name: rack-cache
|
67
46
|
prerelease: false
|
68
|
-
|
47
|
+
version_requirements: *2153573760
|
48
|
+
- !ruby/object:Gem::Dependency
|
49
|
+
name: rack-cache
|
50
|
+
requirement: &2153573300 !ruby/object:Gem::Requirement
|
69
51
|
none: false
|
70
|
-
requirements:
|
71
|
-
- -
|
72
|
-
- !ruby/object:Gem::Version
|
73
|
-
|
74
|
-
segments:
|
75
|
-
- 0
|
76
|
-
version: "0"
|
52
|
+
requirements:
|
53
|
+
- - ! '>='
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '0'
|
77
56
|
type: :runtime
|
78
|
-
version_requirements: *id004
|
79
|
-
- !ruby/object:Gem::Dependency
|
80
|
-
name: backports
|
81
57
|
prerelease: false
|
82
|
-
|
58
|
+
version_requirements: *2153573300
|
59
|
+
- !ruby/object:Gem::Dependency
|
60
|
+
name: backports
|
61
|
+
requirement: &2153572880 !ruby/object:Gem::Requirement
|
83
62
|
none: false
|
84
|
-
requirements:
|
85
|
-
- -
|
86
|
-
- !ruby/object:Gem::Version
|
87
|
-
|
88
|
-
segments:
|
89
|
-
- 0
|
90
|
-
version: "0"
|
63
|
+
requirements:
|
64
|
+
- - ! '>='
|
65
|
+
- !ruby/object:Gem::Version
|
66
|
+
version: '0'
|
91
67
|
type: :runtime
|
92
|
-
version_requirements: *id005
|
93
|
-
- !ruby/object:Gem::Dependency
|
94
|
-
name: addressable
|
95
68
|
prerelease: false
|
96
|
-
|
69
|
+
version_requirements: *2153572880
|
70
|
+
- !ruby/object:Gem::Dependency
|
71
|
+
name: addressable
|
72
|
+
requirement: &2153572460 !ruby/object:Gem::Requirement
|
97
73
|
none: false
|
98
|
-
requirements:
|
99
|
-
- -
|
100
|
-
- !ruby/object:Gem::Version
|
101
|
-
|
102
|
-
segments:
|
103
|
-
- 0
|
104
|
-
version: "0"
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
105
78
|
type: :runtime
|
106
|
-
version_requirements: *id006
|
107
|
-
- !ruby/object:Gem::Dependency
|
108
|
-
name: rake
|
109
79
|
prerelease: false
|
110
|
-
|
80
|
+
version_requirements: *2153572460
|
81
|
+
- !ruby/object:Gem::Dependency
|
82
|
+
name: rake
|
83
|
+
requirement: &2153571960 !ruby/object:Gem::Requirement
|
111
84
|
none: false
|
112
|
-
requirements:
|
85
|
+
requirements:
|
113
86
|
- - ~>
|
114
|
-
- !ruby/object:Gem::Version
|
115
|
-
|
116
|
-
segments:
|
117
|
-
- 0
|
118
|
-
- 8
|
119
|
-
version: "0.8"
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: '0.8'
|
120
89
|
type: :development
|
121
|
-
version_requirements: *id007
|
122
|
-
- !ruby/object:Gem::Dependency
|
123
|
-
name: rspec
|
124
90
|
prerelease: false
|
125
|
-
|
91
|
+
version_requirements: *2153571960
|
92
|
+
- !ruby/object:Gem::Dependency
|
93
|
+
name: rspec
|
94
|
+
requirement: &2153603940 !ruby/object:Gem::Requirement
|
126
95
|
none: false
|
127
|
-
requirements:
|
96
|
+
requirements:
|
128
97
|
- - ~>
|
129
|
-
- !ruby/object:Gem::Version
|
130
|
-
|
131
|
-
segments:
|
132
|
-
- 2
|
133
|
-
version: "2"
|
98
|
+
- !ruby/object:Gem::Version
|
99
|
+
version: '2'
|
134
100
|
type: :development
|
135
|
-
version_requirements: *id008
|
136
|
-
- !ruby/object:Gem::Dependency
|
137
|
-
name: webmock
|
138
101
|
prerelease: false
|
139
|
-
|
102
|
+
version_requirements: *2153603940
|
103
|
+
- !ruby/object:Gem::Dependency
|
104
|
+
name: webmock
|
105
|
+
requirement: &2153603560 !ruby/object:Gem::Requirement
|
140
106
|
none: false
|
141
|
-
requirements:
|
142
|
-
- -
|
143
|
-
- !ruby/object:Gem::Version
|
144
|
-
|
145
|
-
segments:
|
146
|
-
- 0
|
147
|
-
version: "0"
|
107
|
+
requirements:
|
108
|
+
- - ! '>='
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
148
111
|
type: :development
|
149
|
-
version_requirements: *id009
|
150
|
-
- !ruby/object:Gem::Dependency
|
151
|
-
name: autotest
|
152
112
|
prerelease: false
|
153
|
-
|
113
|
+
version_requirements: *2153603560
|
114
|
+
- !ruby/object:Gem::Dependency
|
115
|
+
name: autotest
|
116
|
+
requirement: &2153603100 !ruby/object:Gem::Requirement
|
154
117
|
none: false
|
155
|
-
requirements:
|
156
|
-
- -
|
157
|
-
- !ruby/object:Gem::Version
|
158
|
-
|
159
|
-
segments:
|
160
|
-
- 0
|
161
|
-
version: "0"
|
118
|
+
requirements:
|
119
|
+
- - ! '>='
|
120
|
+
- !ruby/object:Gem::Version
|
121
|
+
version: '0'
|
162
122
|
type: :development
|
163
|
-
version_requirements: *id010
|
164
|
-
- !ruby/object:Gem::Dependency
|
165
|
-
name: autotest-growl
|
166
123
|
prerelease: false
|
167
|
-
|
124
|
+
version_requirements: *2153603100
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: autotest-growl
|
127
|
+
requirement: &2153602680 !ruby/object:Gem::Requirement
|
168
128
|
none: false
|
169
|
-
requirements:
|
170
|
-
- -
|
171
|
-
- !ruby/object:Gem::Version
|
172
|
-
|
173
|
-
segments:
|
174
|
-
- 0
|
175
|
-
version: "0"
|
129
|
+
requirements:
|
130
|
+
- - ! '>='
|
131
|
+
- !ruby/object:Gem::Version
|
132
|
+
version: '0'
|
176
133
|
type: :development
|
177
|
-
|
134
|
+
prerelease: false
|
135
|
+
version_requirements: *2153602680
|
178
136
|
description: Consume RESTful APIs effortlessly
|
179
|
-
email:
|
137
|
+
email:
|
180
138
|
- cyril.rohr@gmail.com
|
181
|
-
executables:
|
139
|
+
executables:
|
182
140
|
- restfully
|
183
141
|
extensions: []
|
184
|
-
|
185
|
-
extra_rdoc_files:
|
142
|
+
extra_rdoc_files:
|
186
143
|
- LICENSE
|
187
144
|
- README.md
|
188
|
-
files:
|
145
|
+
files:
|
189
146
|
- bin/restfully
|
190
147
|
- lib/restfully/collection.rb
|
191
148
|
- lib/restfully/error.rb
|
@@ -236,40 +193,30 @@ files:
|
|
236
193
|
has_rdoc: true
|
237
194
|
homepage: http://github.com/crohr/restfully
|
238
195
|
licenses: []
|
239
|
-
|
240
196
|
post_install_message:
|
241
|
-
rdoc_options:
|
197
|
+
rdoc_options:
|
242
198
|
- --charset=UTF-8
|
243
|
-
require_paths:
|
199
|
+
require_paths:
|
244
200
|
- lib
|
245
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
201
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
246
202
|
none: false
|
247
|
-
requirements:
|
248
|
-
- -
|
249
|
-
- !ruby/object:Gem::Version
|
250
|
-
|
251
|
-
|
252
|
-
- 1
|
253
|
-
- 8
|
254
|
-
version: "1.8"
|
255
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
203
|
+
requirements:
|
204
|
+
- - ! '>='
|
205
|
+
- !ruby/object:Gem::Version
|
206
|
+
version: '1.8'
|
207
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
256
208
|
none: false
|
257
|
-
requirements:
|
258
|
-
- -
|
259
|
-
- !ruby/object:Gem::Version
|
260
|
-
|
261
|
-
segments:
|
262
|
-
- 1
|
263
|
-
- 3
|
264
|
-
version: "1.3"
|
209
|
+
requirements:
|
210
|
+
- - ! '>='
|
211
|
+
- !ruby/object:Gem::Version
|
212
|
+
version: '1.3'
|
265
213
|
requirements: []
|
266
|
-
|
267
214
|
rubyforge_project:
|
268
215
|
rubygems_version: 1.6.2
|
269
216
|
signing_key:
|
270
217
|
specification_version: 3
|
271
218
|
summary: Consume RESTful APIs effortlessly
|
272
|
-
test_files:
|
219
|
+
test_files:
|
273
220
|
- spec/fixtures/bonfire-collection-with-fragments.xml
|
274
221
|
- spec/fixtures/bonfire-compute-existing.xml
|
275
222
|
- spec/fixtures/bonfire-empty-collection.xml
|