restfully 0.7.1.rc1 → 0.7.1.rc2

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.
@@ -63,6 +63,10 @@ module Restfully
63
63
  )
64
64
  end
65
65
 
66
+ def inspect
67
+ "#{code}, head=#{head.inspect}, body=#{body.inspect}"
68
+ end
69
+
66
70
  end
67
71
  end
68
72
  end
@@ -135,7 +135,12 @@ module Restfully
135
135
  when Restfully::Resource
136
136
  dump_object({"href" => object.uri.to_s}, parent)
137
137
  when Hash
138
- if object.has_key?("href")
138
+ object.stringify_keys!
139
+ if object.has_key?("href") || (
140
+ # or object.keys == ["name"] && parent.parent &&
141
+ # parent.parent.parent
142
+ ["save_as"].include?(parent.name)
143
+ )
139
144
  # only attributes
140
145
  object.each{|kattr,vattr|
141
146
  parent.attributes[kattr.to_s] = vattr
@@ -149,9 +154,13 @@ module Restfully
149
154
  end
150
155
  end
151
156
  when Array
157
+ i = 0
158
+ parent['id'] = i.to_s
152
159
  dump_object(object[0], parent)
153
160
  object[1..-1].each{|item|
161
+ i+=1
154
162
  node = XML::Node.new(parent.name)
163
+ node['id'] = i.to_s
155
164
  dump_object(item, node)
156
165
  parent.parent << node
157
166
  }
@@ -178,7 +187,7 @@ module Restfully
178
187
  end
179
188
 
180
189
  def represents?(id)
181
- property("id") == id.to_s || property("name") == id.to_s
190
+ property("id") == id.to_s || property("name") == id.to_s || links.find{|l| l.self? && l.href.to_s.split("/").last == id.to_s}
182
191
  end
183
192
 
184
193
  def complete?
@@ -119,14 +119,18 @@ module Restfully
119
119
  code, head, body = resource.send(request.method, request.body || {})
120
120
 
121
121
  response = Restfully::HTTP::Response.new(self, code, head, body)
122
+ logger.debug response.inspect
123
+ response
122
124
  end
123
125
 
124
126
  # Process a Restfully::HTTP::Response.
125
127
  def process(response, request)
126
128
  case code=response.code
127
129
  when 200
130
+ logger.debug "Building response..."
128
131
  Resource.new(self, response, request).build
129
132
  when 201,202
133
+ logger.debug "Following redirection to: #{response.head['Location'].inspect}"
130
134
  get response.head['Location'], :head => request.head
131
135
  when 204
132
136
  true
@@ -1,3 +1,3 @@
1
1
  module Restfully
2
- VERSION = "0.7.1.rc1"
2
+ VERSION = "0.7.1.rc2"
3
3
  end
@@ -38,7 +38,6 @@ describe Restfully::Collection do
38
38
  items = []
39
39
  @resource.load.each{|i| items << i}
40
40
  items.all?{|i| i.kind_of?(Restfully::Resource)}.should be_true
41
- pp items
42
41
  items[0].relationships.map(&:to_s).sort.should == ["parent", "self"]
43
42
  items[0]['uid'].should == 376505
44
43
  end
@@ -154,7 +154,21 @@ 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 <name>Compute name</name>\n <instance_type>small</instance_type>\n <link href=\"/locations/fr-inria\" rel=\"location\" type=\"application/vnd.bonfire+xml\"/>\n <link href=\"/locations/uk-epcc/computes/1\" rel=\"self\"/>\n <context>\n <bonfire_credentials>crohr:p4ssw0rd</bonfire_credentials>\n <monitoring_ip>123.123.123.2</monitoring_ip>\n </context>\n <nic>\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>\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 <description>Compute description</description>\n <disk>\n <type>OS</type>\n <storage href=\"/locations/fr-inria/storages/1\"/>\n <target>sda</target>\n </disk>\n <disk>\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"
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 <name>Compute name</name>\n <instance_type>small</instance_type>\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 <context>\n <bonfire_credentials>crohr:p4ssw0rd</bonfire_credentials>\n <monitoring_ip>123.123.123.2</monitoring_ip>\n </context>\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 <description>Compute description</description>\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"
158
+ end
159
+
160
+ it "should correctly deal with SAVE_AS elements" do
161
+ serialized = Restfully::MediaType::ApplicationVndBonfireXml.serialize(
162
+ {
163
+ :name => "whatever",
164
+ :disk => [{
165
+ :storage => {"href" => "/somewhere"},
166
+ :save_as => {:name => "name of storage"}
167
+ }]
168
+ },
169
+ :serialization => {"__type__" => "compute"}
170
+ )
171
+ 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"
158
172
  end
159
173
  end
160
174
  end
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: restfully
3
3
  version: !ruby/object:Gem::Version
4
- hash: 15424111
4
+ hash: 15424105
5
5
  prerelease: 6
6
6
  segments:
7
7
  - 0
8
8
  - 7
9
9
  - 1
10
10
  - rc
11
- - 1
12
- version: 0.7.1.rc1
11
+ - 2
12
+ version: 0.7.1.rc2
13
13
  platform: ruby
14
14
  authors:
15
15
  - Cyril Rohr
@@ -17,7 +17,7 @@ autorequire:
17
17
  bindir: bin
18
18
  cert_chain: []
19
19
 
20
- date: 2011-05-09 00:00:00 +02:00
20
+ date: 2011-05-13 00:00:00 +02:00
21
21
  default_executable:
22
22
  dependencies:
23
23
  - !ruby/object:Gem::Dependency