moon 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -3,5 +3,6 @@ module Moon::Response
3
3
 
4
4
  autoload :Base, File.join(File.dirname(__FILE__), "response", "base")
5
5
  autoload :JSON, File.join(File.dirname(__FILE__), "response", "json")
6
+ autoload :XML, File.join(File.dirname(__FILE__), "response", "xml")
6
7
 
7
8
  end
@@ -0,0 +1,21 @@
1
+ require 'xmlsimple'
2
+
3
+ # Moon::Response::XML is the base class for all xml responses.
4
+ class Moon::Response::XML < Moon::Response::Base
5
+
6
+ attr_accessor :status
7
+ attr_accessor :hash
8
+
9
+ def initialize(status, root_tag, hash = { })
10
+ @status, @root_tag, @hash = status, root_tag, hash
11
+ end
12
+
13
+ def headers
14
+ { "Content-Type" => "text/xml" }
15
+ end
16
+
17
+ def body
18
+ XmlSimple.xml_out @hash, "RootName" => @root_tag, "XmlDeclaration" => "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
19
+ end
20
+
21
+ end
@@ -0,0 +1,33 @@
1
+ require File.expand_path(File.join(File.dirname(__FILE__), "..", "..", "..", "spec_helper"))
2
+
3
+ describe Moon::Response::XML do
4
+
5
+ before :each do
6
+ @response = described_class.new 201, "root", { "message" => { "content" => "OK", "priority" => "normal" } }
7
+ end
8
+
9
+ describe "status" do
10
+
11
+ it "should return 201" do
12
+ @response.status.should == 201
13
+ end
14
+
15
+ end
16
+
17
+ describe "headers" do
18
+
19
+ it "should return a hash with the right content type" do
20
+ @response.headers.should == { "Content-Type" => "text/xml" }
21
+ end
22
+
23
+ end
24
+
25
+ describe "body" do
26
+
27
+ it "should return the given hash encoded in json" do
28
+ @response.body.should == "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<root>\n <message priority=\"normal\">OK</message>\n</root>\n"
29
+ end
30
+
31
+ end
32
+
33
+ end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: moon
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.0.2
5
+ version: 0.0.3
6
6
  platform: ruby
7
7
  authors:
8
8
  - "Philipp Br\xC3\xBCll"
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-06-22 00:00:00 +02:00
13
+ date: 2011-06-23 00:00:00 +02:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
@@ -68,7 +68,7 @@ dependencies:
68
68
  type: :development
69
69
  prerelease: false
70
70
  version_requirements: *id005
71
- description: A simple rack application library - second alpha release.
71
+ description: A simple rack application library - alpha release.
72
72
  email: b.phifty@gmail.com
73
73
  executables: []
74
74
 
@@ -105,6 +105,7 @@ files:
105
105
  - lib/moon/response/json/blank.rb
106
106
  - lib/moon/response/json/collection.rb
107
107
  - lib/moon/response/json.rb
108
+ - lib/moon/response/xml.rb
108
109
  - lib/moon/utility.rb
109
110
  - lib/moon/utility/string.rb
110
111
  - lib/moon/utility/template.rb
@@ -140,6 +141,7 @@ files:
140
141
  - spec/lib/moon/response/json/blank_spec.rb
141
142
  - spec/lib/moon/response/json/message_spec.rb
142
143
  - spec/lib/moon/response/base_spec.rb
144
+ - spec/lib/moon/response/xml_spec.rb
143
145
  - spec/lib/moon/response/json_spec.rb
144
146
  - spec/lib/moon/utility/string_spec.rb
145
147
  - spec/lib/moon/utility/template_spec.rb
@@ -164,7 +166,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
164
166
  requirements:
165
167
  - - ">="
166
168
  - !ruby/object:Gem::Version
167
- hash: -1888405216754161205
169
+ hash: -4097296464974115511
168
170
  segments:
169
171
  - 0
170
172
  version: "0"
@@ -204,6 +206,7 @@ test_files:
204
206
  - spec/lib/moon/response/json/blank_spec.rb
205
207
  - spec/lib/moon/response/json/message_spec.rb
206
208
  - spec/lib/moon/response/base_spec.rb
209
+ - spec/lib/moon/response/xml_spec.rb
207
210
  - spec/lib/moon/response/json_spec.rb
208
211
  - spec/lib/moon/utility/string_spec.rb
209
212
  - spec/lib/moon/utility/template_spec.rb