xcurl 1.0.7 → 1.0.9

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 51c16433d41b618dd392ee5c5947abe0ff49f1e4ae85d2be57fb01397e796be5
4
- data.tar.gz: 1e8b22f003337513720186006f6bf48f15d177f2d8857d91b198e52d3777bc48
3
+ metadata.gz: 00dbbfa82619c1c3f8277f83f3f40517e9bf80dd004f30d93b61178a9e8b1dea
4
+ data.tar.gz: 8a71222f33550a6c107fbf55ca366a2d10e75bc39f3939de62ea766cd33091b0
5
5
  SHA512:
6
- metadata.gz: 2964a90ef8a8bfe770a0f67f12f7e47b01d246618078e283c5c7b1132907213733498a1fc41b92c0e89f2263d28b209e12e5b8cf06711164eea0c9eb27a3ee3e
7
- data.tar.gz: 6e55675649b012750edd9dd7f325e266bf4c9e5b8f40da2f0d3e2244192ecb84235d26ae2d2721919f354c771eb7bf280572caadeb307054e9115152aefcb277
6
+ metadata.gz: 69e9152ede089f4253656b3b96ef9feeda084ac19c1b33bc90278ea547bca5e75c45ab5b07ab01be6ed83a364ffec5f1ae11b735a2c0cecccbb9d27fdc0dd925
7
+ data.tar.gz: 308ab10c2fa45968f11163b3fef1d65a4fe9dd18dcb98f53f6f64be0e2c5696470319d3f67b3258a66cfa3d13188800b17e34799695a48e3c5d961367f802559
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- xcurl (1.0.6)
4
+ xcurl (1.0.7)
5
5
  pastel (~> 0.8)
6
6
 
7
7
  GEM
data/bin/console ADDED
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ require "bundler/setup"
5
+ require "xcurl"
6
+
7
+ # You can add fixtures and/or initialization code here to make experimenting
8
+ # with your gem easier. You can also use a different console, if you like.
9
+
10
+ require "irb"
11
+ IRB.start(__FILE__)
data/lib/log.rb ADDED
@@ -0,0 +1,41 @@
1
+ require 'pastel'
2
+
3
+ class Log
4
+ def initialize
5
+ @p = Pastel.new
6
+ end
7
+
8
+ def deleted(d)
9
+ puts @p.green("part deleted #{@p.yellow(d)}")
10
+ end
11
+
12
+ def url_set(u)
13
+ puts @p.green("url set #{@p.yellow(u)}")
14
+ end
15
+
16
+ def added(a)
17
+ puts @p.green("added #{@p.yellow(a)}")
18
+ end
19
+
20
+ def show_current_session(session)
21
+ puts @p.green.bold("URL:\n #{@p.yellow(session['url'])}")
22
+ puts @p.green.bold("Parts:")
23
+ session['parts'].each_with_index do |part, index|
24
+ puts " #{@p.blue(index)} - #{@p.yellow(part)}"
25
+ end
26
+ end
27
+
28
+ def result(cmd, data)
29
+ puts @p.cyan("==> #{cmd}")
30
+ puts ''
31
+ puts @p.green(data)
32
+ puts ''
33
+ end
34
+
35
+ def error(cmd, data)
36
+ puts @p.cyan("==> #{cmd}")
37
+ puts ''
38
+ puts @p.red(data)
39
+ puts ''
40
+ end
41
+ end
data/lib/xcurl.rb CHANGED
@@ -1,16 +1,17 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'pastel'
3
+ require 'ostruct'
4
+ require 'open3'
5
+ require 'json'
6
+ require_relative './log'
4
7
 
5
8
  class Xcurl
6
- def self.start(session)
7
- pastel = Pastel.new
8
-
9
- current_session = session || 'untitled'
10
- parts = []
9
+ def self.start(session_id = nil)
10
+ log = Log.new
11
+ session = load_session(session_id || 'untitled')
11
12
 
12
13
  while true
13
- print "[#{current_session}] "
14
+ print "[#{session['id']}] "
14
15
 
15
16
  cmd = gets.chomp
16
17
 
