plz 0.0.5 → 0.0.6
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/CHANGELOG.md +8 -0
- data/lib/plz.rb +2 -1
- data/lib/plz/command.rb +29 -3
- data/lib/plz/command_builder.rb +19 -1
- data/lib/plz/error.rb +1 -1
- data/lib/plz/response_renderer.rb +97 -0
- data/lib/plz/version.rb +1 -1
- data/plz.gemspec +1 -0
- metadata +17 -3
- data/lib/plz/response.rb +0 -68
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6fed69be3c08f69644d4a0324f6cb595922227b5
|
4
|
+
data.tar.gz: 5b55fa2b2532c5179af56a384188aabfe995ee84
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f1f9b49e49ed042fffc77b83416ffb977c12c4977cb8048475bad1184366a8d8d94fe8627dc84569457e3c2ee7ad1ea58107498e302940d6185114e29ef3f80b
|
7
|
+
data.tar.gz: 616d398921414557c4da80cc82163ff2c3cbaac42f814185ed3abe86bbbf5fd48edbafdc9af5b058a54e7d3d08be421dcc29900e93952b7a71afc5bcd6d54ccb
|
data/CHANGELOG.md
CHANGED
data/lib/plz.rb
CHANGED
@@ -11,6 +11,7 @@ require "pathname"
|
|
11
11
|
require "rack"
|
12
12
|
require "rainbow"
|
13
13
|
require "rouge"
|
14
|
+
require "slop"
|
14
15
|
require "yaml"
|
15
16
|
|
16
17
|
require "plz/error"
|
@@ -18,5 +19,5 @@ require "plz/arguments"
|
|
18
19
|
require "plz/command"
|
19
20
|
require "plz/command_builder"
|
20
21
|
require "plz/error_command"
|
21
|
-
require "plz/
|
22
|
+
require "plz/response_renderer"
|
22
23
|
require "plz/version"
|
data/lib/plz/command.rb
CHANGED
@@ -5,18 +5,29 @@ module Plz
|
|
5
5
|
# @param method [String]
|
6
6
|
# @param base_url [String]
|
7
7
|
# @param path [String]
|
8
|
-
|
8
|
+
# @param options [Hash]
|
9
|
+
def initialize(headers: nil, params: nil, method: nil, base_url: nil, path: nil, options: nil)
|
9
10
|
@headers = headers
|
10
11
|
@params = params
|
11
12
|
@method = method
|
12
13
|
@base_url = base_url
|
13
14
|
@path = path
|
15
|
+
@options = options
|
14
16
|
end
|
15
17
|
|
16
18
|
# Sends an HTTP request and logs out the response
|
17
19
|
def call
|
18
|
-
|
19
|
-
|
20
|
+
response = client.send(@method.downcase, @path, @params, @headers)
|
21
|
+
print ResponseRenderer.call(
|
22
|
+
status: response.status,
|
23
|
+
headers: response.headers,
|
24
|
+
body: response.body,
|
25
|
+
response_header: flag_to_show_response_header,
|
26
|
+
response_body: flag_to_show_response_body,
|
27
|
+
color: flag_to_color_response,
|
28
|
+
)
|
29
|
+
rescue Faraday::ConnectionFailed => exception
|
30
|
+
puts exception
|
20
31
|
end
|
21
32
|
|
22
33
|
private
|
@@ -29,5 +40,20 @@ module Plz
|
|
29
40
|
connection.adapter :net_http
|
30
41
|
end
|
31
42
|
end
|
43
|
+
|
44
|
+
# @return [true, false]
|
45
|
+
def flag_to_show_response_header
|
46
|
+
!@options[:"no-response-header"]
|
47
|
+
end
|
48
|
+
|
49
|
+
# @return [true, false]
|
50
|
+
def flag_to_show_response_body
|
51
|
+
!@options[:"no-response-body"]
|
52
|
+
end
|
53
|
+
|
54
|
+
# @return [true, false]
|
55
|
+
def flag_to_color_response
|
56
|
+
!@options[:"no-color"]
|
57
|
+
end
|
32
58
|
end
|
33
59
|
end
|
data/lib/plz/command_builder.rb
CHANGED
@@ -3,7 +3,8 @@ module Plz
|
|
3
3
|
SCHEMA_FILE_PATH_PATTERN = "schema.{json,yml}"
|
4
4
|
|
5
5
|
# Builds callable command object from given ARGV
|
6
|
-
# @return [Plz::Command]
|
6
|
+
# @return [Plz::Command, Plz::ErrorCommand]
|
7
|
+
# @note This is a shortcut for #call method
|
7
8
|
# @example
|
8
9
|
# Plz::CommandBuilder.call(ARGV).call
|
9
10
|
def self.call(arguments)
|
@@ -25,6 +26,7 @@ module Plz
|
|
25
26
|
|
26
27
|
# @return [Plz::Command] Callable command object
|
27
28
|
def call
|
29
|
+
exit_if_help
|
28
30
|
validate!
|
29
31
|
Command.new(
|
30
32
|
method: method,
|
@@ -32,6 +34,7 @@ module Plz
|
|
32
34
|
path: path,
|
33
35
|
headers: headers,
|
34
36
|
params: request_params,
|
37
|
+
options: options,
|
35
38
|
)
|
36
39
|
rescue Error => error
|
37
40
|
ErrorCommand.new(error)
|
@@ -199,5 +202,20 @@ module Plz
|
|
199
202
|
def arguments
|
200
203
|
@arguments ||= Arguments.new(@argv)
|
201
204
|
end
|
205
|
+
|
206
|
+
# @return [Hash] Command line options
|
207
|
+
def options
|
208
|
+
@options ||= Slop.parse!(@argv, help: true) do
|
209
|
+
banner Error::USAGE
|
210
|
+
on "no-response-header", "Hide response header"
|
211
|
+
on "no-response-body", "Hide response body"
|
212
|
+
on "no-color", "Disable coloring output"
|
213
|
+
end.to_hash
|
214
|
+
end
|
215
|
+
|
216
|
+
# Display the help message and exits the program if --help or -h given
|
217
|
+
def exit_if_help
|
218
|
+
options
|
219
|
+
end
|
202
220
|
end
|
203
221
|
end
|
data/lib/plz/error.rb
CHANGED
@@ -0,0 +1,97 @@
|
|
1
|
+
module Plz
|
2
|
+
class ResponseRenderer
|
3
|
+
# Shortcut for #call method
|
4
|
+
def self.call(*args)
|
5
|
+
new(*args).call
|
6
|
+
end
|
7
|
+
|
8
|
+
# @param status [Fixnum] Status code
|
9
|
+
# @param headers [Hash] Response header fields
|
10
|
+
# @param body [Array, Hash] JSON decoded response body
|
11
|
+
# @param response_header [true, false] Flag to show response header
|
12
|
+
# @param response_body [true, false] Flag to show response body
|
13
|
+
# @param color [true, false] Flag to color response body
|
14
|
+
def initialize(status: nil, headers: nil, body: nil, response_header: nil, response_body: nil, color: nil)
|
15
|
+
@status = status
|
16
|
+
@headers = headers
|
17
|
+
@body = body
|
18
|
+
@show_response_header = response_header
|
19
|
+
@show_response_body = response_body
|
20
|
+
@color_response = color
|
21
|
+
end
|
22
|
+
|
23
|
+
# Renders response with given options
|
24
|
+
# @return [String] Rendered output
|
25
|
+
def call
|
26
|
+
template % {
|
27
|
+
status: status,
|
28
|
+
headers: headers,
|
29
|
+
body: body,
|
30
|
+
}
|
31
|
+
end
|
32
|
+
|
33
|
+
private
|
34
|
+
|
35
|
+
# @return [String] Template for embedding variables, changing by options
|
36
|
+
def template
|
37
|
+
str = ""
|
38
|
+
str << <<-EOS.strip_heredoc if @show_response_header
|
39
|
+
HTTP/1.1 %{status}
|
40
|
+
%{headers}
|
41
|
+
EOS
|
42
|
+
str << "\n" if @show_response_header && @show_response_body
|
43
|
+
str << "%{body}" if @show_response_body
|
44
|
+
str
|
45
|
+
end
|
46
|
+
|
47
|
+
# @return [String]
|
48
|
+
# @example
|
49
|
+
# headers #=> ["Content-Type: application/json"]
|
50
|
+
def headers
|
51
|
+
@headers.sort_by do |key, value|
|
52
|
+
key
|
53
|
+
end.map do |key, value|
|
54
|
+
"%{key}: %{value}" % {
|
55
|
+
key: Rainbow(key.split("-").map(&:camelize).join("-")).underline,
|
56
|
+
value: Rainbow(value).green,
|
57
|
+
}
|
58
|
+
end.join("\n")
|
59
|
+
end
|
60
|
+
|
61
|
+
# @return [String]
|
62
|
+
def status
|
63
|
+
Rainbow("#{@status} #{status_in_words}").bright
|
64
|
+
end
|
65
|
+
|
66
|
+
# @return [String] Words for its status code
|
67
|
+
def status_in_words
|
68
|
+
Rack::Utils::HTTP_STATUS_CODES[@status]
|
69
|
+
end
|
70
|
+
|
71
|
+
# @return [String]
|
72
|
+
def body
|
73
|
+
if @color_response
|
74
|
+
Rouge::Formatters::Terminal256.format(
|
75
|
+
Rouge::Lexers::Javascript.new.lex(plain_body),
|
76
|
+
theme: "github"
|
77
|
+
)
|
78
|
+
else
|
79
|
+
plain_body
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
# @return [String] Pretty-printed JSON body
|
84
|
+
def plain_body
|
85
|
+
JSON.pretty_generate(@body) + "\n"
|
86
|
+
end
|
87
|
+
|
88
|
+
# Overridden to disable coloring
|
89
|
+
def Rainbow(str)
|
90
|
+
if @color_response
|
91
|
+
super
|
92
|
+
else
|
93
|
+
Rainbow::NullPresenter.new(str.to_s)
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
data/lib/plz/version.rb
CHANGED
data/plz.gemspec
CHANGED
@@ -23,6 +23,7 @@ Gem::Specification.new do |spec|
|
|
23
23
|
spec.add_dependency "rack"
|
24
24
|
spec.add_dependency "rainbow"
|
25
25
|
spec.add_dependency "rouge"
|
26
|
+
spec.add_dependency "slop"
|
26
27
|
spec.add_development_dependency "bundler", "~> 1.6"
|
27
28
|
spec.add_development_dependency "rake"
|
28
29
|
spec.add_development_dependency "rspec", "2.14.1"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: plz
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryo Nakamura
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-06-
|
11
|
+
date: 2014-06-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -108,6 +108,20 @@ dependencies:
|
|
108
108
|
- - ">="
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: slop
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :runtime
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
111
125
|
- !ruby/object:Gem::Dependency
|
112
126
|
name: bundler
|
113
127
|
requirement: !ruby/object:Gem::Requirement
|
@@ -186,7 +200,7 @@ files:
|
|
186
200
|
- lib/plz/command_builder.rb
|
187
201
|
- lib/plz/error.rb
|
188
202
|
- lib/plz/error_command.rb
|
189
|
-
- lib/plz/
|
203
|
+
- lib/plz/response_renderer.rb
|
190
204
|
- lib/plz/version.rb
|
191
205
|
- plz.gemspec
|
192
206
|
- schema.yml
|
data/lib/plz/response.rb
DELETED
@@ -1,68 +0,0 @@
|
|
1
|
-
module Plz
|
2
|
-
class Response
|
3
|
-
TEMPLATE = <<-EOS.strip_heredoc
|
4
|
-
HTTP/1.1 %{status}
|
5
|
-
%{headers}
|
6
|
-
|
7
|
-
%{body}
|
8
|
-
EOS
|
9
|
-
|
10
|
-
# @param [Faraday::Response]
|
11
|
-
def initialize(raw)
|
12
|
-
@raw = raw
|
13
|
-
end
|
14
|
-
|
15
|
-
# @return [String]
|
16
|
-
def render
|
17
|
-
TEMPLATE % {
|
18
|
-
status: status,
|
19
|
-
headers: headers.join("\n"),
|
20
|
-
body: body,
|
21
|
-
}
|
22
|
-
end
|
23
|
-
|
24
|
-
private
|
25
|
-
|
26
|
-
# @return [Array<String>]
|
27
|
-
# @example
|
28
|
-
# headers #=> ["Content-Type: application/json"]
|
29
|
-
def headers
|
30
|
-
@raw.headers.sort_by do |key, value|
|
31
|
-
key
|
32
|
-
end.map do |key, value|
|
33
|
-
"%{key}: %{value}" % {
|
34
|
-
key: Rainbow(key.split("-").map(&:camelize).join("-")).underline,
|
35
|
-
value: Rainbow(value).green,
|
36
|
-
}
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
# @return [String]
|
41
|
-
def status
|
42
|
-
Rainbow("#{status_code} #{status_in_words}").bright
|
43
|
-
end
|
44
|
-
|
45
|
-
# @return [Fixnum]
|
46
|
-
def status_code
|
47
|
-
@raw.status
|
48
|
-
end
|
49
|
-
|
50
|
-
# @return [String] Words for its status code
|
51
|
-
def status_in_words
|
52
|
-
Rack::Utils::HTTP_STATUS_CODES[@raw.status]
|
53
|
-
end
|
54
|
-
|
55
|
-
# @return [String]
|
56
|
-
def body
|
57
|
-
Rouge::Formatters::Terminal256.format(
|
58
|
-
Rouge::Lexers::Javascript.new.lex(plain_body),
|
59
|
-
theme: "github"
|
60
|
-
)
|
61
|
-
end
|
62
|
-
|
63
|
-
# @return [String] Pretty-printed JSON body
|
64
|
-
def plain_body
|
65
|
-
JSON.pretty_generate(@raw.body)
|
66
|
-
end
|
67
|
-
end
|
68
|
-
end
|