uvcli 0.0.2 → 0.0.3
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/lib/uvcli/cli.rb +63 -14
- data/lib/uvcli/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 353ed54e36ae32b3df177e0049506e04f60a3b6f
|
4
|
+
data.tar.gz: fd389bd0d3978eae204ec043b0215782e915cf16
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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 %{
|
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
|
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
|
-
|
47
|
-
if
|
48
|
-
puts "#{site['domain']}:"
|
49
|
-
tickets['tickets']
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
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 "
|
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
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.
|
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-
|
11
|
+
date: 2015-02-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|