@@ -18,29 +19,92 @@ class Xcurl
18
19
  when 'quit'
19
20
  break
20
21
 
21
- when /init /
22
- current_session = cmd.scan(/init (.*)/).flatten.first
22
+ when /save /
23
+ new_id = cmd.scan(/save (.*)/).flatten.first
24
+
25
+ session = save_session(new_id, session)
26
+
27
+ when /load /
28
+ id = cmd.scan(/load (.*)/).flatten.first
29
+
30
+ session = load_session(id)
23
31
 
24
32
  when 'show'
25
- parts.each_with_index do |part, index|
26
- puts "#{pastel.blue(index)} - #{pastel.green("'#{pastel.bold(part)}'")}"
27
- end
33
+ log.show_current_session(session)
28
34
 
29
- when /delete /
35
+ when /^delete /
30
36
  index_part = cmd.scan(/delete (.*)/).flatten.first.to_i
31
37
 
32
- parts.delete_at(index_part)
38
+ deleted = session['parts'].delete_at(index_part)
39
+
40
+ log.deleted(deleted)
41
+
42
+ when /^url /
43
+ url = cmd.scan(/url (.*)/).flatten.first
33
44
 
34
- when /add /
45
+ session['url'] = url
46
+
47
+ log.url_set(url)
48
+
49
+ when /^add /
35
50
  part = cmd.scan(/add (.*)/).flatten.first
36
51
 
37
- parts << part
52
+ session['parts'] << part
53
+
54
+ log.added(part)
55
+
56
+ when /^curl /
57
+ path = cmd.scan(/curl (.*)/).flatten.first
38
58
 
39
- puts pastel.green("added '#{pastel.bold(part)}'")
59
+ curl_cmd = "curl #{session['url']}/#{path} #{session['parts'].join(' ')}"
40
60
 
41
- when /curl /
42
- puts "curl #{parts.join(' ')}"
61
+ out, err, status = Open3.capture3(curl_cmd)
62
+
63
+ if status.success?
64
+ data =
65
+ begin
66
+ JSON.pretty_generate(JSON.parse(out))
67
+ rescue JSON::ParserError => e
68
+ out
69
+ end
70
+
71
+ log.result(curl_cmd, data)
72
+ else
73
+ log.error(curl_cmd, data)
74
+ end
43
75
  end
44
76
  end
45
77
  end
78
+
79
+ def self.load_session(id)
80
+ ensure_home
81
+
82
+ if File.exist?("#{dir}/#{id}")
83
+ JSON.parse(File.read("#{dir}/#{id}"))
84
+ else
85
+ {
86
+ 'id' => 'untitled',
87
+ 'url' => nil,
88
+ 'parts' => []
89
+ }
90
+ end
91
+ end
92
+
93
+ def self.save_session(id, session)
94
+ ensure_home
95
+
96
+ session['id'] = id
97
+
98
+ File.write("#{dir}/#{id}", JSON.pretty_generate(session))
99
+
100
+ session
101
+ end
102
+
103
+ def self.dir
104
+ "#{ENV['HOME']}/.xcurl"
105
+ end
106
+
107
+ def self.ensure_home
108
+ Dir.mkdir(dir) unless Dir.exist?(dir)
109
+ end
46
110
  end
data/xcurl.gemspec CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |spec|
4
4
  spec.name = "xcurl"
5
- spec.version = '1.0.7'
5
+ spec.version = '1.0.9'
6
6
  spec.authors = ["Andrew S Aguiar"]
7
7
  spec.email = ["andrewaguiar6@gmail.com"]
8
8
  spec.summary = "Convenient wrapper for curl"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: xcurl
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.7
4
+ version: 1.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew S Aguiar
@@ -41,9 +41,11 @@ files:
41
41
  - LICENSE.txt
42
42
  - README.md
43
43
  - Rakefile
44
+ - bin/console
44
45
  - bin/setup
45
46
  - bin/xcurl
46
47
  - generate-gem
48
+ - lib/log.rb
47
49
  - lib/xcurl.rb
48
50
  - xcurl.gemspec
49
51
  homepage: https://github.com/andrewaguiar/xcurl