rt-client 0.6.4 → 0.6.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.yardopts +2 -0
- data/rt/client.rb +50 -42
- metadata +43 -42
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: ec6bec56c3684933cf883aa29967fbd037c2f5b5
|
4
|
+
data.tar.gz: 62d27a2c55a33d8647601fb22ae951c407ee6f04
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 6db4f242a6d547c87248daaa8b80f1b170461a1432aa4c34016eaa90f207f261f68e4f8a771aa2c93387d3bf4079f949a51049abc6475b18f6d0317cd1347e9a
|
7
|
+
data.tar.gz: b1e599f20d38cc691af50637c1b1bfa4560b8a4368775a283473f719b6c474fcae7dbfa20261404fb9866ec97fcd1a03dad1fb69d6e50f7c08860ca7039cd0c8
|
data/.yardopts
ADDED
data/rt/client.rb
CHANGED
@@ -3,36 +3,42 @@
|
|
3
3
|
require "rubygems"
|
4
4
|
require "rest_client"
|
5
5
|
|
6
|
+
## Author:: Tom Lahti
|
7
|
+
## Copyright:: Copyright (c) 2013 Tom Lahti
|
8
|
+
## License:: Apache 2.0
|
9
|
+
|
10
|
+
#{<img src="https://badge.fury.io/rb/rt-client.png" alt="Gem Version" />}[http://badge.fury.io/rb/rt-client]
|
6
11
|
##A ruby library API to Request Tracker's REST interface. Requires the
|
7
|
-
##
|
12
|
+
##rubygem rest-client be installed. You can
|
8
13
|
##create a file name .rtclientrc in the same directory as client.rb with a
|
9
14
|
##default server/user/pass to connect to RT as, so that you don't have to
|
10
15
|
##specify it/update it in lots of different scripts.
|
11
16
|
##
|
12
|
-
##
|
13
|
-
##
|
14
|
-
##
|
17
|
+
##Thanks to Brian McArdle for patch dealing with spaces in Custom Fields.
|
18
|
+
##To reference custom fields in RT that have spaces with rt-client, use an
|
19
|
+
##underscore in the rt-client code, e.g. "CF.{{Has_Space}}"
|
15
20
|
##
|
16
|
-
##
|
17
|
-
##
|
18
|
-
##
|
21
|
+
##Thanks to Robert Vinson for 1.9.x compatibility when I couldn't be buggered
|
22
|
+
##and a great job of refactoring the old mess into something with much fewer
|
23
|
+
##dependencies.
|
19
24
|
##
|
20
25
|
##TODO: Streaming, chunking attachments in compose method
|
21
26
|
#
|
22
27
|
# See each method for sample usage. To use this, "gem install rt-client" and
|
23
28
|
#
|
24
29
|
# require "rt/client"
|
30
|
+
|
25
31
|
class RT_Client
|
26
32
|
|
27
|
-
UA = "Mozilla/5.0 ruby RT Client Interface 0.6.
|
33
|
+
UA = "Mozilla/5.0 ruby RT Client Interface 0.6.8"
|
28
34
|
attr_reader :status, :site, :version, :cookies, :server, :user, :cookie
|
29
35
|
|
30
36
|
# Create a new RT_Client object. Load up our stored cookie and check it.
|
31
37
|
# Log into RT again if needed and store the new cookie. You can specify
|
32
38
|
# login and cookie storage directories in 3 different ways:
|
33
|
-
#
|
34
|
-
#
|
35
|
-
#
|
39
|
+
# 1. Explicity during object creation
|
40
|
+
# 2. From a .rtclientrc file in the working directory of your ruby program
|
41
|
+
# 3. From a .rtclientrc file in the same directory as the library itself
|
36
42
|
#
|
37
43
|
# These are listed in order of priority; if you have explicit parameters,
|
38
44
|
# they are always used, even if you have .rtclientrc files. If there
|
@@ -57,7 +63,7 @@ class RT_Client
|
|
57
63
|
# cookies=<directory>
|
58
64
|
def initialize(*params)
|
59
65
|
@boundary = "----xYzZY#{rand(1000000).to_s}xYzZY"
|
60
|
-
@version = "0.
|
66
|
+
@version = "0.6.8"
|
61
67
|
@status = "Not connected"
|
62
68
|
@server = "http://localhost/"
|
63
69
|
@user = "rt_user"
|
@@ -102,7 +108,7 @@ class RT_Client
|
|
102
108
|
end
|
103
109
|
|
104
110
|
|
105
|
-
site = RestClient::Resource.new(@resource, :headers => headers, :timeout =>
|
111
|
+
site = RestClient::Resource.new(@resource, :headers => headers, :timeout => 240)
|
106
112
|
data = site.post "" # a null post just to check that we are logged in
|
107
113
|
|
108
114
|
if @cookie.length == 0 or data =~ /401/ # we're not logged in
|
@@ -180,33 +186,33 @@ class RT_Client
|
|
180
186
|
reply = response_to_h(resp)
|
181
187
|
end
|
182
188
|
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
189
|
+
# Creates a new ticket. Requires a hash that contains RT form fields as
|
190
|
+
# the keys. Capitalization is important; use :Queue, not :queue. You
|
191
|
+
# will need at least :Queue to create a ticket. For a full list of fields
|
192
|
+
# you can use, try "/opt/rt3/bin/rt edit ticket/1". Returns the newly
|
193
|
+
# created ticket number, or a complete REST response.
|
194
|
+
#
|
195
|
+
# id = rt.create( :Queue => "Customer Service",
|
196
|
+
# :Cc => "somebody\@email.com",
|
197
|
+
# :Subject => "I've fallen and I can't get up",
|
198
|
+
# :Text => "I think my hip is broken.\nPlease help.",
|
199
|
+
# :"CF.{CustomField}" => "Urgent",
|
200
|
+
def create(field_hash)
|
201
|
+
field_hash[:id] = "ticket/new"
|
202
|
+
payload = compose(field_hash)
|
203
|
+
# puts "Payload for new ticket:"
|
204
|
+
# puts payload
|
205
|
+
resp = @site['ticket/new/edit'].post payload
|
206
|
+
new_id = resp.match(/Ticket\s*(\d+)/)
|
207
|
+
if new_id.class == MatchData
|
208
|
+
new_ticket = new_id[1]
|
209
|
+
else
|
210
|
+
new_ticket = resp
|
211
|
+
end
|
212
|
+
new_ticket # return the ticket number, or the full REST response
|
213
|
+
end
|
208
214
|
|
209
|
-
|
215
|
+
# create a new user. Requires a hash of RT fields => values. Returns
|
210
216
|
# the newly created user ID, or the full REST response if there is an error.
|
211
217
|
# For a full list of possible parameters that you can specify, look at
|
212
218
|
# "/opt/rt/bin/rt edit user/1"
|
@@ -295,7 +301,7 @@ class RT_Client
|
|
295
301
|
# Find RT user details from an email address
|
296
302
|
#
|
297
303
|
# rt.usersearch(:EmailAddress => 'some@email.com')
|
298
|
-
#
|
304
|
+
# -> {"name"=>"rtlogin", "realname"=>"John Smith", "address1"=>"123 Main", etc }
|
299
305
|
def usersearch(field_hash)
|
300
306
|
if field_hash.has_key? :EmailAddress
|
301
307
|
email = field_hash[:EmailAddress]
|
@@ -467,6 +473,7 @@ class RT_Client
|
|
467
473
|
h = resp.split("\n").select{ |l| l =~ /^\d+:/ }
|
468
474
|
else
|
469
475
|
h = resp.split("\n").select{ |l| l =~ /^\d+: [^Comments]/ }
|
476
|
+
h.select!{ |l| l !~ /Outgoing email about a comment/ }
|
470
477
|
end
|
471
478
|
list = h.map { |l| l.split(":") }
|
472
479
|
else
|
@@ -538,6 +545,7 @@ class RT_Client
|
|
538
545
|
id = params[:id] if params.has_key? :id
|
539
546
|
history = params[:history] if params.has_key? :history
|
540
547
|
end
|
548
|
+
reply = {}
|
541
549
|
resp = @site["ticket/#{id}/history/id/#{history}"].get
|
542
550
|
return reply if resp =~ /not related/ # history id must be related to the ticket id
|
543
551
|
resp.gsub!(/RT\/\d+\.\d+\.\d+\s\d{3}\s.*\n\n/,"") # toss the HTTP response
|
@@ -740,7 +748,7 @@ class RT_Client
|
|
740
748
|
end
|
741
749
|
|
742
750
|
# helper to convert responses from RT REST to a hash
|
743
|
-
def response_to_h(resp)
|
751
|
+
def response_to_h(resp) # :nodoc:
|
744
752
|
resp.gsub!(/RT\/\d+\.\d+\.\d+\s\d{3}\s.*\n\n/,"") # toss the HTTP response
|
745
753
|
#resp.gsub!(/\n\n/,"\n") # remove double spacing, TMail stops at a blank line
|
746
754
|
|
@@ -774,7 +782,7 @@ class RT_Client
|
|
774
782
|
# :Attachment key, the value is assumed to be a comma-separated list of
|
775
783
|
# filenames to attach. It returns a hash to be used with rest-client's
|
776
784
|
# payload class
|
777
|
-
def compose(fields) # :
|
785
|
+
def compose(fields) # :nodoc:
|
778
786
|
if fields.class != Hash
|
779
787
|
raise "RT_Client.compose requires parameters as a hash."
|
780
788
|
end
|
metadata
CHANGED
@@ -1,67 +1,68 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: rt-client
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
version: 0.6.4
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.6.8
|
6
5
|
platform: ruby
|
7
|
-
authors:
|
6
|
+
authors:
|
8
7
|
- Tom Lahti
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
- !ruby/object:Gem::Dependency
|
11
|
+
date: 2013-10-10 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
16
14
|
name: rest-client
|
17
|
-
|
18
|
-
|
19
|
-
none: false
|
20
|
-
requirements:
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
21
17
|
- - ">="
|
22
|
-
- !ruby/object:Gem::Version
|
23
|
-
version:
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0.9'
|
24
20
|
type: :runtime
|
25
|
-
|
26
|
-
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0.9'
|
27
|
+
description: |2
|
28
|
+
RT_Client is a ruby object that accesses the REST interface version 1.0
|
29
|
+
of a Request Tracker instance. See http://www.bestpractical.com/ for
|
30
|
+
Request Tracker.
|
27
31
|
email: tlahti@dmsolutions.com
|
28
32
|
executables: []
|
29
|
-
|
30
33
|
extensions: []
|
31
|
-
|
32
34
|
extra_rdoc_files: []
|
33
|
-
|
34
|
-
|
35
|
+
files:
|
36
|
+
- ".yardopts"
|
35
37
|
- rt/client.rb
|
36
38
|
- rt/rtxmlsrv.rb
|
37
|
-
homepage:
|
38
|
-
licenses:
|
39
|
-
|
39
|
+
homepage: http://rubygems.org/gems/rt-client
|
40
|
+
licenses:
|
41
|
+
- APACHE-2.0
|
42
|
+
metadata: {}
|
40
43
|
post_install_message:
|
41
|
-
rdoc_options:
|
42
|
-
- --inline-source
|
43
|
-
- --main
|
44
|
+
rdoc_options:
|
45
|
+
- "--inline-source"
|
46
|
+
- "--main"
|
44
47
|
- RT_Client
|
45
|
-
require_paths:
|
46
|
-
- .
|
47
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
48
|
-
|
49
|
-
requirements:
|
48
|
+
require_paths:
|
49
|
+
- "."
|
50
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
50
52
|
- - ">="
|
51
|
-
- !ruby/object:Gem::Version
|
53
|
+
- !ruby/object:Gem::Version
|
52
54
|
version: 1.8.6
|
53
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
54
|
-
|
55
|
-
requirements:
|
55
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
56
|
+
requirements:
|
56
57
|
- - ">="
|
57
|
-
- !ruby/object:Gem::Version
|
58
|
-
version:
|
59
|
-
requirements:
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
version: '0'
|
60
|
+
requirements:
|
60
61
|
- A working installation of RT with the REST 1.0 interface
|
61
62
|
rubyforge_project:
|
62
|
-
rubygems_version:
|
63
|
+
rubygems_version: 2.0.6
|
63
64
|
signing_key:
|
64
|
-
specification_version:
|
65
|
+
specification_version: 4
|
65
66
|
summary: Ruby object for RT access via REST
|
66
67
|
test_files: []
|
67
|
-
|
68
|
+
has_rdoc: true
|