imified 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
data/imified.gemspec CHANGED
@@ -22,7 +22,7 @@ Gem::Specification.new do |s|
22
22
  s.require_paths = ["lib"]
23
23
 
24
24
  s.add_dependency 'activesupport'
25
+ s.add_dependency 'nokogiri'
25
26
 
26
27
  s.add_development_dependency 'rspec'
27
-
28
28
  end
@@ -0,0 +1,24 @@
1
+ class Imified::Userkey
2
+ def self.find(recipient)
3
+ if recipient.include?('@')
4
+ find_userkey_by_email(recipient)
5
+ else
6
+ recipient
7
+ end
8
+ end
9
+
10
+ private
11
+
12
+ def self.find_userkey_by_email(email, attempt = 1)
13
+ Imified.user_list ||= Imified.get_all_users
14
+ recipient = Imified.user_list.xpath("//user/screenname[text() = '#{email}']/../userkey/text()").map(&:to_s).join(',')
15
+ recipient = update_users_and_try_again(email) if recipient.nil? && attempt == 1
16
+ recipient
17
+ end
18
+
19
+ def self.update_users_and_try_again(email)
20
+ Imified.get_all_users
21
+ self.find_userkey_by_email(email, 2)
22
+ end
23
+
24
+ end
@@ -1,3 +1,3 @@
1
1
  module Imified
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
data/lib/imified.rb CHANGED
@@ -1,9 +1,11 @@
1
1
  require 'active_support/core_ext/module/attribute_accessors'
2
2
  require 'net/https'
3
+ require 'nokogiri'
3
4
  require 'uri'
4
5
 
5
6
  module Imified
6
7
  autoload :Request, 'imified/request'
8
+ autoload :Userkey, 'imified/userkey'
7
9
  autoload :Version, 'imified/version'
8
10
 
9
11
  # Imified API url
@@ -18,6 +20,9 @@ module Imified
18
20
  # User's Imified account password
19
21
  mattr_accessor :password
20
22
 
23
+ # User's your bot knows about
24
+ mattr_accessor :user_list
25
+
21
26
  # Default way to setup Imified.
22
27
  # To be used during initialization.
23
28
  #
@@ -102,6 +107,7 @@ module Imified
102
107
  def Imified.get_all_users
103
108
  request = Imified::Request.new
104
109
  response = request.submit
110
+ self.user_list = Nokogiri::XML(response)
105
111
  end
106
112
 
107
113
  def Imified.get_user(userkey)
@@ -112,7 +118,7 @@ module Imified
112
118
 
113
119
  def Imified.send_message(msg, options)
114
120
  request = Imified::Request.new('send')
115
- request.add_field 'userkey', options[:to]
121
+ request.add_field 'userkey', Imified::Userkey.find(options[:to])
116
122
  request.add_field 'msg', msg
117
123
  response = request.submit
118
124
  end
data/spec/imified_spec.rb CHANGED
@@ -60,6 +60,15 @@ describe Imified do
60
60
  Imified.send_message('A Message', :to => 'someones userkey')
61
61
  end
62
62
 
63
+ it "should lookup the userkey using the specified email" do
64
+ Imified.stub!(:user_list).
65
+ and_return(example_get_all_users_response)
66
+ mock_request.
67
+ should_receive(:add_field).
68
+ with('userkey', '123456789')
69
+ Imified.send_message('A Message', :to => 'me@jkarayusuf.com')
70
+ end
71
+
63
72
  it "should submit the request" do
64
73
  mock_request.should_receive(:submit)
65
74
  Imified.send_message('A Message', :to => 'someones userkey')
data/spec/spec_helper.rb CHANGED
@@ -12,4 +12,26 @@ RSpec.configure do |config|
12
12
  Imified.password = 'rspec_password'
13
13
  Imified.botkey = 'rspec_botkey'
14
14
  end
15
+
16
+ def example_get_all_users_response
17
+ response = %Q{
18
+ <rsp stat="ok">
19
+ <users count="1">
20
+ <user>
21
+ <status>Online</status>
22
+ <extendedstatus>Working on an IMified bot</extendedstatus>
23
+ <userkey>123456789</userkey>
24
+ <screenname>me@jkarayusuf.com</screenname>
25
+ <user>user_screenname</user>
26
+ <network>AIM</network>
27
+ <created>2007-09-26 13:30:25</created>
28
+ <lastonline>2007-09-28 15:20:15</lastonline>
29
+ <lastcall>2007-09-28 15:20:15</lastcall>
30
+ </user>
31
+ </users>
32
+ </rsp>
33
+ }
34
+
35
+ Nokogiri::XML(response)
36
+ end
15
37
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: imified
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-10-11 00:00:00.000000000Z
12
+ date: 2011-11-03 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
16
- requirement: &70117993265980 !ruby/object:Gem::Requirement
16
+ requirement: &70239258913500 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,21 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70117993265980
24
+ version_requirements: *70239258913500
25
+ - !ruby/object:Gem::Dependency
26
+ name: nokogiri
27
+ requirement: &70239258912960 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: *70239258912960
25
36
  - !ruby/object:Gem::Dependency
26
37
  name: rspec
27
- requirement: &70117993265540 !ruby/object:Gem::Requirement
38
+ requirement: &70239258912420 !ruby/object:Gem::Requirement
28
39
  none: false
29
40
  requirements:
30
41
  - - ! '>='
@@ -32,7 +43,7 @@ dependencies:
32
43
  version: '0'
33
44
  type: :development
34
45
  prerelease: false
35
- version_requirements: *70117993265540
46
+ version_requirements: *70239258912420
36
47
  description: ! " The IMified API exposes methods for sending messages,\n fetching
37
48
  user details, and updating status. To get started,\n you'll
38
49
  need to sign up for a free developer account at:\n http://imified.com/account/signup "
@@ -50,6 +61,7 @@ files:
50
61
  - imified.gemspec
51
62
  - lib/imified.rb
52
63
  - lib/imified/request.rb
64
+ - lib/imified/userkey.rb
53
65
  - lib/imified/version.rb
54
66
  - spec/imified_spec.rb
55
67
  - spec/request_spec.rb