curlyrest 0.1.33 → 0.1.37
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/.gitignore +1 -0
- data/.rubocop.yml +7 -1
- data/Gemfile +2 -0
- data/Rakefile +2 -0
- data/curlyrest.gemspec +3 -1
- data/lib/curlyrest.rb +24 -24
- data/lib/curlyrest/version.rb +3 -1
- metadata +7 -5
- data/failing.txt +0 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f962af4bf3323d1e468ff1793f776c66c3526de3425aa8e9403c10becc4b2385
|
4
|
+
data.tar.gz: a433e2943f6fe2038b87ab52f40f6dd245d7cd2948f0639e008ed294b94faaf2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 611560868a36fdee9124bfe15fe4569118888ceb3138de7c480f05709b74bc2979984ba3cefed16838a7e1bcc6568bac13499816b6a91a9404d3d2bf2b2d5318
|
7
|
+
data.tar.gz: 469c72ee4ac5b2a70aee8adc5bbf66fd62244af93da9b448867daeaaef43d26e30533994c6fba778e93131c29e9b0f2e150c931ba7d7d3370e493ce3980da866
|
data/.gitignore
CHANGED
data/.rubocop.yml
CHANGED
@@ -1,11 +1,17 @@
|
|
1
|
+
AllCops:
|
2
|
+
NewCops: enable
|
3
|
+
SuggestExtensions: false
|
4
|
+
|
1
5
|
Style/FrozenStringLiteralComment:
|
2
6
|
Enabled: false
|
3
7
|
|
4
8
|
Metrics/BlockLength:
|
9
|
+
Max: 2000
|
5
10
|
Exclude:
|
11
|
+
- 'spec/*.rb'
|
12
|
+
- 'spec/**/*.rb'
|
6
13
|
- 'Rakefile'
|
7
14
|
- '**/*.rake'
|
8
|
-
- 'spec/**/*.rb'
|
9
15
|
- '*.gemspec'
|
10
16
|
|
11
17
|
Metrics/MethodLength:
|
data/Gemfile
CHANGED
data/Rakefile
CHANGED
data/curlyrest.gemspec
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
lib = File.expand_path('lib', __dir__)
|
2
4
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
5
|
require 'curlyrest/version'
|
@@ -7,7 +9,7 @@ Gem::Specification.new do |spec|
|
|
7
9
|
spec.version = Curlyrest::VERSION
|
8
10
|
spec.authors = ['Keith Williams']
|
9
11
|
spec.email = ['keithrw@comcast.net']
|
10
|
-
|
12
|
+
spec.required_ruby_version = ['>= 2.5.5', '< 3.0']
|
11
13
|
spec.summary =
|
12
14
|
'gem extending rest-client, allowing use/debug of curl for request'
|
13
15
|
spec.description =
|
data/lib/curlyrest.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'curlyrest/version'
|
2
4
|
require 'rest-client'
|
3
5
|
require 'byebug'
|
@@ -8,45 +10,42 @@ module Curlyrest
|
|
8
10
|
class CurlResponse
|
9
11
|
include Net::HTTPHeader
|
10
12
|
attr_reader :code, :http_version, :message, :headers
|
11
|
-
attr_accessor :body
|
13
|
+
attr_accessor :body
|
14
|
+
|
12
15
|
def initialize(http_version, status, message = '')
|
13
16
|
@message = message
|
14
17
|
@http_version = http_version
|
15
18
|
@code = status
|
16
19
|
@body = ''
|
17
|
-
@inflate = Zlib::Inflate.new(32 + Zlib::MAX_WBITS)
|
18
20
|
initialize_http_header nil
|
19
21
|
end
|
20
|
-
|
21
|
-
def unzip_body(gzip)
|
22
|
-
@body = @inflate.inflate(gzip)
|
23
|
-
end
|
24
22
|
end
|
25
23
|
|
26
24
|
# class for parsing curl responses
|
27
25
|
class CurlResponseParser
|
28
26
|
attr_accessor :response
|
27
|
+
|
29
28
|
def initialize(response)
|
30
29
|
@state = :read_status
|
31
30
|
@response = nil
|
32
|
-
@
|
31
|
+
@body_lines = []
|
32
|
+
@body = nil
|
33
33
|
parse(response)
|
34
34
|
end
|
35
35
|
|
36
|
+
def body
|
37
|
+
@body || @body_lines.join
|
38
|
+
end
|
39
|
+
|
36
40
|
def parse(response)
|
37
41
|
response.lines.each do |line|
|
38
42
|
parse_line(line)
|
39
43
|
end
|
40
|
-
|
41
|
-
if ce&.include?('gzip')
|
42
|
-
@response.unzip_body(@body)
|
43
|
-
else
|
44
|
-
@response.body = @body
|
45
|
-
end
|
44
|
+
@response.body = body
|
46
45
|
end
|
47
46
|
|
48
47
|
def parse_status(line)
|
49
|
-
re = %r{^HTTP
|
48
|
+
re = %r{^HTTP/(\d+|\d+\.\d+)\s(\d+)\s*(.*)$}
|
50
49
|
return unless re.match(line.chop)
|
51
50
|
|
52
51
|
r = Regexp.last_match(2)
|
@@ -64,19 +63,19 @@ module Curlyrest
|
|
64
63
|
return
|
65
64
|
end
|
66
65
|
/^([\w-]+):\s(.*)/ =~ line.chop
|
66
|
+
raise "invalid line while parsing headers: #{line}" unless Regexp.last_match
|
67
|
+
|
67
68
|
@response.add_field(Regexp.last_match(1), Regexp.last_match(2))
|
68
69
|
end
|
69
70
|
|
70
71
|
def parse_line(line)
|
71
72
|
case @state
|
72
73
|
when :body
|
73
|
-
@
|
74
|
+
@body_lines << line
|
74
75
|
when :read_status
|
75
76
|
parse_status(line)
|
76
77
|
when :headers
|
77
78
|
parse_headers(line)
|
78
|
-
else
|
79
|
-
puts "parser error on #{line}"
|
80
79
|
end
|
81
80
|
end
|
82
81
|
end
|
@@ -84,6 +83,7 @@ module Curlyrest
|
|
84
83
|
# class for transmitting curl requests
|
85
84
|
class CurlTransmitter
|
86
85
|
attr_accessor :options, :headers, :line, :timeout
|
86
|
+
|
87
87
|
def initialize(uri, method, headers, payload)
|
88
88
|
@payload = payload
|
89
89
|
@method = method
|
@@ -105,14 +105,13 @@ module Curlyrest
|
|
105
105
|
headers, options = opts_from_headers(headers)
|
106
106
|
headers.delete('No-Restclient-Headers') ||
|
107
107
|
headers.delete(:no_restclient_headers)
|
108
|
-
headers.delete('Accept-Encoding') ||
|
109
|
-
headers.delete('accept_encoding')
|
110
108
|
[headers, options]
|
111
109
|
end
|
112
110
|
|
113
111
|
def curl_data(payload)
|
114
112
|
return nil unless payload
|
115
113
|
return "-d '#{payload}'" unless payload.include?('\'')
|
114
|
+
|
116
115
|
File.write('/tmp/curl_quoted_binary', payload)
|
117
116
|
'--data-binary @/tmp/curl_quoted_binary'
|
118
117
|
end
|
@@ -124,19 +123,19 @@ module Curlyrest
|
|
124
123
|
def curl_start
|
125
124
|
timeout = options[:timeout]
|
126
125
|
timeout_str = ''
|
127
|
-
timeout_str
|
128
|
-
"curl -isSL -X #{@method.upcase}#{timeout_str}"
|
126
|
+
timeout_str += " --max-time #{timeout}" if timeout
|
127
|
+
"curl -isSL -X #{@method.upcase}#{timeout_str} 2>&1"
|
129
128
|
end
|
130
129
|
|
131
130
|
def curl_headers(headers)
|
132
|
-
ret_headers = ' '
|
131
|
+
ret_headers = [' ']
|
133
132
|
headers.each { |k, v| ret_headers << "-H '#{k}: #{v}' " }
|
134
|
-
ret_headers
|
133
|
+
ret_headers.join
|
135
134
|
end
|
136
135
|
|
137
136
|
def curl_command
|
138
137
|
"#{curl_start}#{curl_proxy(@options[:proxy])}"\
|
139
|
-
|
138
|
+
"#{curl_headers(@headers)}'#{@uri}' #{curl_data(@payload&.to_s)}"
|
140
139
|
end
|
141
140
|
|
142
141
|
def exec_curl
|
@@ -151,6 +150,7 @@ module Curlyrest
|
|
151
150
|
def curl_transmit(uri, method, headers, payload)
|
152
151
|
ct = CurlTransmitter.new(uri, method, headers, payload)
|
153
152
|
r = ct.exec_curl
|
153
|
+
|
154
154
|
CurlResponseParser.new(r).response
|
155
155
|
end
|
156
156
|
end
|
data/lib/curlyrest/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: curlyrest
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.37
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Keith Williams
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-08-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: byebug
|
@@ -83,7 +83,6 @@ files:
|
|
83
83
|
- README.md
|
84
84
|
- Rakefile
|
85
85
|
- curlyrest.gemspec
|
86
|
-
- failing.txt
|
87
86
|
- lib/curlyrest.rb
|
88
87
|
- lib/curlyrest/version.rb
|
89
88
|
homepage: https://github.com/keithrw54/curlyrest.git
|
@@ -98,14 +97,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
98
97
|
requirements:
|
99
98
|
- - ">="
|
100
99
|
- !ruby/object:Gem::Version
|
101
|
-
version:
|
100
|
+
version: 2.5.5
|
101
|
+
- - "<"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '3.0'
|
102
104
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
103
105
|
requirements:
|
104
106
|
- - ">="
|
105
107
|
- !ruby/object:Gem::Version
|
106
108
|
version: '0'
|
107
109
|
requirements: []
|
108
|
-
rubygems_version: 3.0.
|
110
|
+
rubygems_version: 3.0.9
|
109
111
|
signing_key:
|
110
112
|
specification_version: 4
|
111
113
|
summary: gem extending rest-client, allowing use/debug of curl for request
|
data/failing.txt
DELETED
@@ -1,2 +0,0 @@
|
|
1
|
-
curl -isS -X POST -x http://l5d.us1.dev.cloudhealthtech.com:4140 -H 'content_type: application/json' -H 'l5d-dtab: /hh=>/ng/kwilliams' -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6IkRkcEFZdHAtWUIwdTNIbGxJOGczSkdUX2hkOTI5aERlRkpOUmR6REU3R1UifQ.eyJzdWIiOiJjcm46MjAxNzp1c2VyLzg5MjIxIiwib3JnIjoiY3JuOjIwMTc6b3JnYW5pemF0aW9uLzg5MzM1MzE5NzYyOSIsInJvbGUiOiJjcm46OnJvbGUvMyIsImlzcyI6ImNybjo6dG9rZW4tc2VydmljZS9wb2QiLCJhdWQiOiJjcm46OmFjY2Vzcy10b2tlbi9wb2QiLCJpYXQiOjE1NDM1ODYzMjQsImV4cCI6MTU0MzU4NzIyNCwianRpIjoiYjA1NmUwMWMtYTc0Ni00NjdjLWEwZmQtMzdlMGI1MmUyOGM5In0.EHjFcOSxfxuH9lFTq9RREP0NMofyAkAf0-czbvxZXvfe_7h6brnRFty6_TkGa3fXa3TK6rpWLrWLo2sIeEF2DW5UXYwXz0eMotObMjJVi30VtlYWQPJX1QpQgL97Wzxjb-OZ5buzBzXTWeV2vinDZPxjUhtqHz-TJHjU6jNSNBrDc6eofg_95rANzNjRXJp9JSd89mFq0qAcmQhtnQOAzvTouLViBcK0cwxzsK3ux4QLxS4_SKRGEdZ24tq2mlM8kNi2SB4T1qCX8hItrnCUaShOurB18SuxKdp6PjQmzyBVnnSPRqIgQJGqRSiGPCmHRuLmsm50lGSLnm95HzLP6ZYe6bxyQdFZp7_WIky7onV_EjkqaiPqeb8PqUIBYlYz-sI95vUs__hV8qe47LV7Yw9mB_d00hoDGruUN2XzMV4DLR-E4KMUnHrBD1mZK5gVOi7mx8nPhDYleFAl9d57oTWHMd-iT2NxSpE56Saq1peF2vKgV84nysWyCRf0XRyWsbwNbLL16mGJr56ZR6IbVKZ2tkHSBOiyJ2UIx-IfnAN2p1Y9GaKGsJoGPcRADy9p_ogbNIakH4j92T9RbXbAAjPluZBD9eVnwvejeiuoNMxZQwtV-D32l2jP8u6ZpRCQO2z5Hk0LKSZdxKsm0RQnT_T1n4G1GAxG5sab9zqbXLg' 'http://query-data/graphql' -d '{"query":"mutation ExecuteChql {executeChql (input: {chql: \"SELECT day, aws_regions, aws_charge_type, aws_billing_account, sum(cost) FROM costusage WHERE aws_regions = 'us-east-1' GROUP BY day, aws_regions, aws_charge_type, aws_billing_account ORDER BY aws_regions asc, aws_charge_type desc\"\n sources: [{crn: \"crn:2017:query-meta/dataset:AWS:CostUsageDaily\"\n alias: \"costusage\"}]\n clientMutationId: \"ignore\"}){ id }}"}'
|
2
|
-
HT
|