curltoruby 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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