faraday-cli 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +6 -1
- data/VERSION +1 -1
- data/bin/faraday-cli +56 -25
- data/faraday-cli.gemspec +1 -1
- data/lib/faraday/cli/middleware_fetcher.rb +6 -3
- data/lib/faraday/cli/middleware_fetcher/container.rb +6 -4
- data/prototype/.faraday.rb +8 -0
- data/prototype/config.ru +29 -0
- data/prototype/credentials.rb +21 -0
- metadata +4 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fd56916e841f94acb051ef3bba61c781365b4a33
|
4
|
+
data.tar.gz: 5e082dcee9e28df98d2f42d5a56b1c1c73424875
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a3829febeef5abbaa2b29f870e8a936c643a6ecea4c07621b076ca0ddcb8379af78f20aff2d78b66b18d4ce9b2363cfa25564fa3e595b67f4b9c5d302bcdd02a
|
7
|
+
data.tar.gz: 3647c38fe784742544750f762687538c803ecca19801ec05900602cbedbe2e28fe9794732a5d0ebcebf0cb9bbff33a6608a84556783d512d2bb50d3ec72aeeac
|
data/Gemfile
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.2.0
|
data/bin/faraday-cli
CHANGED
@@ -1,14 +1,13 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
end
|
2
|
+
# if ENV['DEVELOPER_ENV'] == 'true'
|
3
|
+
# $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
4
|
+
# end
|
6
5
|
|
7
6
|
require 'optparse'
|
8
7
|
require 'faraday/cli'
|
9
8
|
|
10
|
-
|
11
9
|
CLI_OPTIONS = {}
|
10
|
+
CLI_OPTIONS[:flags]= []
|
12
11
|
OptionParser.new do |o|
|
13
12
|
|
14
13
|
o.banner.concat(' <url>')
|
@@ -26,21 +25,38 @@ OptionParser.new do |o|
|
|
26
25
|
end
|
27
26
|
|
28
27
|
CLI_OPTIONS[:params]= []
|
29
|
-
o.on('-q','--query key=value','Pass Query key values to use in the request') do |raw_query_pair|
|
28
|
+
o.on('-q', '--query key=value', 'Pass Query key values to use in the request') do |raw_query_pair|
|
30
29
|
CLI_OPTIONS[:params].push(raw_query_pair.split('='))
|
31
30
|
end
|
32
31
|
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
32
|
+
o.on('-d', '--data PAYLOAD_STRING', 'HTTP POST data (H)') { |payload| CLI_OPTIONS[:body]= payload }
|
33
|
+
|
34
|
+
o.on('--upload_file KEY=FILE_PATH[:CONTENT_TYPE]', 'Pass File upload io in the request pointing to the given file') do |payload_file_path|
|
35
|
+
|
36
|
+
CLI_OPTIONS[:flags] << :multipart
|
37
|
+
|
38
|
+
parts = payload_file_path.split('=')
|
39
|
+
raw_file_path = parts.pop
|
40
|
+
key = parts.first
|
41
|
+
|
42
|
+
file_path, content_type = raw_file_path.split(':')
|
43
|
+
content_type ||= 'application/octet-stream'
|
44
|
+
|
45
|
+
file_stream_io = Faraday::UploadIO.new(File.realpath(file_path), content_type)
|
46
|
+
|
47
|
+
CLI_OPTIONS[:body] = {key => file_stream_io}
|
48
|
+
|
49
|
+
end
|
50
|
+
|
51
|
+
o.on('-A', '--user-agent STRING', 'Send User-Agent STRING to server (H)') do |user_agent|
|
52
|
+
CLI_OPTIONS[:http_headers] << ['User-Agent', user_agent]
|
53
|
+
end
|
54
|
+
|
55
|
+
o.on('-o', '--output FILE_PATH', 'Write to FILE instead of stdout') do |out_file_path|
|
56
|
+
$stdout.reopen(out_file_path, 'a+')
|
57
|
+
$stderr.reopen(out_file_path, 'a+')
|
58
|
+
end
|
59
|
+
|
44
60
|
# o.on('-x', '--proxy HOST:PORT', 'HOST[:PORT] Use proxy on given port') do |host_port_str|
|
45
61
|
# host, port = host_port_str.split(':')
|
46
62
|
# port = '80' if port.nil?
|
@@ -48,31 +64,46 @@ OptionParser.new do |o|
|
|
48
64
|
# CLI_OPTIONS[:proxy]= {host: host, port: port}
|
49
65
|
# end
|
50
66
|
|
67
|
+
o.on('-s', '--silent', "Silent mode (don't output anything)") { CLI_OPTIONS[:flags] << :silent }
|
68
|
+
|
69
|
+
CLI_OPTIONS[:config_file_paths]= []
|
70
|
+
o.on('-c', '--config FILE_PATH', 'File path to the .faraday.rb if you want use other than default') do |file_path|
|
71
|
+
CLI_OPTIONS[:config_file_paths] << File.realpath(file_path)
|
72
|
+
end
|
73
|
+
|
51
74
|
o.parse!
|
52
75
|
|
53
76
|
end
|
54
77
|
|
55
|
-
# p CLI_OPTIONS
|
56
|
-
# p ARGV
|
57
|
-
|
58
78
|
ALLOWED_HTTP_METHODS = %w(get head post put patch delete options)
|
59
79
|
raise('invalid http method given') unless ALLOWED_HTTP_METHODS.include?(CLI_OPTIONS[:http_method])
|
60
|
-
conn = Faraday.new
|
61
80
|
|
62
|
-
Faraday
|
81
|
+
connection = Faraday.new do |builder|
|
82
|
+
Faraday::CLI::MiddlewareFetcher.extend!(builder, *CLI_OPTIONS[:config_file_paths])
|
83
|
+
|
84
|
+
builder.request(:multipart) if CLI_OPTIONS[:flags].include?(:multipart)
|
85
|
+
builder.response :logger unless CLI_OPTIONS[:flags].include?(:silent)
|
86
|
+
|
87
|
+
builder.adapter(:net_http)
|
88
|
+
|
89
|
+
end
|
90
|
+
|
91
|
+
response = connection.public_send(CLI_OPTIONS[:http_method].downcase) do |request|
|
63
92
|
|
64
|
-
response = conn.public_send(CLI_OPTIONS[:http_method]) do |request|
|
65
93
|
request.url(ARGV[0])
|
66
94
|
|
67
95
|
CLI_OPTIONS[:http_headers].each do |key, value|
|
68
96
|
request.headers[key]=value
|
69
97
|
end
|
70
98
|
|
71
|
-
CLI_OPTIONS[:params].each do |key,value|
|
99
|
+
CLI_OPTIONS[:params].each do |key, value|
|
72
100
|
request.params[key]=value
|
73
101
|
end
|
74
102
|
|
103
|
+
request.body = CLI_OPTIONS[:body] unless CLI_OPTIONS[:body].nil?
|
104
|
+
|
75
105
|
end
|
76
106
|
|
77
107
|
|
78
|
-
$stdout.puts Faraday::CLI::ResponseFormatter.format(response)
|
108
|
+
$stdout.puts Faraday::CLI::ResponseFormatter.format(response) unless CLI_OPTIONS[:flags].include?(:silent)
|
109
|
+
exit(1) unless (200..299).include?(response.status)
|
data/faraday-cli.gemspec
CHANGED
@@ -11,7 +11,7 @@ Gem::Specification.new do |spec|
|
|
11
11
|
|
12
12
|
spec.summary = %q{Console line interface for faraday gem.}
|
13
13
|
spec.description = %q{Console line interface for faraday gem client so you can use your favorite middleware based ruby http client on the terminal!}
|
14
|
-
spec.homepage =
|
14
|
+
spec.homepage = 'https://github.com/adamluzsi/faraday-cli.rb'
|
15
15
|
|
16
16
|
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
17
17
|
spec.bindir = 'bin'
|
@@ -4,12 +4,15 @@ module Faraday::CLI::MiddlewareFetcher
|
|
4
4
|
|
5
5
|
require 'faraday/cli/middleware_fetcher/container'
|
6
6
|
|
7
|
-
def extend!(
|
7
|
+
def extend!(faraday_connection_builder, *config_file_paths)
|
8
8
|
|
9
9
|
file_name = '.faraday.rb'
|
10
|
-
container = Faraday::CLI::MiddlewareFetcher::Container.new(
|
10
|
+
container = Faraday::CLI::MiddlewareFetcher::Container.new(faraday_connection_builder)
|
11
11
|
|
12
|
-
case
|
12
|
+
case
|
13
|
+
|
14
|
+
when !config_file_paths.empty?
|
15
|
+
config_file_paths.each { |path| container.merge!(path) }
|
13
16
|
|
14
17
|
when File.exist?(File.join(Dir.pwd, file_name))
|
15
18
|
container.merge!(File.join(Dir.pwd, file_name))
|
@@ -2,14 +2,16 @@ require 'forwardable'
|
|
2
2
|
class Faraday::CLI::MiddlewareFetcher::Container
|
3
3
|
|
4
4
|
extend Forwardable
|
5
|
-
|
5
|
+
def_delegators :@builder, :use, :request, :response, :adapter
|
6
6
|
|
7
|
-
def initialize(
|
8
|
-
@builder =
|
7
|
+
def initialize(builder)
|
8
|
+
@builder = builder
|
9
9
|
end
|
10
10
|
|
11
11
|
def merge!(file_path)
|
12
|
-
|
12
|
+
Dir.chdir(File.dirname(file_path)) do
|
13
|
+
instance_eval(File.read(file_path))
|
14
|
+
end
|
13
15
|
end
|
14
16
|
|
15
17
|
end
|
data/prototype/config.ru
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
require_relative 'credentials'
|
2
|
+
|
3
|
+
require 'yaml'
|
4
|
+
require 'rack'
|
5
|
+
require 'escher/rack_middleware'
|
6
|
+
Escher::RackMiddleware.config do |c|
|
7
|
+
c.add_escher_authenticator { Escher::Auth.new(CredentialScope, AuthOptions) }
|
8
|
+
c.add_credential_updater { Escher::Keypool.new.get_key_db }
|
9
|
+
end
|
10
|
+
|
11
|
+
class YourAwesomeApp
|
12
|
+
|
13
|
+
def call(env)
|
14
|
+
puts YAML.dump(env)
|
15
|
+
response = Rack::Response.new
|
16
|
+
response.write 'OK'
|
17
|
+
response.status = 200
|
18
|
+
|
19
|
+
response.finish
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
|
24
|
+
use ECHO
|
25
|
+
use Escher::RackMiddleware
|
26
|
+
run YourAwesomeApp.new
|
27
|
+
|
28
|
+
#Rack::Server.start :app => YourAwesomeApp,
|
29
|
+
# :Port => ARGV[0].to_i
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'escher-keypool'
|
2
|
+
|
3
|
+
ENV['KEY_POOL'] = '[{"keyId":"EscherExample","secret":"TheBeginningOfABeautifulFriendship","acceptOnly":0}]'
|
4
|
+
ENV['ESCHEREXAMPLE_KEYID'] = 'EscherExample'
|
5
|
+
|
6
|
+
CredentialScope = 'example/credential/scope'
|
7
|
+
AuthOptions = {}
|
8
|
+
ESCHER_KEY = {api_key_id: 'EscherExample', api_secret: 'TheBeginningOfABeautifulFriendship'}
|
9
|
+
|
10
|
+
class ECHO
|
11
|
+
|
12
|
+
def initialize(app)
|
13
|
+
@app = app
|
14
|
+
end
|
15
|
+
|
16
|
+
def call(env)
|
17
|
+
puts YAML.dump env
|
18
|
+
@app.call(env)
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: faraday-cli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Adam Luzsi
|
@@ -123,6 +123,9 @@ files:
|
|
123
123
|
- lib/faraday/cli/middleware_fetcher/container.rb
|
124
124
|
- lib/faraday/cli/response_formatter.rb
|
125
125
|
- lib/faraday/cli/version.rb
|
126
|
+
- prototype/.faraday.rb
|
127
|
+
- prototype/config.ru
|
128
|
+
- prototype/credentials.rb
|
126
129
|
homepage: https://github.com/adamluzsi/faraday-cli.rb
|
127
130
|
licenses: []
|
128
131
|
metadata: {}
|