post2zendesk 0.0.1

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
+ SHA1:
3
+ metadata.gz: d0efc44f4c73daddccbd1da3061b3f9961f0d6f1
4
+ data.tar.gz: d9d34de1a58f25eb1d3db401acb0d0ed5973fdd8
5
+ SHA512:
6
+ metadata.gz: 23c2c5f042aafc42f984de1f176973fac2cbcf45a23b694e61458f96e7ddb5489875b7160a2bdc677c9783ed6b1404ea24215642e60768d74bff1c9c2945b4bd
7
+ data.tar.gz: 76983f74901323b1d38637b7f2e02425b65523c257e433d8ee13b319319d8b1f8f0b235fe4321b0300e6525533e836a3485aa947daf54df7a2e4b3dcb6e08baf
data/README.md ADDED
@@ -0,0 +1,31 @@
1
+ # post2zendesk
2
+
3
+ This gem lets you post a comment to a zendesk ticket, and sets the ticket's status to pending.
4
+
5
+ ## Usage
6
+
7
+ There's only two ways to use it:
8
+
9
+ Inline Comment: `post2zendesk <ticketid> <comment>`
10
+ Stdin Comment: `cat somefile | post2zendesk <ticketid>
11
+
12
+ E.g.:
13
+
14
+ ```
15
+ lolcalhost$ post2zendesk 4698 'A comment.'
16
+ Ticket 4698 updated. Probably.
17
+ Status: pending
18
+ ```
19
+
20
+ ## Configuration
21
+
22
+ You'll need to supply your Zendesk URL, username, and password,
23
+
24
+ Configure via `~/.post2zendesk.yaml`:
25
+
26
+ ```
27
+ ---
28
+ baseurl: 'support.puppetlabs.com'
29
+ username: 'zachary@puppetlabs.com'
30
+ password: 'mypassword'
31
+ ```
data/bin/post2zendesk ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'commandline'
@@ -0,0 +1,12 @@
1
+ require 'post2zendesk'
2
+
3
+ put_text_inside_me = Post2Zendesk.new
4
+
5
+ def comment_via_stdin_or_pipe
6
+ return (STDIN.tty? ? ARGV[1] : STDIN.read)
7
+ end
8
+
9
+ comment = comment_via_stdin_or_pipe
10
+
11
+ put_text_inside_me.updateticket(ARGV[0], comment)
12
+ put_text_inside_me.printreply
@@ -0,0 +1,57 @@
1
+
2
+
3
+ class Post2Zendesk
4
+
5
+ require 'net/http'
6
+ require 'net/https'
7
+ require 'yaml'
8
+ require 'json'
9
+ require 'uri'
10
+
11
+ def initialize
12
+ configdata = YAML.load_file(ENV['HOME'] + '/.post2zendesk.yaml')
13
+ @uri = URI.parse("https://#{configdata['baseurl']}/")
14
+ @username = configdata['username']
15
+ @password = configdata['password']
16
+ end
17
+
18
+ def makerequest(type='Get', body='')
19
+ @http = Net::HTTP.new(@uri.host, @uri.port)
20
+ @http.use_ssl = true
21
+ @http.verify_mode = OpenSSL::SSL::VERIFY_NONE
22
+
23
+ if type == 'Get'
24
+ @request = Net::HTTP::Get.new(@uri.request_uri)
25
+ elsif type == 'Put'
26
+ @request = Net::HTTP::Put.new(@uri.request_uri)
27
+ @request['Content-Type'] = 'application/json'
28
+ @request.body = body
29
+ else
30
+ raise ArgumentError.new('Unrecognized HTTP request type.')
31
+ end
32
+
33
+ @request.basic_auth(@username, @password)
34
+ return @response = @http.request(@request).body
35
+ end
36
+
37
+ def updateticket(ticketid, comment, status='pending', is_public='true')
38
+ # https://support.puppetlabs.com/api/v2/tickets/3717.json
39
+ @uri.path = "/api/v2/tickets/#{ticketid.to_s}.json"
40
+
41
+ updatearray = {
42
+ 'ticket' => {
43
+ 'status' => status,
44
+ 'comment' => { 'body' => comment, 'public' => is_public }
45
+ }
46
+ }
47
+ updatearray_json = updatearray.to_json
48
+ @response = makerequest('Put', updatearray_json)
49
+ end
50
+
51
+ def printreply
52
+ response_hash = JSON.parse(@response)
53
+ puts "Ticket #{response_hash['ticket']['id']} updated. Probably."
54
+ puts "Status: #{response_hash['ticket']['status']}"
55
+ end
56
+
57
+ end
metadata ADDED
@@ -0,0 +1,62 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: post2zendesk
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Zachary Alex Stern
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-04-01 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: pry
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '>='
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ description: Post text or text file as comment to Zendesk ticket.
28
+ email: zacharyalexstern@gmail.com
29
+ executables:
30
+ - post2zendesk
31
+ extensions: []
32
+ extra_rdoc_files: []
33
+ files:
34
+ - lib/commandline.rb
35
+ - lib/post2zendesk.rb
36
+ - bin/post2zendesk
37
+ - README.md
38
+ homepage: https://github.com/zacharyalexstern/post2zendesk
39
+ licenses:
40
+ - WTFPL
41
+ metadata: {}
42
+ post_install_message:
43
+ rdoc_options: []
44
+ require_paths:
45
+ - lib
46
+ required_ruby_version: !ruby/object:Gem::Requirement
47
+ requirements:
48
+ - - '>='
49
+ - !ruby/object:Gem::Version
50
+ version: '0'
51
+ required_rubygems_version: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - '>='
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
56
+ requirements: []
57
+ rubyforge_project:
58
+ rubygems_version: 2.0.3
59
+ signing_key:
60
+ specification_version: 4
61
+ summary: Post text or text file as comment to Zendesk ticket
62
+ test_files: []