rt-client 0.3.7 → 0.3.9
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.
- data/rt/client.rb +35 -10
- metadata +4 -4
data/rt/client.rb
CHANGED
@@ -14,6 +14,10 @@ require 'pp'
|
|
14
14
|
##default server/user/pass to connect to RT as, so that you don't have to
|
15
15
|
##specify it/update it in lots of different scripts.
|
16
16
|
##
|
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}"
|
20
|
+
##
|
17
21
|
##TODO: Streaming, chunking attachments in compose method
|
18
22
|
#
|
19
23
|
# See each method for sample usage. To use this, "gem install rt-client" and
|
@@ -22,7 +26,7 @@ require 'pp'
|
|
22
26
|
|
23
27
|
class RT_Client
|
24
28
|
|
25
|
-
UA = "Mozilla/5.0 ruby RT Client Interface 0.3.
|
29
|
+
UA = "Mozilla/5.0 ruby RT Client Interface 0.3.9"
|
26
30
|
attr_reader :status, :site, :version, :cookies, :server, :user, :cookie
|
27
31
|
|
28
32
|
# Create a new RT_Client object. Load up our stored cookie and check it.
|
@@ -55,7 +59,7 @@ class RT_Client
|
|
55
59
|
# cookies=<directory>
|
56
60
|
def initialize(*params)
|
57
61
|
@boundary = "----xYzZY#{rand(1000000).to_s}xYzZY"
|
58
|
-
@version = "0.3.
|
62
|
+
@version = "0.3.9"
|
59
63
|
@status = "Not connected"
|
60
64
|
@server = "http://localhost/"
|
61
65
|
@user = "rt_user"
|
@@ -100,7 +104,7 @@ class RT_Client
|
|
100
104
|
end
|
101
105
|
|
102
106
|
|
103
|
-
site = RestClient::Resource.new(@resource, :headers => headers)
|
107
|
+
site = RestClient::Resource.new(@resource, :headers => headers, :timeout => 120)
|
104
108
|
data = site.post "" # a null post just to check that we are logged in
|
105
109
|
|
106
110
|
if @cookie.length == 0 or data =~ /401/ # we're not logged in
|
@@ -150,8 +154,11 @@ class RT_Client
|
|
150
154
|
else
|
151
155
|
resp = @site["#{type}/#{sid}/show"].get
|
152
156
|
end
|
153
|
-
resp.gsub!(/RT\/\d
|
157
|
+
resp.gsub!(/RT\/\d+\.\d+\.\d+\s\d{3}\s.*\n\n/,"") # toss the HTTP response
|
154
158
|
resp.gsub!(/\n\n/,"\n") # remove double spacing, TMail stops at a blank line
|
159
|
+
while resp.match(/CF\.\{[\w_ ]*[ ]+[\w ]*\}/) #replace CF spaces with underscores
|
160
|
+
resp.gsub!(/CF\.\{([\w_ ]*)([ ]+)([\w ]*)\}/, 'CF.{\1_\3}')
|
161
|
+
end
|
155
162
|
return {:error => resp, } if resp =~ /does not exist./
|
156
163
|
th = TMail::Mail.parse(resp)
|
157
164
|
resp += "\nrtclientend:" # to make the pattern match on the last key in the response
|
@@ -187,8 +194,11 @@ class RT_Client
|
|
187
194
|
end
|
188
195
|
reply = {}
|
189
196
|
resp = @site["ticket/#{sid}/links/show"].get
|
190
|
-
resp.gsub!(/RT\/\d
|
197
|
+
resp.gsub!(/RT\/\d+\.\d+\.\d+\s\d{3}\s.*\n\n/,"") # toss the HTTP response
|
191
198
|
resp.gsub!(/\n\n/,"\n") # remove double spacing, TMail stops at a blank line
|
199
|
+
while resp.match(/CF\.\{[\w_ ]*[ ]+[\w ]*\}/) #replace CF spaces with underscores
|
200
|
+
resp.gsub!(/CF\.\{([\w_ ]*)([ ]+)([\w ]*)\}/, 'CF.{\1_\3}')
|
201
|
+
end
|
192
202
|
return {:error => resp, } if resp =~ /does not exist./
|
193
203
|
th = TMail::Mail.parse(resp)
|
194
204
|
th.each_header do |k,v|
|
@@ -406,11 +416,14 @@ class RT_Client
|
|
406
416
|
resp = @site["search/ticket/?query=#{URI.escape(query)}&orderby=#{order}&format=l"].get
|
407
417
|
return replies if resp =~/No matching results./
|
408
418
|
raise "Invalid query (#{query})" if resp =~ /Invalid query/
|
409
|
-
resp.gsub!(/RT\/\d
|
419
|
+
resp.gsub!(/RT\/\d+\.\d+\.\d+\s\d{3}\s.*\n\n/,"") # strip HTTP response
|
410
420
|
tickets = resp.split("\n--\n") # -- occurs between each ticket
|
411
421
|
tickets.each do |ticket|
|
412
422
|
ticket.gsub!(/^\n/,"") # strip leading blank lines
|
413
423
|
ticket.gsub!(/\n\n/,"\n") # remove blank lines for TMail
|
424
|
+
while ticket.match(/CF\.\{[\w_ ]*[ ]+[\w ]*\}/) #replace CF spaces with underscores
|
425
|
+
ticket.gsub!(/CF\.\{([\w_ ]*)([ ]+)([\w ]*)\}/, 'CF.{\1_\3}')
|
426
|
+
end
|
414
427
|
th = TMail::Mail.parse(ticket)
|
415
428
|
reply = {}
|
416
429
|
th.each_header do |k,v|
|
@@ -481,9 +494,12 @@ class RT_Client
|
|
481
494
|
end
|
482
495
|
list = h.map { |l| l.split(":") }
|
483
496
|
else
|
484
|
-
resp.gsub!(/RT\/\d
|
497
|
+
resp.gsub!(/RT\/\d+\.\d+\.\d+\s\d{3}\s.*\n\n/,"") # toss the HTTP response
|
485
498
|
resp.gsub!(/^#.*?\n\n/,"") # toss the 'total" line
|
486
499
|
resp.gsub!(/^\n/m,"") # toss blank lines
|
500
|
+
while resp.match(/CF\.\{[\w_ ]*[ ]+[\w ]*\}/) #replace CF spaces with underscores
|
501
|
+
resp.gsub!(/CF\.\{([\w_ ]*)([ ]+)([\w ]*)\}/, 'CF.{\1_\3}')
|
502
|
+
end
|
487
503
|
items = resp.split("\n--\n")
|
488
504
|
list = []
|
489
505
|
items.each do |item|
|
@@ -548,9 +564,12 @@ class RT_Client
|
|
548
564
|
reply = {}
|
549
565
|
resp = @site["ticket/#{id}/history/id/#{history}"].get
|
550
566
|
return reply if resp =~ /not related/ # history id must be related to the ticket id
|
551
|
-
resp.gsub!(/RT\/\d
|
567
|
+
resp.gsub!(/RT\/\d+\.\d+\.\d+\s\d{3}\s.*\n\n/,"") # toss the HTTP response
|
552
568
|
resp.gsub!(/^#.*?\n\n/,"") # toss the 'total" line
|
553
569
|
resp.gsub!(/^\n/m,"") # toss blank lines
|
570
|
+
while resp.match(/CF\.\{[\w_ ]*[ ]+[\w ]*\}/) #replace CF spaces with underscores
|
571
|
+
resp.gsub!(/CF\.\{([\w_ ]*)([ ]+)([\w ]*)\}/, 'CF.{\1_\3}')
|
572
|
+
end
|
554
573
|
th = TMail::Mail.parse(resp)
|
555
574
|
attachments = []
|
556
575
|
th.each_header do |k,v|
|
@@ -601,8 +620,11 @@ class RT_Client
|
|
601
620
|
unnamed = false if unnamed.to_s == "0"
|
602
621
|
id = $~[1] if id =~ /ticket\/(\d+)/
|
603
622
|
resp = @site["ticket/#{id}/attachments"].get
|
604
|
-
resp.gsub!(/RT\/\d
|
623
|
+
resp.gsub!(/RT\/\d+\.\d+\.\d+\s\d{3}\s.*\n\n/,"") # toss the HTTP response
|
605
624
|
resp.gsub!(/^\n/m,"") # toss blank lines
|
625
|
+
while resp.match(/CF\.\{[\w_ ]*[ ]+[\w ]*\}/) #replace CF spaces with underscores
|
626
|
+
resp.gsub!(/CF\.\{([\w_ ]*)([ ]+)([\w ]*)\}/, 'CF.{\1_\3}')
|
627
|
+
end
|
606
628
|
th = TMail::Mail.parse(resp)
|
607
629
|
list = []
|
608
630
|
pattern = /(\d+:\s.*?\)),/
|
@@ -658,7 +680,10 @@ class RT_Client
|
|
658
680
|
end
|
659
681
|
tid = $~[1] if tid =~ /ticket\/(\d+)/
|
660
682
|
resp = @site["ticket/#{tid}/attachments/#{aid}"].get
|
661
|
-
resp.gsub!(/RT\/\d
|
683
|
+
resp.gsub!(/RT\/\d+\.\d+\.\d+\s\d{3}\s.*\n\n/,"") # toss HTTP response
|
684
|
+
while resp.match(/CF\.\{[\w_ ]*[ ]+[\w ]*\}/) #replace CF spaces with underscores
|
685
|
+
resp.gsub!(/CF\.\{([\w_ ]*)([ ]+)([\w ]*)\}/, 'CF.{\1_\3}')
|
686
|
+
end
|
662
687
|
headers = TMail::Mail.parse(resp)
|
663
688
|
reply = {}
|
664
689
|
headers.each_header do |k,v|
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rt-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 1
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 3
|
9
|
-
-
|
10
|
-
version: 0.3.
|
9
|
+
- 9
|
10
|
+
version: 0.3.9
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Tom Lahti
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date:
|
18
|
+
date: 2011-08-22 00:00:00 -07:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|