rt-client 0.3.9 → 0.4.0

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 (3) hide show
  1. data/rt/client.rb +15 -5
  2. data/rt/rtxmlsrv.rb +13 -0
  3. metadata +5 -5
data/rt/client.rb CHANGED
@@ -26,7 +26,7 @@ require 'pp'
26
26
 
27
27
  class RT_Client
28
28
 
29
- UA = "Mozilla/5.0 ruby RT Client Interface 0.3.9"
29
+ UA = "Mozilla/5.0 ruby RT Client Interface 0.4.0"
30
30
  attr_reader :status, :site, :version, :cookies, :server, :user, :cookie
31
31
 
32
32
  # Create a new RT_Client object. Load up our stored cookie and check it.
@@ -59,7 +59,7 @@ class RT_Client
59
59
  # cookies=<directory>
60
60
  def initialize(*params)
61
61
  @boundary = "----xYzZY#{rand(1000000).to_s}xYzZY"
62
- @version = "0.3.9"
62
+ @version = "0.4.0"
63
63
  @status = "Not connected"
64
64
  @server = "http://localhost/"
65
65
  @user = "rt_user"
@@ -320,15 +320,25 @@ class RT_Client
320
320
  @site["ticket/#{id}/comment"].post payload
321
321
  end
322
322
 
323
+ # Find RT user details from an email address
324
+ #
325
+ # rt.usersearch(:EmailAddress => 'some@email.com')
326
+ # => {"name"=>"rtlogin", "realname"=>"John Smith", "address1"=>"123 Main", etc }
323
327
  def usersearch(field_hash)
324
328
  if field_hash.has_key? :EmailAddress
325
329
  email = field_hash[:EmailAddress]
326
330
  else
327
331
  raise "RT_Client.usersearch requires a user email in the 'EmailAddress' key."
328
332
  end
329
- payload = compose(field_hash)
330
- resp = @site["search/user/?query=EmailAddress='#{email}'"].post payload
331
- resp
333
+ resp = @site["user/#{email}"].get
334
+ resp.gsub!(/RT\/\d+\.\d+\.\d+\s\d{3}\s.*\n\n/,"") # toss the HTTP response
335
+ reply = {}
336
+ return reply if resp =~ /No user named/
337
+ th = TMail::Mail.parse(resp)
338
+ th.each_header do |k,v|
339
+ reply["#{k}"] = v.to_s
340
+ end
341
+ reply
332
342
  end
333
343
 
334
344
  # correspond on a ticket. Requires a hash, which must have an :id key
data/rt/rtxmlsrv.rb CHANGED
@@ -131,6 +131,19 @@ class TicketSrv
131
131
  val
132
132
  end
133
133
 
134
+ # Find RT user details from email address via RT_Cleint::usersearch
135
+ def usersearch(struct)
136
+ struct.remapkeys!
137
+ if struct.has_key? :user and struct.has_key? :pass
138
+ rt = RT_Client.new(:user => struct[:user], :pass => struct[:pass])
139
+ else
140
+ rt = RT_Client.new
141
+ end
142
+ val = rt.usersearch(struct)
143
+ rt = nil
144
+ val
145
+ end
146
+
134
147
  # Allows new users to be edited or created if they don't exist
135
148
  def edit_or_create_user(struct)
136
149
  struct.remapkeys!
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: 1
4
+ hash: 15
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
- - 3
9
- - 9
10
- version: 0.3.9
8
+ - 4
9
+ - 0
10
+ version: 0.4.0
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: 2011-08-22 00:00:00 -07:00
18
+ date: 2011-08-23 00:00:00 -07:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency