rory 0.5.1 → 0.5.2
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.
- checksums.yaml +4 -4
- data/lib/rory/controller.rb +4 -4
- data/lib/rory/support.rb +6 -7
- data/lib/rory/version.rb +1 -1
- data/spec/lib/rory/controller_spec.rb +5 -0
- data/spec/lib/rory/support_spec.rb +38 -6
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f32801437785ab13928284bd7d3085846dc8f04d
|
4
|
+
data.tar.gz: 60e766bfd8db4e300c3b661dfc47f7cbb55dbecd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6d51ac0184c96b228640b1169229794bc79443a0e7c10c4d399d0646926d66805595aa37d1be0d5bd5f0955159b3109be4971f8ffcd5101a195ef2af0f364092
|
7
|
+
data.tar.gz: 86475e130a4d29a19875e1c81b3da04d4bb2fc0bd2a55850d0cc9ed816dd0b3632436b8acc6d2ef308b8ee0cfac95237864c828a6d818ae560758852373c1b0a
|
data/lib/rory/controller.rb
CHANGED
@@ -91,10 +91,10 @@ module Rory
|
|
91
91
|
end
|
92
92
|
|
93
93
|
def set_response_defaults(opts)
|
94
|
-
opts[:content_type] ||= default_content_type
|
94
|
+
opts[:content_type] ||= default_content_type(opts)
|
95
95
|
opts[:status] ||= 200
|
96
96
|
opts[:headers] = {
|
97
|
-
'Content-type' =>
|
97
|
+
'Content-type' => opts[:content_type],
|
98
98
|
'charset' => 'UTF-8'
|
99
99
|
}.merge(opts[:headers] || {})
|
100
100
|
end
|
@@ -134,8 +134,8 @@ module Rory
|
|
134
134
|
@response = dispatcher.render_not_found
|
135
135
|
end
|
136
136
|
|
137
|
-
def default_content_type
|
138
|
-
if json_requested?
|
137
|
+
def default_content_type(opts = {})
|
138
|
+
if json_requested? || opts[:json]
|
139
139
|
'application/json'
|
140
140
|
else
|
141
141
|
'text/html'
|
data/lib/rory/support.rb
CHANGED
@@ -31,16 +31,15 @@ module Rory
|
|
31
31
|
end
|
32
32
|
|
33
33
|
def encode_as_json(object)
|
34
|
-
|
35
|
-
object.map { |o| try_to_hash(o) }
|
36
|
-
else
|
37
|
-
try_to_hash(object)
|
38
|
-
end
|
39
|
-
hashed.to_json
|
34
|
+
try_to_hash(object).to_json
|
40
35
|
end
|
41
36
|
|
42
37
|
def try_to_hash(object)
|
43
|
-
if object.
|
38
|
+
if object.is_a?(Array)
|
39
|
+
object.map { |val| try_to_hash(val) }
|
40
|
+
elsif object.is_a?(Hash)
|
41
|
+
Hash[object.map { |key, val| [key, try_to_hash(val)] }]
|
42
|
+
elsif object.respond_to?(:to_hash)
|
44
43
|
object.to_hash
|
45
44
|
else
|
46
45
|
object
|
data/lib/rory/version.rb
CHANGED
@@ -236,5 +236,10 @@ describe Rory::Controller do
|
|
236
236
|
allow(subject).to receive(:json_requested?).and_return(true)
|
237
237
|
expect(subject.default_content_type).to eq('application/json')
|
238
238
|
end
|
239
|
+
|
240
|
+
it "returns 'application/json' if options has :json key" do
|
241
|
+
allow(subject).to receive(:json_requested?).and_return(false)
|
242
|
+
expect(subject.default_content_type(:json => 'woo')).to eq('application/json')
|
243
|
+
end
|
239
244
|
end
|
240
245
|
end
|
@@ -65,15 +65,15 @@ describe Rory::Support do
|
|
65
65
|
end
|
66
66
|
end
|
67
67
|
|
68
|
-
describe ".
|
69
|
-
it "returns given object
|
70
|
-
object = double
|
71
|
-
expect(described_class.
|
68
|
+
describe ".try_to_hash" do
|
69
|
+
it "returns given object if it does not respond to #to_hash" do
|
70
|
+
object = double
|
71
|
+
expect(described_class.try_to_hash(object)).to eq(object)
|
72
72
|
end
|
73
73
|
|
74
74
|
it "calls to_hash first if object responds to it" do
|
75
75
|
object = double(:to_hash => { 'april' => 'friday' })
|
76
|
-
expect(described_class.
|
76
|
+
expect(described_class.try_to_hash(object)).to eq({ 'april' => 'friday' })
|
77
77
|
end
|
78
78
|
|
79
79
|
it "converts each member of an array" do
|
@@ -81,7 +81,39 @@ describe Rory::Support do
|
|
81
81
|
double(:to_hash => :smurf),
|
82
82
|
double(:to_hash => :nerf)
|
83
83
|
]
|
84
|
-
expect(described_class.
|
84
|
+
expect(described_class.try_to_hash(object)).to eq([:smurf, :nerf])
|
85
|
+
end
|
86
|
+
|
87
|
+
it "converts deeply" do
|
88
|
+
object = [
|
89
|
+
{
|
90
|
+
:perf => double(:to_hash => :smurf),
|
91
|
+
:kerf => [
|
92
|
+
double(:to_hash => :plurf),
|
93
|
+
'yurf'
|
94
|
+
],
|
95
|
+
:erf => { :burf => double(:to_hash => :wurf) }
|
96
|
+
},
|
97
|
+
double(:to_hash => :nerf)
|
98
|
+
]
|
99
|
+
expect(described_class.try_to_hash(object)).to eq(
|
100
|
+
[
|
101
|
+
{
|
102
|
+
:perf => :smurf,
|
103
|
+
:kerf => [ :plurf, 'yurf' ],
|
104
|
+
:erf => { :burf => :wurf }
|
105
|
+
},
|
106
|
+
:nerf
|
107
|
+
]
|
108
|
+
)
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
112
|
+
describe ".encode_as_json" do
|
113
|
+
it "calls #try_to_hash on object then jsonifies" do
|
114
|
+
foo_hashed = double(:to_json => :jsonified)
|
115
|
+
allow(described_class).to receive(:try_to_hash).with(:foo).and_return(foo_hashed)
|
116
|
+
expect(described_class.encode_as_json(:foo)).to eq(:jsonified)
|
85
117
|
end
|
86
118
|
end
|
87
119
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rory
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ravi Gadad
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-03-
|
11
|
+
date: 2015-03-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rack
|