rt-client 0.7.2 → 0.7.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.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/rt_client.rb +44 -8
  3. data/rtxmlsrv.rb +30 -0
  4. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: dab7272ab77c7f6521aa21b49b716db36a9d52cb
4
- data.tar.gz: d257ad7b01a9c98e067cf23ce13ed1dc0ebc803c
3
+ metadata.gz: d1f1ed8631dd3ae08e71910888b555c9eac6e376
4
+ data.tar.gz: 5a133e46eccc857735dc20a53dc7878294905525
5
5
  SHA512:
6
- metadata.gz: 4dabbbc3961d59f93cbd4947fde9030d41387ef5f53222b9c210dd89f241cd47f774828803477c6e7d0d9f3bb2170fceffb804c20c356e6bc9c3d8191d745e4a
7
- data.tar.gz: cc760d9f7f55459387239b259b22fc6888eb964144be9b83780e840328d9d79880d53880179491679f84f71852106ed75c13613c7b82ad8871d5ec532b4f6515
6
+ metadata.gz: da18cc6fb24203209923458ddc0030652c21a3765dbe1a011b37a3daaa78056b08daf123a597761e283ce398c55db5852699cbbed4625f04c366b4d5d934b932
7
+ data.tar.gz: dfa5002402f2de2eeb51e5c89de0715a30e143446b66f5a0482d011a35af099890999722b7cdbbc2142d14176e60b771a6af0f9b7e89869ae77510a2177292c5
data/rt_client.rb CHANGED
@@ -34,7 +34,7 @@ require "rest_client"
34
34
 
35
35
  class RT_Client
36
36
 
37
- UA = "Mozilla/5.0 ruby RT Client Interface 0.7.2"
37
+ UA = "Mozilla/5.0 ruby RT Client Interface 0.7.3"
38
38
  attr_reader :status, :site, :version, :cookies, :server, :user, :cookie
39
39
 
40
40
  # Create a new RT_Client object. Load up our stored cookie and check it.
@@ -67,7 +67,7 @@ class RT_Client
67
67
  # cookies=<directory>
68
68
  def initialize(*params)
69
69
  @boundary = "----xYzZY#{rand(1000000).to_s}xYzZY"
70
- @version = "0.7.2"
70
+ @version = "0.7.3"
71
71
  @status = "Not connected"
72
72
  @server = "http://localhost/"
73
73
  @user = "rt_user"
@@ -476,11 +476,8 @@ class RT_Client
476
476
  id = id.to_s
477
477
  id = $~[1] if id =~ /ticket\/(\d+)/
478
478
  resp = @site["ticket/#{id}/history?format=#{format[0,1]}"].get
479
- resp.gsub!(0x1C.chr,'[FS]')
480
- resp.gsub!(0x1D.chr,'[GS]')
481
- resp.gsub!(0x1E.chr,'[RS]')
482
- resp.gsub!(0x1F.chr,'[US]')
483
-
479
+ resp = sterilize(resp)
480
+
484
481
  if format[0,1] == "s"
485
482
  if comments
486
483
  h = resp.split("\n").select{ |l| l =~ /^\d+:/ }
@@ -560,6 +557,7 @@ class RT_Client
560
557
  end
561
558
  reply = {}
562
559
  resp = @site["ticket/#{id}/history/id/#{history}"].get
560
+ resp = sterilize(resp)
563
561
  return reply if resp =~ /not related/ # history id must be related to the ticket id
564
562
  resp.gsub!(/RT\/\d+\.\d+\.\d+\s\d{3}\s.*\n\n/,"") # toss the HTTP response
565
563
  resp.gsub!(/^#.*?\n\n/,"") # toss the 'total" line
@@ -783,7 +781,7 @@ class RT_Client
783
781
  ln_a = ln.split(/:/,2)
784
782
  ln_a.map! {|item| item.strip}
785
783
  ln_a[0].downcase!
786
- ret[ln_a[0]] = ln_a[1].tr("\u0000-\u001f\u007f\u2028",'')
784
+ ret[ln_a[0]] = ln_a[1]
787
785
  end
788
786
 
789
787
  return ret
@@ -830,6 +828,44 @@ class RT_Client
830
828
  return payload
831
829
  end
832
830
 
831
+ # Helper to replace control characters with string representations
832
+ # When Microsoft XML libraries hit these in an XML response, bad
833
+ # things happen.
834
+ def sterilize(str)
835
+ str.gsub!(0x00.chr,'[NUL]')
836
+ str.gsub!(0x01.chr,'[SOH]')
837
+ str.gsub!(0x02.chr,'[STX]')
838
+ str.gsub!(0x03.chr,'[ETX]')
839
+ str.gsub!(0x04.chr,'[EOT]')
840
+ str.gsub!(0x05.chr,'[ENQ]')
841
+ str.gsub!(0x06.chr,'[ACK]')
842
+ str.gsub!(0x07.chr,'[BEL]')
843
+ # 0x08 is backspace
844
+ # 0x09 is TAB
845
+ # 0x10 is line feed
846
+ str.gsub!(0x0B.chr,'[VT]')
847
+ # 0x0c is form feed
848
+ # 0x0d is carriage return
849
+ str.gsub!(0x0E.chr,'[SO]')
850
+ str.gsub!(0x0F.chr,'[SI]')
851
+ str.gsub!(0x10.chr,'[DLE]')
852
+ str.gsub!(0x11.chr,'[DC1]')
853
+ str.gsub!(0x12.chr,'[DC2]')
854
+ str.gsub!(0x13.chr,'[DC3]')
855
+ str.gsub!(0x14.chr,'[DC4]')
856
+ str.gsub!(0x15.chr,'[NAK]')
857
+ str.gsub!(0x16.chr,'[SYN]')
858
+ str.gsub!(0x17.chr,'[ETB]')
859
+ str.gsub!(0x18.chr,'[CAN]')
860
+ str.gsub!(0x19.chr,'[EM]')
861
+ str.gsub!(0x1a.chr,'[SUB]')
862
+ str.gsub!(0x1C.chr,'[FS]')
863
+ str.gsub!(0x1D.chr,'[GS]')
864
+ str.gsub!(0x1E.chr,'[RS]')
865
+ str.gsub!(0x1F.chr,'[US]')
866
+ str
867
+ end
868
+
833
869
  end
834
870
 
835
871
 
data/rtxmlsrv.rb CHANGED
@@ -55,6 +55,8 @@ class TicketSrv
55
55
  struct.remapkeys!
56
56
  if struct.has_key? :user and struct.has_key? :pass
57
57
  rt = RT_Client.new(:user => struct[:user], :pass => struct[:pass])
58
+ struct.delete(:user)
59
+ struct.delete(:pass)
58
60
  else
59
61
  rt = RT_Client.new
60
62
  end
@@ -69,6 +71,8 @@ class TicketSrv
69
71
  struct.remapkeys!
70
72
  if struct.has_key? :user and struct.has_key? :pass
71
73
  rt = RT_Client.new(:user => struct[:user], :pass => struct[:pass])
74
+ struct.delete(:user)
75
+ struct.delete(:pass)
72
76
  else
73
77
  rt = RT_Client.new
74
78
  end
@@ -83,6 +87,8 @@ class TicketSrv
83
87
  struct.remapkeys!
84
88
  if struct.has_key? :user and struct.has_key? :pass
85
89
  rt = RT_Client.new(:user => struct[:user], :pass => struct[:pass])
90
+ struct.delete(:user)
91
+ struct.delete(:pass)
86
92
  else
87
93
  rt = RT_Client.new
88
94
  end
@@ -96,6 +102,8 @@ class TicketSrv
96
102
  struct.remapkeys!
97
103
  if struct.has_key? :user and struct.has_key? :pass
98
104
  rt = RT_Client.new(:user => struct[:user], :pass => struct[:pass])
105
+ struct.delete(:user)
106
+ struct.delete(:pass)
99
107
  else
100
108
  rt = RT_Client.new
101
109
  end
@@ -109,6 +117,8 @@ class TicketSrv
109
117
  struct.remapkeys!
110
118
  if struct.has_key? :user and struct.has_key? :pass
111
119
  rt = RT_Client.new(:user => struct[:user], :pass => struct[:pass])
120
+ struct.delete(:user)
121
+ struct.delete(:pass)
112
122
  else
113
123
  rt = RT_Client.new
114
124
  end
@@ -122,6 +132,8 @@ class TicketSrv
122
132
  struct.remapkeys!
123
133
  if struct.has_key? :user and struct.has_key? :pass
124
134
  rt = RT_Client.new(:user => struct[:user], :pass => struct[:pass])
135
+ struct.delete(:user)
136
+ struct.delete(:pass)
125
137
  else
126
138
  rt = RT_Client.new
127
139
  end
@@ -135,6 +147,8 @@ class TicketSrv
135
147
  struct.remapkeys!
136
148
  if struct.has_key? :user and struct.has_key? :pass
137
149
  rt = RT_Client.new(:user => struct[:user], :pass => struct[:pass])
150
+ struct.delete(:user)
151
+ struct.delete(:pass)
138
152
  else
139
153
  rt = RT_Client.new
140
154
  end
@@ -148,6 +162,8 @@ class TicketSrv
148
162
  struct.remapkeys!
149
163
  if struct.has_key? :user and struct.has_key? :pass
150
164
  rt = RT_Client.new(:user => struct[:user], :pass => struct[:pass])
165
+ struct.delete(:user)
166
+ struct.delete(:pass)
151
167
  else
152
168
  rt = RT_Client.new
153
169
  end
@@ -161,6 +177,8 @@ class TicketSrv
161
177
  struct.remapkeys!
162
178
  if struct.has_key? :user and struct.has_key? :pass
163
179
  rt = RT_Client.new(:user => struct[:user], :pass => struct[:pass])
180
+ struct.delete(:user)
181
+ struct.delete(:pass)
164
182
  else
165
183
  rt = RT_Client.new
166
184
  end
@@ -174,6 +192,8 @@ class TicketSrv
174
192
  struct.remapkeys!
175
193
  if struct.has_key? :user and struct.has_key? :pass
176
194
  rt = RT_Client.new(:user => struct[:user], :pass => struct[:pass])
195
+ struct.delete(:user)
196
+ struct.delete(:pass)
177
197
  else
178
198
  rt = RT_Client.new
179
199
  end
@@ -187,6 +207,8 @@ class TicketSrv
187
207
  struct.remapkeys!
188
208
  if struct.has_key? :user and struct.has_key? :pass
189
209
  rt = RT_Client.new(:user => struct[:user], :pass => struct[:pass])
210
+ struct.delete(:user)
211
+ struct.delete(:pass)
190
212
  else
191
213
  rt = RT_Client.new
192
214
  end
@@ -200,6 +222,8 @@ class TicketSrv
200
222
  struct.remapkeys!
201
223
  if struct.has_key? :user and struct.has_key? :pass
202
224
  rt = RT_Client.new(:user => struct[:user], :pass => struct[:pass])
225
+ struct.delete(:user)
226
+ struct.delete(:pass)
203
227
  else
204
228
  rt = RT_Client.new
205
229
  end
@@ -213,6 +237,8 @@ class TicketSrv
213
237
  struct.remapkeys!
214
238
  if struct.has_key? :user and struct.has_key? :pass
215
239
  rt = RT_Client.new(:user => struct[:user], :pass => struct[:pass])
240
+ struct.delete(:user)
241
+ struct.delete(:pass)
216
242
  else
217
243
  rt = RT_Client.new
218
244
  end
@@ -226,6 +252,8 @@ class TicketSrv
226
252
  struct.remapkeys!
227
253
  if struct.has_key? :user and struct.has_key? :pass
228
254
  rt = RT_Client.new(:user => struct[:user], :pass => struct[:pass])
255
+ struct.delete(:user)
256
+ struct.delete(:pass)
229
257
  else
230
258
  rt = RT_Client.new
231
259
  end
@@ -239,6 +267,8 @@ class TicketSrv
239
267
  struct.remapkeys!
240
268
  if struct.has_key? :user and struct.has_key? :pass
241
269
  rt = RT_Client.new(:user => struct[:user], :pass => struct[:pass])
270
+ struct.delete(:user)
271
+ struct.delete(:pass)
242
272
  else
243
273
  rt = RT_Client.new
244
274
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rt-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.2
4
+ version: 0.7.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tom Lahti
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-12-16 00:00:00.000000000 Z
11
+ date: 2013-12-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rest-client