cynic 0.0.3.4 → 0.0.3.5
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/cynic/app.rb +8 -24
- data/lib/cynic/controller.rb +5 -0
- data/lib/cynic/response.rb +26 -2
- data/lib/cynic/version.rb +1 -1
- data/spec/lib/cynic/controller_spec.rb +4 -3
- data/spec/lib/cynic/response_spec.rb +18 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4d3f7a1b07f7ec9818bdda6bd95a0f8699ad8446
|
4
|
+
data.tar.gz: 46214dc5a9ed1b61e18f652e4bfd96cfc699340b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 78b60f352309b42f6b0229a694a5b09f9b2736aaa06029af31b51dcdc6ff16e2b2a5ffbde19cad4d49bfd0de5577bed1940d785bf389fc563186f66dc6041b0c
|
7
|
+
data.tar.gz: a600c0bd234a9b9aa29dc5e6a0e15f8063f10e6fc43cd7b3f761687a3cbb6a3681944e3c8c9d5f677b4e280466d2bec3d5ee5878f3e18d20200aed038295bc9d
|
data/lib/cynic/app.rb
CHANGED
@@ -18,47 +18,31 @@ module Cynic
|
|
18
18
|
|
19
19
|
def call(env)
|
20
20
|
@env = env
|
21
|
-
|
21
|
+
response.send
|
22
22
|
end
|
23
23
|
|
24
24
|
def request
|
25
|
-
|
25
|
+
Rack::Request.new(@env)
|
26
26
|
end
|
27
27
|
|
28
28
|
def routing_to_request
|
29
29
|
routing.go_to request.request_method.downcase.to_sym, @env["REQUEST_PATH"]
|
30
30
|
end
|
31
31
|
|
32
|
-
def send_response
|
33
|
-
[status, headers, response]
|
34
|
-
end
|
35
|
-
|
36
32
|
def response
|
37
|
-
Response.new(execute_controller_actions)
|
33
|
+
Response.new(execute_controller_actions, request)
|
38
34
|
end
|
39
35
|
|
40
36
|
def execute_controller_actions
|
41
37
|
route = self.routing_to_request
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
end
|
46
|
-
route.object.request = request
|
38
|
+
|
39
|
+
route.params.each do |k,v|
|
40
|
+
request.update_param(k, v)
|
47
41
|
end
|
42
|
+
route.object.request = request
|
43
|
+
|
48
44
|
route.object.response(route.method)
|
49
45
|
end
|
50
46
|
|
51
|
-
def status
|
52
|
-
200
|
53
|
-
end
|
54
|
-
|
55
|
-
def content_type
|
56
|
-
request.content_type || "text/html"
|
57
|
-
end
|
58
|
-
|
59
|
-
def headers
|
60
|
-
{"CONTENT-TYPE" => content_type}
|
61
|
-
end
|
62
|
-
|
63
47
|
end
|
64
48
|
end
|
data/lib/cynic/controller.rb
CHANGED
@@ -3,6 +3,7 @@ module Cynic
|
|
3
3
|
attr_accessor :request
|
4
4
|
class << self
|
5
5
|
attr_accessor :before_actions
|
6
|
+
|
6
7
|
def before_actions
|
7
8
|
@before_actions ||= Hash.new { Set.new }
|
8
9
|
end
|
@@ -32,6 +33,10 @@ module Cynic
|
|
32
33
|
end
|
33
34
|
|
34
35
|
def params
|
36
|
+
request.params.each do |k,v|
|
37
|
+
request.update_param(k.to_sym, v) if k.is_a? String
|
38
|
+
end
|
39
|
+
|
35
40
|
request.params
|
36
41
|
end
|
37
42
|
|
data/lib/cynic/response.rb
CHANGED
@@ -1,11 +1,35 @@
|
|
1
1
|
module Cynic
|
2
2
|
class Response
|
3
|
-
attr_reader :body
|
4
|
-
|
3
|
+
attr_reader :body, :content_type, :headers, :status
|
4
|
+
|
5
|
+
def initialize(body, request)
|
5
6
|
@body = body
|
7
|
+
@content_type = set_content_type(request)
|
6
8
|
end
|
9
|
+
|
7
10
|
def each(&block)
|
8
11
|
block.call @body
|
9
12
|
end
|
13
|
+
|
14
|
+
def status
|
15
|
+
200
|
16
|
+
end
|
17
|
+
|
18
|
+
def set_content_type(request)
|
19
|
+
if request.params.has_key? "format"
|
20
|
+
"text/#{request.params['format']}"
|
21
|
+
else
|
22
|
+
request.content_type =~ /text/ ? request.content_type : "text/html"
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def headers
|
27
|
+
{"CONTENT-TYPE" => content_type}
|
28
|
+
end
|
29
|
+
|
30
|
+
def send
|
31
|
+
[status, headers, self]
|
32
|
+
end
|
33
|
+
|
10
34
|
end
|
11
35
|
end
|
data/lib/cynic/version.rb
CHANGED
@@ -13,16 +13,17 @@ end
|
|
13
13
|
|
14
14
|
describe Cynic::Controller do
|
15
15
|
let(:controller) { CynicController.new }
|
16
|
+
let(:env) { {"REQUEST_METHOD" => "GET", "REQUEST_PATH" => "/cynic", "rack.input" => "wtf", "QUERY_STRING" => "id=1", "CONTENT_TYPE" => "text/json"} }
|
17
|
+
|
16
18
|
before { CynicController.instance_variable_set(:@before_actions, nil)}
|
17
19
|
|
18
20
|
describe "#request" do
|
19
21
|
before {
|
20
|
-
request =
|
21
|
-
request.stub(:params) { {id: 1} }
|
22
|
+
request = Rack::Request.new(env)
|
22
23
|
controller.request = request
|
23
24
|
}
|
24
25
|
it "has params" do
|
25
|
-
expect(controller.params).to eq
|
26
|
+
expect(controller.params[:id]).to eq "1"
|
26
27
|
end
|
27
28
|
end
|
28
29
|
describe "#render" do
|
@@ -1,7 +1,8 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Cynic::Response do
|
4
|
-
let(:
|
4
|
+
let(:env) { {"REQUEST_METHOD" => "GET", "REQUEST_PATH" => "/cynic", "rack.input" => "wtf", "CONTENT_TYPE" => "text/json"} }
|
5
|
+
let(:response) { Cynic::Response.new("This is the body", Rack::Request.new(env)) }
|
5
6
|
describe "#each" do
|
6
7
|
it "responds" do
|
7
8
|
expect(response).to respond_to :each
|
@@ -11,4 +12,20 @@ describe Cynic::Response do
|
|
11
12
|
expect(response.each {|k| k }).to eq "This is the body"
|
12
13
|
end
|
13
14
|
end
|
15
|
+
|
16
|
+
describe "content_type" do
|
17
|
+
it "sets it to json" do
|
18
|
+
expect(response.content_type).to eq "text/json"
|
19
|
+
end
|
20
|
+
|
21
|
+
it "sets it to html if unknown" do
|
22
|
+
env["CONTENT_TYPE"] = "app/something"
|
23
|
+
expect(response.content_type).to eq "text/html"
|
24
|
+
end
|
25
|
+
|
26
|
+
it "the params takes prority" do
|
27
|
+
env["QUERY_STRING"] = "format=jsonp"
|
28
|
+
expect(response.content_type).to eq "text/jsonp"
|
29
|
+
end
|
30
|
+
end
|
14
31
|
end
|