imified 0.0.2
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/.gitignore +7 -0
- data/.rspec +2 -0
- data/Gemfile +4 -0
- data/README.rdoc +61 -0
- data/Rakefile +1 -0
- data/imified.gemspec +28 -0
- data/lib/imified/request.rb +39 -0
- data/lib/imified/version.rb +3 -0
- data/lib/imified.rb +120 -0
- data/spec/imified_spec.rb +144 -0
- data/spec/request_spec.rb +58 -0
- data/spec/spec_helper.rb +15 -0
- metadata +86 -0
data/.gitignore
ADDED
data/.rspec
ADDED
data/Gemfile
ADDED
data/README.rdoc
ADDED
@@ -0,0 +1,61 @@
|
|
1
|
+
== Imified
|
2
|
+
|
3
|
+
Easily IM enable your Ruby or Rails applications with one simple API.
|
4
|
+
|
5
|
+
The Imified gem aims to be as flexible as possible while helping you
|
6
|
+
easily integrate instant messaging into your application.
|
7
|
+
|
8
|
+
Imified was designed to be as simple as possible. For the first implementation
|
9
|
+
it will simply contain the public API methods specified on the Imified website.
|
10
|
+
(http://www.imified.com/developers/api)
|
11
|
+
|
12
|
+
== Create an Imified account
|
13
|
+
|
14
|
+
1. Create your FREE accout at http://www.imified.com/account/sign_up.
|
15
|
+
|
16
|
+
2. Create your bot.
|
17
|
+
Imified will ask you to provide the following information:
|
18
|
+
|
19
|
+
- Name
|
20
|
+
- Screen Name
|
21
|
+
- URL (Note: Leave this blank until you need it.)
|
22
|
+
|
23
|
+
3. Create a screenname for your bot.
|
24
|
+
Choose one of the following services:
|
25
|
+
|
26
|
+
- Jabber (www.jabber.org)
|
27
|
+
- AIM (www.aim.com)
|
28
|
+
- MSN (signup.live.com)
|
29
|
+
- YAHOO (http://edit.yahoo.com/registration?.intl=us&new=1&.done=http%3A//mail.yahoo.com&.src=ym)
|
30
|
+
- Google Talk (www.google.com/talk)
|
31
|
+
- Twitter (www.twitter.com)
|
32
|
+
|
33
|
+
4. Login to your imified bot and connect the bot to the newly created account.
|
34
|
+
|
35
|
+
== Installation
|
36
|
+
|
37
|
+
Install the gem:
|
38
|
+
|
39
|
+
gem install imified
|
40
|
+
|
41
|
+
Setup IMified when your application initializes:
|
42
|
+
|
43
|
+
Imified.setup do |config|
|
44
|
+
config.botkey = 'botkey of the bot you want to use'
|
45
|
+
config.email_address = 'your imified account email address'
|
46
|
+
config.password = 'your imified account password'
|
47
|
+
end
|
48
|
+
|
49
|
+
== Usage
|
50
|
+
|
51
|
+
# Send a message to a user or list of users.
|
52
|
+
Imified.send_message("Welcome to Imified", :to => 'userkey')
|
53
|
+
|
54
|
+
# Fetch the user details for a specific user.
|
55
|
+
Imified.get_user(userkey)
|
56
|
+
|
57
|
+
# Fetch a list of all of the users known to the bot.
|
58
|
+
Imified.get_all_users
|
59
|
+
|
60
|
+
# Update the status of your bot
|
61
|
+
Imified.update_status
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require 'bundler/gem_tasks'
|
data/imified.gemspec
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "imified/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "imified"
|
7
|
+
s.version = Imified::VERSION
|
8
|
+
s.authors = ["Joe Karayusuf"]
|
9
|
+
s.email = ["jkarayusuf@gmail.com"]
|
10
|
+
s.homepage = "https://github.com/karayusuf/imified"
|
11
|
+
s.summary = %q{ API for sending Text/Instant Messages using IMified.com }
|
12
|
+
s.description = %q{ The IMified API exposes methods for sending messages,
|
13
|
+
fetching user details, and updating status. To get started,
|
14
|
+
you'll need to sign up for a free developer account at:
|
15
|
+
http://imified.com/account/signup }
|
16
|
+
|
17
|
+
s.rubyforge_project = "imified"
|
18
|
+
|
19
|
+
s.files = `git ls-files`.split("\n")
|
20
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
21
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
22
|
+
s.require_paths = ["lib"]
|
23
|
+
|
24
|
+
s.add_dependency 'activesupport', '2.3.11'
|
25
|
+
|
26
|
+
s.add_development_dependency 'rspec'
|
27
|
+
|
28
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# request.rb
|
2
|
+
#
|
3
|
+
# Net::HTTP::Post wrapper
|
4
|
+
#
|
5
|
+
# All API calls for requesting user details and sending messages
|
6
|
+
# should be sent via HTTP POST to the following URL:
|
7
|
+
# https://www.imified.com/api/bot/.
|
8
|
+
#
|
9
|
+
# Authentication is managed using Basic HTTP authentication.
|
10
|
+
# Every request must include the Authorization HTTP header
|
11
|
+
# with your IMified username and password.
|
12
|
+
#
|
13
|
+
class Imified::Request < Net::HTTP::Post
|
14
|
+
URL = URI.parse(Imified::URL)
|
15
|
+
|
16
|
+
# Construct a Net::HTTP::Post object.
|
17
|
+
# Prepare basic authentication using the username and
|
18
|
+
# password specified in the configuration.
|
19
|
+
#
|
20
|
+
# == Usage
|
21
|
+
# Imified::Request.new
|
22
|
+
#
|
23
|
+
# @return[Net::HTTP::Post]
|
24
|
+
def initialize(api_method = 'getallusers')
|
25
|
+
Imified.validate_configuration!
|
26
|
+
super(URL.path)
|
27
|
+
|
28
|
+
self.basic_auth Imified.email_address, Imified.password
|
29
|
+
self.add_field 'apimethod', api_method
|
30
|
+
self.add_field 'botkey', Imified.botkey
|
31
|
+
end
|
32
|
+
|
33
|
+
# Submit the request to Imified.
|
34
|
+
def submit
|
35
|
+
http = Net::HTTP.new(URL.host, URL.port)
|
36
|
+
http.use_ssl = true
|
37
|
+
http.start { |send| send.request(self) }.body
|
38
|
+
end
|
39
|
+
end
|
data/lib/imified.rb
ADDED
@@ -0,0 +1,120 @@
|
|
1
|
+
require 'active_support'
|
2
|
+
require 'net/https'
|
3
|
+
require 'uri'
|
4
|
+
|
5
|
+
module Imified
|
6
|
+
autoload :Request, 'imified/request'
|
7
|
+
autoload :User, 'imified/user'
|
8
|
+
autoload :Version, 'imified/version'
|
9
|
+
|
10
|
+
# Imified API url
|
11
|
+
URL = 'https://www.imified.com/api/bot/'
|
12
|
+
|
13
|
+
# User's unique botkey
|
14
|
+
mattr_accessor :botkey
|
15
|
+
|
16
|
+
# User's Imified account name
|
17
|
+
mattr_accessor :email_address
|
18
|
+
|
19
|
+
# User's Imified account password
|
20
|
+
mattr_accessor :password
|
21
|
+
|
22
|
+
# Default way to setup Imified.
|
23
|
+
# To be used during initialization.
|
24
|
+
#
|
25
|
+
# == Example:
|
26
|
+
#
|
27
|
+
# Imified.setup do |config|
|
28
|
+
# config.botkey = 'the bot you would like to use'
|
29
|
+
# config.email_address = 'your imified email address'
|
30
|
+
# config.password = 'your imified password'
|
31
|
+
# end
|
32
|
+
#
|
33
|
+
def self.setup
|
34
|
+
yield self
|
35
|
+
end
|
36
|
+
|
37
|
+
# Validate that the Imified module has been configured
|
38
|
+
# with the users account information. Raise an error
|
39
|
+
# containing instructions to properly configure the
|
40
|
+
# module.
|
41
|
+
#
|
42
|
+
def Imified.validate_configuration!
|
43
|
+
if Imified.botkey.nil? ||
|
44
|
+
Imified.email_address.nil? ||
|
45
|
+
Imified.password.nil?
|
46
|
+
raise ArgumentError, "Invalid Configuration.
|
47
|
+
In order to use the Imified API, you must
|
48
|
+
first run the setup and provide your account
|
49
|
+
information.
|
50
|
+
|
51
|
+
This can be done using the following syntax:
|
52
|
+
|
53
|
+
Imified.setup do |config|
|
54
|
+
config.botkey = 'your botkey'
|
55
|
+
config.email_address = 'your email address'
|
56
|
+
config.password = 'your password'
|
57
|
+
end"
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
# Fetch a list of all of the bots known users.
|
62
|
+
# Includes a total count of the users.
|
63
|
+
#
|
64
|
+
# == Example
|
65
|
+
#
|
66
|
+
# Imified.get_all_users
|
67
|
+
#
|
68
|
+
# == Return
|
69
|
+
#
|
70
|
+
# Successful Response:
|
71
|
+
# <rsp stat="ok">
|
72
|
+
# <users count="2">
|
73
|
+
# <user>
|
74
|
+
# <status>Online</status>
|
75
|
+
# <extendedstatus>Working on an IMified bot</extendedstatus>
|
76
|
+
# <userkey>123456789</userkey>
|
77
|
+
# <screenname>user_screenname</screenname> *deprecated
|
78
|
+
# <user>user_screenname</user>
|
79
|
+
# <network>AIM</network>
|
80
|
+
# <created>2007-09-26 13:30:25</created>
|
81
|
+
# <lastonline>2007-09-28 15:20:15</lastonline>
|
82
|
+
# <lastcall>2007-09-28 15:20:15</lastcall>
|
83
|
+
# </user>
|
84
|
+
# <user>
|
85
|
+
# <status>Offline</status>
|
86
|
+
# <extendedstatus></extendedstatus>
|
87
|
+
# <userkey>123456789</userkey>
|
88
|
+
# <screenname>user_screenname</screenname> *deprecated
|
89
|
+
# <user>user_screenname</user>
|
90
|
+
# <network>Jabber</network>
|
91
|
+
# <created>2007-09-26 13:30:25</created>
|
92
|
+
# <lastonline>2007-09-28 15:20:15</lastonline>
|
93
|
+
# <lastcall>2007-09-28 15:20:15</lastcall>
|
94
|
+
# </user>
|
95
|
+
# </users>
|
96
|
+
# </rsp>
|
97
|
+
#
|
98
|
+
# Failed Response:
|
99
|
+
# <rsp stat="fail">
|
100
|
+
# <err msg="error message text"/>
|
101
|
+
# </rsp>
|
102
|
+
#
|
103
|
+
def Imified.get_all_users
|
104
|
+
request = Imified::Request.new
|
105
|
+
response = request.submit
|
106
|
+
end
|
107
|
+
|
108
|
+
def Imified.get_user(userkey)
|
109
|
+
request = Imified::Request.new('getuser')
|
110
|
+
request.add_field 'userkey', userkey
|
111
|
+
response = request.submit
|
112
|
+
end
|
113
|
+
|
114
|
+
def Imified.send_message(msg, options)
|
115
|
+
request = Imified::Request.new('send')
|
116
|
+
request.add_field 'userkey', options[:to]
|
117
|
+
request.add_field 'msg', msg
|
118
|
+
response = request.submit
|
119
|
+
end
|
120
|
+
end
|
@@ -0,0 +1,144 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Imified do
|
4
|
+
|
5
|
+
it "should know the Imified URL" do
|
6
|
+
Imified::URL.should eql('https://www.imified.com/api/bot/')
|
7
|
+
end
|
8
|
+
|
9
|
+
context "when the user is specifying their accout information" do
|
10
|
+
before(:each) do
|
11
|
+
Imified.setup do |config|
|
12
|
+
config.botkey = 'my botkey'
|
13
|
+
config.email_address = 'my email address'
|
14
|
+
config.password = 'my super secret password'
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
it "should set the botkey to the specified value" do
|
19
|
+
Imified.botkey.should eql('my botkey')
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should set the email address to the specified value" do
|
23
|
+
Imified.email_address.should eql('my email address')
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should set the password to the specified value" do
|
27
|
+
Imified.password.should eql('my super secret password')
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
|
32
|
+
context "when sending a message to a user" do
|
33
|
+
let(:mock_request) { double('imified_request').as_null_object }
|
34
|
+
let(:mock_response) { double('imfiied_response').as_null_object }
|
35
|
+
|
36
|
+
before(:each) do
|
37
|
+
Imified::Request.stub(:new).and_return(mock_request)
|
38
|
+
mock_request.stub(:submit).and_return(mock_response)
|
39
|
+
end
|
40
|
+
|
41
|
+
it "should prepare a new request to 'send'" do
|
42
|
+
Imified::Request.
|
43
|
+
should_receive(:new).
|
44
|
+
with('send').
|
45
|
+
and_return(mock_request)
|
46
|
+
Imified.send_message('Rspec message', :to => 'userkey')
|
47
|
+
end
|
48
|
+
|
49
|
+
it "should add the specified message to the request" do
|
50
|
+
mock_request.
|
51
|
+
should_receive(:add_field).
|
52
|
+
with('msg', 'a message to send')
|
53
|
+
Imified.send_message('a message to send', :to => 'a user')
|
54
|
+
end
|
55
|
+
|
56
|
+
it "should add the specified userkey to the request" do
|
57
|
+
mock_request.
|
58
|
+
should_receive(:add_field).
|
59
|
+
with('userkey', 'someones userkey')
|
60
|
+
Imified.send_message('A Message', :to => 'someones userkey')
|
61
|
+
end
|
62
|
+
|
63
|
+
it "should submit the request" do
|
64
|
+
mock_request.should_receive(:submit)
|
65
|
+
Imified.send_message('A Message', :to => 'someones userkey')
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
context "when fetching a list of the bot's users" do
|
70
|
+
let(:mock_request) { double('imified_request').as_null_object }
|
71
|
+
let(:mock_response) { double('imfiied_response').as_null_object }
|
72
|
+
|
73
|
+
before(:each) do
|
74
|
+
Imified::Request.stub(:new).and_return(mock_request)
|
75
|
+
mock_request.stub(:submit).and_return(mock_response)
|
76
|
+
end
|
77
|
+
|
78
|
+
it "should prepare a new request" do
|
79
|
+
Imified::Request.should_receive(:new)
|
80
|
+
Imified.get_all_users
|
81
|
+
end
|
82
|
+
|
83
|
+
it "should submit the request" do
|
84
|
+
mock_request.should_receive(:submit)
|
85
|
+
Imified.get_all_users
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
context "when fetching details for a specified user" do
|
90
|
+
let(:mock_request) { double('imified_request').as_null_object }
|
91
|
+
let(:mock_response) { double('imified_response').as_null_object }
|
92
|
+
|
93
|
+
before(:each) do
|
94
|
+
Imified::Request.stub(:new).and_return(mock_request)
|
95
|
+
mock_request.stub(:submit).and_return(mock_response)
|
96
|
+
end
|
97
|
+
|
98
|
+
it "should prepare a new request to 'getuser'" do
|
99
|
+
Imified::Request.
|
100
|
+
should_receive(:new).
|
101
|
+
with('getuser')
|
102
|
+
Imified.get_user('someones userkey')
|
103
|
+
end
|
104
|
+
|
105
|
+
it "should add the specified userkey to the request" do
|
106
|
+
mock_request.
|
107
|
+
should_receive(:add_field).
|
108
|
+
with('userkey', 'someones userkey')
|
109
|
+
Imified.get_user('someones userkey')
|
110
|
+
end
|
111
|
+
|
112
|
+
it "should submit the request" do
|
113
|
+
mock_request.should_receive(:submit)
|
114
|
+
Imified.get_user('userkey')
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
118
|
+
context "when validating the configuration" do
|
119
|
+
it "should not raise an error if all of the values are set" do
|
120
|
+
Imified.setup do |config|
|
121
|
+
config.botkey = 'botkey'
|
122
|
+
config.email_address = 'test email'
|
123
|
+
config.password = 'super secret'
|
124
|
+
end
|
125
|
+
|
126
|
+
expect { Imified.validate_configuration! }.to_not raise_error(ArgumentError)
|
127
|
+
end
|
128
|
+
|
129
|
+
it "should raise an error if the botkey has not been specified" do
|
130
|
+
Imified.stub(:botkey).and_return(nil)
|
131
|
+
expect { Imified.validate_configuration! }.to raise_error(ArgumentError)
|
132
|
+
end
|
133
|
+
|
134
|
+
it "should raise an error if the email address has not been specified" do
|
135
|
+
Imified.stub(:email_address).and_return(nil)
|
136
|
+
expect { Imified.validate_configuration! }.to raise_error(ArgumentError)
|
137
|
+
end
|
138
|
+
|
139
|
+
it "should raise an error if the password has not been specified" do
|
140
|
+
Imified.stub(:password).and_return(nil)
|
141
|
+
expect { Imified.validate_configuration! }.to raise_error(ArgumentError)
|
142
|
+
end
|
143
|
+
end
|
144
|
+
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Imified::Request do
|
4
|
+
|
5
|
+
it "should validate the user's imified configuration" do
|
6
|
+
Imified.
|
7
|
+
should_receive(:validate_configuration!).
|
8
|
+
and_return(nil)
|
9
|
+
Imified::Request.new
|
10
|
+
end
|
11
|
+
|
12
|
+
it "should use the imified url" do
|
13
|
+
Imified::Request::URL.should == URI.parse('https://www.imified.com/api/bot/')
|
14
|
+
end
|
15
|
+
|
16
|
+
it "should use basic authentication" do
|
17
|
+
Imified::Request.any_instance.
|
18
|
+
should_receive(:basic_auth).
|
19
|
+
with('rspec_email_address', 'rspec_password')
|
20
|
+
Imified::Request.new
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should default to the 'getallusers' api method" do
|
24
|
+
request = Imified::Request.new
|
25
|
+
request.get_fields('apimethod').should eql(['getallusers'])
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should allow the 'getuser' method to be used" do
|
29
|
+
request = Imified::Request.new('getuser')
|
30
|
+
request.get_fields('apimethod').should eql(['getuser'])
|
31
|
+
end
|
32
|
+
|
33
|
+
context "when being submitted with valid account information" do
|
34
|
+
let(:mock_net_http) { double('net_http').as_null_object }
|
35
|
+
let(:mock_net_http_response) { double('net_http_response').as_null_object }
|
36
|
+
|
37
|
+
before(:each) { Net::HTTP.stub!(:new).and_return(mock_net_http) }
|
38
|
+
|
39
|
+
it "should build an HTTP request" do
|
40
|
+
Net::HTTP.should_receive(:new).
|
41
|
+
with(Imified::Request::URL.host, Imified::Request::URL.port)
|
42
|
+
Imified::Request.new.submit
|
43
|
+
end
|
44
|
+
|
45
|
+
it "should use ssl" do
|
46
|
+
mock_net_http.should_receive(:use_ssl=).with(true)
|
47
|
+
Imified::Request.new.submit
|
48
|
+
end
|
49
|
+
|
50
|
+
it "should send the request" do
|
51
|
+
mock_net_http.should_receive(:start).and_return(mock_net_http_response)
|
52
|
+
mock_net_http_response.should_receive(:body)
|
53
|
+
Imified::Request.new.submit
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
|
58
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'bundler/setup'
|
3
|
+
|
4
|
+
require 'imified'
|
5
|
+
|
6
|
+
RSpec.configure do |config|
|
7
|
+
config.mock_framework = :rspec
|
8
|
+
|
9
|
+
# Default configuration for tests.
|
10
|
+
config.before(:each) do
|
11
|
+
Imified.email_address = 'rspec_email_address'
|
12
|
+
Imified.password = 'rspec_password'
|
13
|
+
Imified.botkey = 'rspec_botkey'
|
14
|
+
end
|
15
|
+
end
|
metadata
ADDED
@@ -0,0 +1,86 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: imified
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.2
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Joe Karayusuf
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2011-08-07 00:00:00.000000000 -04:00
|
13
|
+
default_executable:
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: activesupport
|
17
|
+
requirement: &70288113780800 !ruby/object:Gem::Requirement
|
18
|
+
none: false
|
19
|
+
requirements:
|
20
|
+
- - =
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: 2.3.11
|
23
|
+
type: :runtime
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: *70288113780800
|
26
|
+
- !ruby/object:Gem::Dependency
|
27
|
+
name: rspec
|
28
|
+
requirement: &70288113780260 !ruby/object:Gem::Requirement
|
29
|
+
none: false
|
30
|
+
requirements:
|
31
|
+
- - ! '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: *70288113780260
|
37
|
+
description: ! " The IMified API exposes methods for sending messages,\n fetching
|
38
|
+
user details, and updating status. To get started,\n you'll
|
39
|
+
need to sign up for a free developer account at:\n http://imified.com/account/signup "
|
40
|
+
email:
|
41
|
+
- jkarayusuf@gmail.com
|
42
|
+
executables: []
|
43
|
+
extensions: []
|
44
|
+
extra_rdoc_files: []
|
45
|
+
files:
|
46
|
+
- .gitignore
|
47
|
+
- .rspec
|
48
|
+
- Gemfile
|
49
|
+
- README.rdoc
|
50
|
+
- Rakefile
|
51
|
+
- imified.gemspec
|
52
|
+
- lib/imified.rb
|
53
|
+
- lib/imified/request.rb
|
54
|
+
- lib/imified/version.rb
|
55
|
+
- spec/imified_spec.rb
|
56
|
+
- spec/request_spec.rb
|
57
|
+
- spec/spec_helper.rb
|
58
|
+
has_rdoc: true
|
59
|
+
homepage: https://github.com/karayusuf/imified
|
60
|
+
licenses: []
|
61
|
+
post_install_message:
|
62
|
+
rdoc_options: []
|
63
|
+
require_paths:
|
64
|
+
- lib
|
65
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
66
|
+
none: false
|
67
|
+
requirements:
|
68
|
+
- - ! '>='
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
version: '0'
|
71
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
72
|
+
none: false
|
73
|
+
requirements:
|
74
|
+
- - ! '>='
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
77
|
+
requirements: []
|
78
|
+
rubyforge_project: imified
|
79
|
+
rubygems_version: 1.6.2
|
80
|
+
signing_key:
|
81
|
+
specification_version: 3
|
82
|
+
summary: API for sending Text/Instant Messages using IMified.com
|
83
|
+
test_files:
|
84
|
+
- spec/imified_spec.rb
|
85
|
+
- spec/request_spec.rb
|
86
|
+
- spec/spec_helper.rb
|