Class: Amber::Switch
- Inherits:
-
Object
show all
- Defined in:
- lib/amber/switch.rb
Defined Under Namespace
Modules: ContentDelegate
Classes: Content, Request, Response
Instance Method Summary
collapse
Instance Method Details
#query(request) ⇒ Object
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
# File 'lib/amber/switch.rb', line 2
def query(request)
if request.is_a? Amber::Switch::Request
result = nil
case request
when Amber::Switch::Request::Get
result = self.request(request.url, request.method, request.)
when Amber::Switch::Request::Post
body = request.content.is_a?(Amber::Switch::Content) ? request.content.body : nil
result = self.request(request.url, request.method, request., body)
end
if result
response = Amber::Switch::Response.new
response.status = result["status"]
response. = result["header"]
response_content_type = result["content_type"].is_a?(Array) ? result["content_type"].first : result["content_type"].to_s
case response_content_type
when Amber::Switch::Content::JSON_CONTENT
response.content = Amber::Switch::Content::Json.new
response.content.body = result["body"]
else
response.content = Amber::Switch::Content::Text.new
response.content.body = result["body"]
end
return response
end
end
p "#{request} should be an instance of Amber::Switch::Request"
return
end
|
#request(url, method, header = {}, body = nil) ⇒ Object
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
# File 'lib/amber/switch.rb', line 33
def request(url, method, = {}, body = nil)
request = nil
uri = URI(url)
response = {
"status" => false,
"code" => 400,
"content_type" => nil,
"header" => {},
"body" => nil
}
case method
when Amber::Switch::Request::GET_METHOD
request = Net::HTTP::Get.new uri
when Amber::Switch::Request::POST_METHOD
request = Net::HTTP::Post.new uri
end
if request
.each do |key, value|
request[key] = value
end
request.body = body if body
result = Net::HTTP.start(uri.hostname, uri.port) do |http|
http.request(request)
end
case result
when Net::HTTPSuccess
response["status"] = true
response["code"] = result.code.to_i
response["content_type"] = result.content_type
response["header"] = result.to_hash
response["body"] = result.body
end
end
response
end
|