curltoruby 0.1.0

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 4f569368c3d18e1596bb1ad213e95d27f12a72d51424e2004a1bbc0eea650db3
4
+ data.tar.gz: ff6108b7fa7510497bb1debda11c8e73060b4e0b39d7044f6935f0d80125d53b
5
+ SHA512:
6
+ metadata.gz: b6618d9847b8b5a5ac5e3d187591c42e3fb48bc0fb90de6a6d24b32abdaf91c052683a44114e7a12fee048d30194bd1ddb7decf2347fd98312ac961a3f101875
7
+ data.tar.gz: 714c5c2cbb403aaa61eca889129d542de05ca6c6c03c3f815e63bd21c9dfc3254bddf9ce1e912bead111525161477fbd46c112f9452fad31a7ac57ba135c9767
checksums.yaml.gz.sig ADDED
Binary file
data/lib/curltoruby.rb ADDED
@@ -0,0 +1,84 @@
1
+ #!usr/bin/env ruby
2
+
3
+ # file: curltoruby.rb
4
+
5
+ # description: Inspired by jhawthorn's curl-to-ruby.
6
+ # see https://jhawthorn.github.io/curl-to-ruby/
7
+
8
+
9
+ require 'lineparser'
10
+ require 'clipboard'
11
+
12
+
13
+ class CurlToRuby
14
+
15
+ def initialize(s)
16
+ @h = parse(s)
17
+ @s = build_code(@h)
18
+ end
19
+
20
+ def to_h()
21
+ @h
22
+ end
23
+
24
+ def to_s()
25
+
26
+ Clipboard.copy @s
27
+ puts 'copied to clipboard'
28
+ @s
29
+
30
+ end
31
+
32
+ private
33
+
34
+ def build_code(h)
35
+
36
+ s=<<EOF
37
+ require 'net/http'
38
+ require 'uri'
39
+
40
+ uri = URI.parse('#{h[:url]}')
41
+ request = Net::HTTP::Post.new(uri)
42
+ request.body = '#{h[:body]}'
43
+ request.content_type = "application/x-www-form-urlencoded; charset=UTF-8"
44
+ EOF
45
+
46
+ headers = @h[:header].map do |x|
47
+ key, value = x.split(/: +/,2)
48
+ "request[\"%s\"] = \"%s\"" % [key, value.gsub(/"/,'\"')]
49
+ end.join("\n")
50
+
51
+ s2=<<EOF
52
+ req_options = {
53
+ use_ssl: uri.scheme == "https",
54
+ }
55
+
56
+ response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
57
+ http.request(request)
58
+ end
59
+
60
+ # response.code
61
+ # response.body
62
+ EOF
63
+
64
+ s + "\n" + headers + "\n" + s2
65
+
66
+ end
67
+
68
+ def parse(raws)
69
+
70
+ s = raws.gsub(/^\s+/,'')
71
+
72
+ patterns = [
73
+ [:root, /(?<=curl ')([^']+)/, :url],
74
+ [:all, /-H '([^']+)/, :header],
75
+ [:all, /--data-raw '([^']+)/, :body]
76
+ ]
77
+
78
+ lp = LineParser.new patterns
79
+ lp.parse s
80
+ lp.to_h
81
+
82
+ end
83
+
84
+ end
data.tar.gz.sig ADDED
Binary file
metadata ADDED
@@ -0,0 +1,110 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: curltoruby
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - James Robertson
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain:
11
+ - |
12
+ -----BEGIN CERTIFICATE-----
13
+ MIIEXjCCAsagAwIBAgIBATANBgkqhkiG9w0BAQsFADAsMSowKAYDVQQDDCFnZW1t
14
+ YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMjIwNTE4MTgyNjE1WhcN
15
+ MjMwNTE4MTgyNjE1WjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
16
+ cnRzb24vREM9ZXUwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQCSz05/
17
+ yrNYKkLrHxqSYS2AZ1H/oR8UnPF9RUr2hlKLSWQbUr6Bko25rm99q1DdG5k2y421
18
+ kRDFIFjdkQZIQQaLn2huUM9gCGqkNMNeicjjm8g4+lUZIdk9JKY3JhTuuyz4aQMJ
19
+ e3m3uwn27yeWKkh2xByQOhzeujzmdGoGJf2wCvvaA0HtPdZAxI9qCynIZoDkfHvV
20
+ ioMlJ66sOz+/17SsKi/q7e9LfuXpF3RGG0cHCE+bEXFylttbB9TF1p37DHiTNxnl
21
+ O58LOfQP85hO8Wc1NDoT5AcVAFGxyu+IjjmzvN5w1d1+bhWsXJ3QN7i1E20nsaQK
22
+ fAk3IDXdEka4sm1B4IMRoj4pPcOHVK6/9TF6TQYelWurIPLaGAkYjrLwoNAksVmt
23
+ +kCdvXdlu/z6DT/QWUhJGzKG/ESjWkXgXkohStkb4bbEXeb19MDrboeDC2tRD0PI
24
+ ykGjfX851+2PyFFA78etPovp2FYvL2VUCYg0mKNsJGN8QtxTGpMAxkr1tM8CAwEA
25
+ AaOBijCBhzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUNBOYWBen
26
+ 9fMcU25hbXxmPY87X+EwJgYDVR0RBB8wHYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0
27
+ c29uLmV1MCYGA1UdEgQfMB2BG2dlbW1hc3RlckBqYW1lc3JvYmVydHNvbi5ldTAN
28
+ BgkqhkiG9w0BAQsFAAOCAYEAcYcHsfU+LRZbBZ4O0kB8fueCkh5X1LR/GG/dHODZ
29
+ 3SuE9kABd/BONHprJvQziSYDgXLO+3MUcAiC+4BE7HJ7z5IcHl5G73tucg+SLPG3
30
+ wU+t+2yhXgjADAQYYAuOOix/EAeKKs0U+aM8XE/8qmUq3ctkyA99/Ru6ah0vd7Wm
31
+ GsqsRUFDeJLIHFZRJH/iFu35kdISNrbDGRAFaKNoTL4g8Ttt3U6WcoRTpOHqeCSm
32
+ VCN4GzJDW1CgrweeiDKJFj2k35XmFWNTJe0zDuNws+nUFPsg36jWgydUCHjr1UuC
33
+ PeP68Rb/HwJC89CXorFwf71UIV1l/lSyo7nBqxE4CRTOLvpD+epqEWeNgqDyE6f8
34
+ Fz3QD8bWaYfr87alNCyR7+/KnFdro/p3BVV6MSNmFJW1Lfmv0uRx1SKyz9qjb/ZG
35
+ DTFw0mmzJ61f/aZOWaYGhrg0GiDGz7H+D02hgfE5TEiNPDVqtX9gMTOLxxlRKU38
36
+ BxRpOlBnkLtQ7mXTeu2CADfP
37
+ -----END CERTIFICATE-----
38
+ date: 2022-05-18 00:00:00.000000000 Z
39
+ dependencies:
40
+ - !ruby/object:Gem::Dependency
41
+ name: lineparser
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: '0.2'
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: 0.2.0
50
+ type: :runtime
51
+ prerelease: false
52
+ version_requirements: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - "~>"
55
+ - !ruby/object:Gem::Version
56
+ version: '0.2'
57
+ - - ">="
58
+ - !ruby/object:Gem::Version
59
+ version: 0.2.0
60
+ - !ruby/object:Gem::Dependency
61
+ name: clipboard
62
+ requirement: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - "~>"
65
+ - !ruby/object:Gem::Version
66
+ version: '1.3'
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: 1.3.6
70
+ type: :runtime
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - "~>"
75
+ - !ruby/object:Gem::Version
76
+ version: '1.3'
77
+ - - ">="
78
+ - !ruby/object:Gem::Version
79
+ version: 1.3.6
80
+ description:
81
+ email: digital.robertson@gmail.com
82
+ executables: []
83
+ extensions: []
84
+ extra_rdoc_files: []
85
+ files:
86
+ - lib/curltoruby.rb
87
+ homepage: https://github.com/jrobertson/curltoruby
88
+ licenses:
89
+ - MIT
90
+ metadata: {}
91
+ post_install_message:
92
+ rdoc_options: []
93
+ require_paths:
94
+ - lib
95
+ required_ruby_version: !ruby/object:Gem::Requirement
96
+ requirements:
97
+ - - ">="
98
+ - !ruby/object:Gem::Version
99
+ version: '0'
100
+ required_rubygems_version: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - ">="
103
+ - !ruby/object:Gem::Version
104
+ version: '0'
105
+ requirements: []
106
+ rubygems_version: 3.2.22
107
+ signing_key:
108
+ specification_version: 4
109
+ summary: Inspired by jhawthorn's curl-to-ruby. see https://jhawthorn.github.io/curl-to-ruby/
110
+ test_files: []
metadata.gz.sig ADDED
Binary file