hcutil 0.0.3 → 0.0.4
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/hcutil/auth.rb +2 -8
- data/lib/hcutil/cli.rb +21 -12
- data/lib/hcutil/copier.rb +11 -10
- data/lib/hcutil/errors.rb +32 -0
- data/lib/hcutil/paster.rb +59 -0
- data/lib/hcutil/version.rb +1 -1
- metadata +4 -3
- data/lib/hcutil/pinger.rb +0 -53
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bf3a6882a040189533cd1a350eb8fc306cce1218
|
4
|
+
data.tar.gz: 8289619d46f7cd79cf2ef67c0d9aa68adb88823a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 963143ee74e502eba3e0dc746c4a4a8d0f4373bf3352b5253fd59f160a7921ba210ebfa3e75bc8bc38b86e31cd9a8fa159182456ceff7f9c865c152a859481ce
|
7
|
+
data.tar.gz: 4be63ce8ec8198671b38a14e563edfcb1540d5442ec8b9685255efce8cd1a771bff201b0acc9c1d8a59ffadc0d649af531a7190107fe32cf071bdc60b4997a39
|
data/lib/hcutil/auth.rb
CHANGED
@@ -1,10 +1,4 @@
|
|
1
1
|
module HCUtil
|
2
|
-
class AuthError < StandardError
|
3
|
-
def initialize(msg = 'AuthError')
|
4
|
-
super
|
5
|
-
end
|
6
|
-
end
|
7
|
-
|
8
2
|
class Auth
|
9
3
|
|
10
4
|
attr_reader :auth_token
|
@@ -12,7 +6,7 @@ module HCUtil
|
|
12
6
|
def initialize(options = {})
|
13
7
|
home_env = ENV['HOME']
|
14
8
|
if home_env.nil_or_empty? or not Dir.exist?(ENV['HOME'])
|
15
|
-
raise(AuthError, 'HOME env var not set or dir does not exist')
|
9
|
+
raise(Errors::AuthError, 'HOME env var not set or dir does not exist')
|
16
10
|
end
|
17
11
|
|
18
12
|
auth_file = File.join(ENV['HOME'], '.hcapi')
|
@@ -20,7 +14,7 @@ module HCUtil
|
|
20
14
|
@auth_token = File.read(auth_file).gsub("\n", ' ').squeeze(' ')
|
21
15
|
$stderr.puts("Auth token: #{auth_token}") if options[:verbose]
|
22
16
|
else
|
23
|
-
raise(AuthError, 'missing auth token file ~/.hcapi')
|
17
|
+
raise(Errors::AuthError, 'missing auth token file ~/.hcapi')
|
24
18
|
end
|
25
19
|
end
|
26
20
|
end
|
data/lib/hcutil/cli.rb
CHANGED
@@ -3,8 +3,9 @@
|
|
3
3
|
|
4
4
|
require 'thor'
|
5
5
|
require 'hcutil/version'
|
6
|
+
require 'hcutil/errors'
|
6
7
|
require 'hcutil/copier'
|
7
|
-
require 'hcutil/
|
8
|
+
require 'hcutil/paster'
|
8
9
|
|
9
10
|
module HCUtil
|
10
11
|
class CLI < Thor
|
@@ -24,11 +25,6 @@ module HCUtil
|
|
24
25
|
end
|
25
26
|
|
26
27
|
desc('copy ROOM_NAME', 'copy chat messages from ROOM_NAME')
|
27
|
-
option(:room,
|
28
|
-
:desc => 'HipChat room with which to work',
|
29
|
-
:aliases => '-r',
|
30
|
-
:type => :string,
|
31
|
-
:default => 'Client Services')
|
32
28
|
option(:date,
|
33
29
|
:desc => 'Date from which to copy messages',
|
34
30
|
:type => :string,
|
@@ -43,17 +39,30 @@ module HCUtil
|
|
43
39
|
begin
|
44
40
|
copier = HCUtil::Copier.new(room_name, options)
|
45
41
|
copier.copy()
|
46
|
-
rescue
|
42
|
+
rescue Errors::HCUtilError => e
|
47
43
|
$stderr.puts("[error] #{e.message}")
|
48
44
|
end
|
49
45
|
end
|
50
46
|
|
51
|
-
desc('
|
52
|
-
|
47
|
+
desc('paste FILE', 'Paste from file (- for stdin) into HipChat room')
|
48
|
+
option(:room,
|
49
|
+
:desc => 'HipChat room name or number into which to paste data',
|
50
|
+
:type => :string,
|
51
|
+
:aliases => '-r',
|
52
|
+
:default => 61640)
|
53
|
+
option(:ticket,
|
54
|
+
:desc => 'Ticket number, optional. If present will create message header',
|
55
|
+
:type => :numeric,
|
56
|
+
:aliases => '-t')
|
57
|
+
option(:summary,
|
58
|
+
:desc => 'Summary, optional. If present will create message header',
|
59
|
+
:type => :string,
|
60
|
+
:aliases => '-s')
|
61
|
+
def paste(file)
|
53
62
|
begin
|
54
|
-
|
55
|
-
|
56
|
-
rescue
|
63
|
+
paster = HCUtil::Paster.new(file, options)
|
64
|
+
paster.paste()
|
65
|
+
rescue Errors::HCUtilError => e
|
57
66
|
$stderr.puts("[error] #{e.message}")
|
58
67
|
end
|
59
68
|
end
|
data/lib/hcutil/copier.rb
CHANGED
@@ -1,13 +1,8 @@
|
|
1
|
+
require 'hcutil/errors'
|
1
2
|
require 'hcutil/op_base'
|
2
3
|
|
3
4
|
module HCUtil
|
4
5
|
|
5
|
-
class CopierError < StandardError
|
6
|
-
def initialize(msg = 'CopierError')
|
7
|
-
super
|
8
|
-
end
|
9
|
-
end
|
10
|
-
|
11
6
|
class Copier < OpBase
|
12
7
|
def initialize(room_name = 'Client Services', options = {})
|
13
8
|
super(options)
|
@@ -24,7 +19,8 @@ module HCUtil
|
|
24
19
|
:auth_token => @auth.auth_token
|
25
20
|
}
|
26
21
|
}
|
27
|
-
|
22
|
+
uri = 'https://api.hipchat.com/v2/room'
|
23
|
+
RestClient.get(uri, param_arg) do |response, request, result|
|
28
24
|
if result.is_a? Net::HTTPSuccess
|
29
25
|
json = JSON.parse(response.body)
|
30
26
|
items = json['items']
|
@@ -36,10 +32,14 @@ module HCUtil
|
|
36
32
|
end
|
37
33
|
end
|
38
34
|
else
|
39
|
-
raise(
|
35
|
+
raise(Errors::RESTError.new(result, uri, response))
|
40
36
|
end
|
41
37
|
end
|
42
38
|
|
39
|
+
if room_id == 0
|
40
|
+
raise(Errors::CopierError, "Room with name '#{@room_name}' could not be found")
|
41
|
+
end
|
42
|
+
|
43
43
|
chat_date = @options[:date]
|
44
44
|
$stderr.puts("Getting history for #{chat_date.to_s}") if @verbose
|
45
45
|
|
@@ -52,12 +52,13 @@ module HCUtil
|
|
52
52
|
}
|
53
53
|
}
|
54
54
|
|
55
|
+
uri = "https://api.hipchat.com/v2/room/#{room_id}/history"
|
55
56
|
json = nil
|
56
|
-
RestClient.get(
|
57
|
+
RestClient.get(uri, param_arg) do |response, request, result|
|
57
58
|
if result.is_a? Net::HTTPSuccess
|
58
59
|
json = JSON.parse(response.body)
|
59
60
|
else
|
60
|
-
raise(
|
61
|
+
raise(Errors::RESTError.new(result, uri, response))
|
61
62
|
end
|
62
63
|
end
|
63
64
|
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module HCUtil
|
2
|
+
module Errors
|
3
|
+
|
4
|
+
class HCUtilError < StandardError; end
|
5
|
+
|
6
|
+
class AuthError < HCUtilError
|
7
|
+
def initialize(msg = 'AuthError')
|
8
|
+
super
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
class RESTError < HCUtilError
|
13
|
+
def initialize(result, uri, response)
|
14
|
+
super("#{result.code} #{result.msg}\n#{uri}\n#{response}")
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
class CopierError < HCUtilError
|
19
|
+
def initialize(msg = 'CopierError')
|
20
|
+
super
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
class PasterError < HCUtilError
|
25
|
+
def initialize(msg = 'PasterError')
|
26
|
+
super
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
@@ -0,0 +1,59 @@
|
|
1
|
+
require 'uri'
|
2
|
+
require 'hcutil/errors'
|
3
|
+
require 'hcutil/op_base'
|
4
|
+
|
5
|
+
module HCUtil
|
6
|
+
|
7
|
+
class Paster < OpBase
|
8
|
+
def initialize(file, options = {})
|
9
|
+
super(options)
|
10
|
+
if file == '-' or File.exists?(file)
|
11
|
+
@file = file
|
12
|
+
else
|
13
|
+
raise(Errors::PasterError, "Response file '#{file}' does not exist")
|
14
|
+
end
|
15
|
+
@room = options[:room]
|
16
|
+
@ticket = options[:ticket]
|
17
|
+
@summary = options[:summary]
|
18
|
+
end
|
19
|
+
|
20
|
+
def paste
|
21
|
+
if @file == '-'
|
22
|
+
file_contents = $stdin.read
|
23
|
+
else
|
24
|
+
file_contents = File.read(@file)
|
25
|
+
end
|
26
|
+
|
27
|
+
if @ticket
|
28
|
+
ticket_text = "ticket ##{@ticket} - "
|
29
|
+
end
|
30
|
+
unless ticket_text.nil_or_empty? and @summary.nil_or_empty?
|
31
|
+
paste_header = "#{ticket_text}#{@summary}\n"
|
32
|
+
end
|
33
|
+
message = <<"EOT"
|
34
|
+
#{paste_header}
|
35
|
+
#{file_contents}
|
36
|
+
EOT
|
37
|
+
post_data = {
|
38
|
+
:message_format => 'text',
|
39
|
+
:color => 'purple',
|
40
|
+
:message => message
|
41
|
+
}
|
42
|
+
|
43
|
+
header_args = {
|
44
|
+
:content_type => :json,
|
45
|
+
:accept => :json,
|
46
|
+
:authorization => "Bearer #{@auth.auth_token}"
|
47
|
+
}
|
48
|
+
|
49
|
+
room_esc = URI.escape(@room.to_s)
|
50
|
+
uri = "https://api.hipchat.com/v2/room/#{room_esc}/notification"
|
51
|
+
RestClient.post(uri, post_data.to_json, header_args) do |response, request, result|
|
52
|
+
unless result.is_a? Net::HTTPSuccess
|
53
|
+
raise(Errors::RESTError.new(result, uri, response))
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
data/lib/hcutil/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hcutil
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Luke Bakken
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-04-
|
11
|
+
date: 2014-04-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: json
|
@@ -66,9 +66,10 @@ files:
|
|
66
66
|
- lib/hcutil/auth.rb
|
67
67
|
- lib/hcutil/cli.rb
|
68
68
|
- lib/hcutil/copier.rb
|
69
|
+
- lib/hcutil/errors.rb
|
69
70
|
- lib/hcutil/extensions.rb
|
70
71
|
- lib/hcutil/op_base.rb
|
71
|
-
- lib/hcutil/
|
72
|
+
- lib/hcutil/paster.rb
|
72
73
|
- lib/hcutil/version.rb
|
73
74
|
homepage: http://github.com/lukebakken/hipchat-util
|
74
75
|
licenses: []
|
data/lib/hcutil/pinger.rb
DELETED
@@ -1,53 +0,0 @@
|
|
1
|
-
require 'hcutil/op_base'
|
2
|
-
|
3
|
-
module HCUtil
|
4
|
-
|
5
|
-
class PingerError < StandardError
|
6
|
-
def initialize(msg = 'PingerError')
|
7
|
-
super
|
8
|
-
end
|
9
|
-
end
|
10
|
-
|
11
|
-
class Pinger < OpBase
|
12
|
-
def initialize(ticket_num = nil, response_file = nil, summary = nil, options = {})
|
13
|
-
super(options)
|
14
|
-
if ticket_num =~ /^[0-9]{4,}$/
|
15
|
-
@ticket_num = ticket_num
|
16
|
-
else
|
17
|
-
raise(PingerError, 'Ticket number must be 4 or more digits')
|
18
|
-
end
|
19
|
-
if File.exists?(response_file)
|
20
|
-
@response_file = response_file
|
21
|
-
else
|
22
|
-
raise(PingerError, "Response file '#{response_file}' does not exist")
|
23
|
-
end
|
24
|
-
@summary = summary
|
25
|
-
end
|
26
|
-
|
27
|
-
def ping
|
28
|
-
message = <<"EOT"
|
29
|
-
ticket ##{@ticket_num} - #{@summary}
|
30
|
-
#{File.read(@response_file)}
|
31
|
-
EOT
|
32
|
-
post_data = {
|
33
|
-
:message_format => 'text',
|
34
|
-
:color => 'purple',
|
35
|
-
:message => message
|
36
|
-
}
|
37
|
-
|
38
|
-
header_args = {
|
39
|
-
:content_type => :json,
|
40
|
-
:accept => :json,
|
41
|
-
:authorization => "Bearer #{@auth.auth_token}"
|
42
|
-
}
|
43
|
-
|
44
|
-
RestClient.post('https://api.hipchat.com/v2/room/61640/notification',
|
45
|
-
post_data.to_json, header_args) do |response, request, result|
|
46
|
-
unless result.is_a? Net::HTTPSuccess
|
47
|
-
raise(PingerError, "REST error: #{result}|#{response}")
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|