imified 0.0.3 → 0.0.4
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/imified.gemspec +1 -1
- data/lib/imified/userkey.rb +24 -0
- data/lib/imified/version.rb +1 -1
- data/lib/imified.rb +7 -1
- data/spec/imified_spec.rb +9 -0
- data/spec/spec_helper.rb +22 -0
- metadata +18 -6
data/imified.gemspec
CHANGED
@@ -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
|
data/lib/imified/version.rb
CHANGED
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.
|
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-
|
12
|
+
date: 2011-11-03 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activesupport
|
16
|
-
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: *
|
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: &
|
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: *
|
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
|