uvcli 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/lib/uvcli/cli.rb +63 -14
  3. data/lib/uvcli/version.rb +1 -1
  4. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d2ed961f7954fb7e86c4dfaf1f9305ad1dfcfcc0
4
- data.tar.gz: 5b8c486ca1aad4929a379930459ac061a4500032
3
+ metadata.gz: 353ed54e36ae32b3df177e0049506e04f60a3b6f
4
+ data.tar.gz: fd389bd0d3978eae204ec043b0215782e915cf16
5
5
  SHA512:
6
- metadata.gz: 1532c409710d807fe6de950c92e1958e3526bfccbfea58c586cf3aac5f5a4d92d7c03e662e84075292fb35e3f152d0e0fc52a30fc9e543a020c22045eba75025
7
- data.tar.gz: 35d785fa50b3017d1d355a6946d6458128890f3a5ac1e5eee300b0ccb6920a8a47359cc34d2e2d3e0406fda4db3fd6c24445d07916026ac65753c3fae46faf8f
6
+ metadata.gz: 0ffb0c223bca5463222404511b44a3cb094920a8bc2fde0f93628bae608404ebb21991f906c8afd854468d20efeeb3f5c7610439d8e3305ee068e89f765a31c6
7
+ data.tar.gz: 1943d4fc3ac787c293a2f276c4d62801783790b18e0de8f5f4593dd5f8bf2024fbc52bb277164da91735e070b486cb543f020407f98adb54f367b82bee9a549c
data/lib/uvcli/cli.rb CHANGED
@@ -10,11 +10,11 @@ module Uvcli
10
10
 
11
11
  desc "login", "Login to an existing UserVoice account."
12
12
  def login
13
- puts %{To login to your UserVoice account we'll need your domain, key and secret.
13
+ puts %{\nTo login to your UserVoice account we'll need your domain, key and secret.
14
14
 
15
15
  The domain is the part in front of your uservoice.com domain, e.g. dangercove.uservoice.com.
16
16
 
17
- To create a key and secret login to your UserVoice account, head over to Settings, then Integrations and click Add API Key... Only enter a name and make sure TRUSTED is not checked.
17
+ To create a key and secret login to your UserVoice account, head over to Settings, then Integrations and click Add API Key... Only enter a name and make sure TRUSTED is checked.
18
18
 
19
19
  }
20
20
  puts "Domain:"
@@ -32,32 +32,81 @@ To create a key and secret login to your UserVoice account, head over to Setting
32
32
  client = UserVoice::Client.new(domain, key, secret)
33
33
  begin
34
34
  client.get("/api/v1/tickets.json")
35
- puts @@settings.add_site?(domain, key, secret) ? "Site saved" : "Something went wrong"
35
+ puts @@settings.add_site?(domain, key, secret) ? green("Site saved") : red("Something went wrong")
36
36
  rescue OAuth::Unauthorized
37
37
  rescue UserVoice::Unauthorized
38
- puts "Failed to login"
38
+ puts red("Failed to login")
39
39
  end
40
40
  end
41
41
 
42
42
  desc "check", "Check for new tickets"
43
43
  def check
44
+ if(@@settings.sites.empty?)
45
+ puts red("\nSetup a few sites first with 'uvcli login'")
46
+ return
47
+ end
48
+
49
+ all_tickets = []
44
50
  @@settings.sites.each do |site|
45
51
  client = UserVoice::Client.new(site['domain'], site['key'], site['secret'])
46
- tickets = client.get("/api/v1/tickets.json?per_page=10")
47
- if tickets
48
- puts "#{site['domain']}:"
49
- tickets['tickets'].each do |ticket|
50
- subject = ticket['subject'] #.truncate(25)
51
- last_message = ticket['messages'].first
52
- from = last_message['sender']['name']
53
- #body = last_message['body'].delete('\n') #.truncate(50)
54
- puts " #{from}: #{subject}\n"
52
+ response = client.get("/api/v1/tickets.json?state=open")
53
+ if response
54
+ puts "\n#{site['domain']}:"
55
+ tickets = response['tickets']
56
+ if tickets.empty?
57
+ puts green(" Inbox zero!")
58
+ else
59
+ tickets.each do |ticket|
60
+ all_tickets << ticket
61
+ subject = ticket['subject'][0...70]
62
+ subject = "#{subject}..." if subject.length < ticket['subject'].length
63
+ last_message = ticket['messages'].first
64
+ sender = last_message['sender']['name']
65
+ email = last_message['sender']['email']
66
+ body = last_message['plaintext_body'].gsub("\n", " ")[0...70]
67
+ body = "#{body}..." if body.length < last_message['body'].length
68
+ updated = DateTime.parse(last_message['updated_at'])
69
+ puts "\n [#{green(all_tickets.size)}] #{red(subject)}\n #{body}\n #{updated.strftime('%d/%m/%Y at %H:%M')} by #{green(sender)} <#{green(email)}>\n"
70
+ end
55
71
  end
56
72
  else
57
- puts "Something went wrong"
73
+ puts red(" Unable to retrieve tickets")
74
+ end
75
+ end
76
+
77
+ return if all_tickets.empty?
78
+
79
+ puts "\nOpen ticket (#{green('#')} for ticket, #{green('a')} for all, #{red('q')} to quit):"
80
+ STDOUT.flush
81
+ ticketid = STDIN.gets.chomp.downcase
82
+
83
+ if(ticketid.to_i > 0 and ticketid.to_i.is_a? Integer)
84
+ puts "Showing ticket #{ticketid.to_i}"
85
+ `open #{all_tickets[ticketid.to_i]['url']}`
86
+ elsif(ticketid == "a")
87
+ if(all_tickets.size > 10)
88
+ puts "\nAre you sure? This will open #{all_tickets.size} browser windows? [y/N]"
89
+ STDOUT.flush
90
+ sure = STDIN.gets.chomp.downcase
91
+ if(sure == "y")
92
+ puts "Showing all tickets"
93
+ all_tickets.each do |ticket|
94
+ `open #{ticket['url']}`
95
+ sleep(1.0/10.0)
96
+ end
97
+ end
58
98
  end
59
99
  end
60
100
  end
101
+
102
+ private
103
+
104
+ def colorize(text, color_code)
105
+ "\e[#{color_code}m#{text}\e[0m"
106
+ end
107
+
108
+ def red(text); colorize(text, 31); end
109
+ def green(text); colorize(text, 32); end
61
110
  end
62
111
  end
63
112
  end
data/lib/uvcli/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Uvcli
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: uvcli
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Boy van Amstel
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-02-25 00:00:00.000000000 Z
11
+ date: 2015-02-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler