rt-client 0.7.2 → 0.7.3

Sign up to get free protection for your applications and to get access to all the features.
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