kapow 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.
- data/History.txt +26 -0
- data/Rakefile +49 -0
- data/Readme.rdoc +47 -0
- data/kapow.gemspec +24 -0
- data/lib/kapow.rb +22 -0
- data/lib/kapow/credit.rb +21 -0
- data/lib/kapow/response.rb +43 -0
- data/lib/kapow/sms.rb +74 -0
- data/lib/kapow/version.rb +16 -0
- data/spec/response_spec.rb +54 -0
- data/spec/sms_spec.rb +91 -0
- metadata +65 -0
data/History.txt
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
== 0.4.0 2009-10-21
|
2
|
+
|
3
|
+
* Added additional options to the deliver sms method
|
4
|
+
* More specs
|
5
|
+
|
6
|
+
== 0.3.0 2008-08-12
|
7
|
+
|
8
|
+
* Renamed Message class to SMS, as this identifies the class better
|
9
|
+
|
10
|
+
== 0.2.0 2008-08-05
|
11
|
+
|
12
|
+
* Fixed typo in :long_sms option
|
13
|
+
* Added ability to send sms as flash message
|
14
|
+
* Added a few more specs
|
15
|
+
|
16
|
+
== 0.1.2 2008-07-29
|
17
|
+
|
18
|
+
* Improved rdoc
|
19
|
+
|
20
|
+
== 0.1.1 2008-07-28
|
21
|
+
|
22
|
+
* Updated gemspec as gem was not building on Github
|
23
|
+
|
24
|
+
== 0.1.0 2008-07-27
|
25
|
+
|
26
|
+
* Initial release.
|
data/Rakefile
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
%w(rubygems rake rake/rdoctask fileutils).each { |lib| require lib }
|
2
|
+
|
3
|
+
begin
|
4
|
+
require 'spec/rake/spectask'
|
5
|
+
rescue LoadError
|
6
|
+
puts 'To use rspec for testing you must install rspec gem:'
|
7
|
+
puts '$ sudo gem install rspec'
|
8
|
+
exit
|
9
|
+
end
|
10
|
+
|
11
|
+
include FileUtils
|
12
|
+
require File.join(File.dirname(__FILE__), 'lib', 'kapow', 'version')
|
13
|
+
|
14
|
+
AUTHOR = 'Kiean Johnson'
|
15
|
+
EMAIL = "kieran[AT]invisiblelines.com"
|
16
|
+
DESCRIPTION = "Ruby library for Kapow SMS gateway service."
|
17
|
+
GEM_NAME = 'kapow'
|
18
|
+
|
19
|
+
Rake::RDocTask.new('docs') do |rd|
|
20
|
+
rd.main = 'README.txt'
|
21
|
+
rd.rdoc_files.include('README', 'History.txt', 'License.txt', 'lib/**/*.rb')
|
22
|
+
rd.rdoc_dir = 'doc'
|
23
|
+
rd.options << '--tab-width=2'
|
24
|
+
rd.options << '--inline-source'
|
25
|
+
rd.options << '--line-numbers'
|
26
|
+
end
|
27
|
+
|
28
|
+
namespace :spec do
|
29
|
+
desc "Run the specs under spec"
|
30
|
+
Spec::Rake::SpecTask.new('all') do |t|
|
31
|
+
t.spec_opts = ['--options', "spec/spec.opts"]
|
32
|
+
t.spec_files = FileList['spec/*_spec.rb']
|
33
|
+
end
|
34
|
+
|
35
|
+
desc "Run the specs under spec in specdoc format"
|
36
|
+
Spec::Rake::SpecTask.new('doc') do |t|
|
37
|
+
t.spec_opts = ['--format', "specdoc"]
|
38
|
+
t.spec_files = FileList['spec/*_spec.rb']
|
39
|
+
end
|
40
|
+
|
41
|
+
desc "Run the specs in HTML format"
|
42
|
+
Spec::Rake::SpecTask.new('html') do |t|
|
43
|
+
t.spec_files = FileList['spec/*_spec.rb']
|
44
|
+
t.spec_opts = ['--format', "html:website/specs.html"]
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
desc "Default task is to run specs"
|
49
|
+
task :default => 'spec:all'
|
data/Readme.rdoc
ADDED
@@ -0,0 +1,47 @@
|
|
1
|
+
= Read Me
|
2
|
+
|
3
|
+
Kapow - Ruby library for Kapow SMS gateway service
|
4
|
+
|
5
|
+
by Kieran Johnson
|
6
|
+
http://github.com/kieranj/kapow
|
7
|
+
|
8
|
+
== Installation:
|
9
|
+
|
10
|
+
$ gem sources -a http://gems.github.com/ (you only need to do this once)
|
11
|
+
$ gem install kieranj-kapow
|
12
|
+
|
13
|
+
== Usage:
|
14
|
+
|
15
|
+
To use this library you first need to sign up for an account at www.kapow.com.
|
16
|
+
|
17
|
+
The library wraps the HTTP POST service provided as this has the advantages of
|
18
|
+
speed and an immediate response message.
|
19
|
+
|
20
|
+
require 'rubygems'
|
21
|
+
require 'kieranj-kapow'
|
22
|
+
|
23
|
+
# Create a new sms
|
24
|
+
msg = Kapow::SMS.new('username', 'password')
|
25
|
+
msg.deliver('mobile_no', 'sms')
|
26
|
+
|
27
|
+
All options supported by Kapow can be passed into the deliver method as a hash
|
28
|
+
|
29
|
+
# Send sms as a flash
|
30
|
+
msg.deliver('mobile_no', 'sms', :flash => true)
|
31
|
+
|
32
|
+
# Send sms with from_id (if enabled in account)
|
33
|
+
msg.deliver('mobile_no', 'sms', :from_id => 'from_id')
|
34
|
+
|
35
|
+
# Send sms up to 1377 characters long
|
36
|
+
msg.deliver('mobile_no', 'sms', :long_sms => true)
|
37
|
+
|
38
|
+
Responses provided by the Kapow SMS Gateway are:
|
39
|
+
|
40
|
+
<tt>OK</tt>:: Message has been accepted for delivery.
|
41
|
+
<tt>USERPASS</tt>:: Invalid username or password.
|
42
|
+
<tt>NOCREDIT</tt>:: Account has no credits or credit limit has been reached.
|
43
|
+
<tt>ERROR</tt>:: Any other error has occurred.
|
44
|
+
|
45
|
+
The amount of remaining credit is included with the 'OK' response from the gateway. This is available as:
|
46
|
+
|
47
|
+
Kapow::Credit #=> 325
|
data/kapow.gemspec
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
Gem::Specification.new do |s|
|
2
|
+
s.name = "kapow"
|
3
|
+
s.version = "0.4.0"
|
4
|
+
s.date = "2009-10-21"
|
5
|
+
s.summary = "Ruby library for Kapow SMS gateway service"
|
6
|
+
s.email = "kieran[AT]invisiblelines.com"
|
7
|
+
s.homepage = "http://gemcutter.org/gems/kapow"
|
8
|
+
s.rubyforge_project = "kapow"
|
9
|
+
s.description = "Ruby library for sending SMS messages using the Kapow SMS gateway service."
|
10
|
+
s.has_rdoc = true
|
11
|
+
s.authors = ["Kieran Johnson"]
|
12
|
+
s.files = ["History.txt",
|
13
|
+
"Readme.rdoc",
|
14
|
+
"Rakefile",
|
15
|
+
"kapow.gemspec",
|
16
|
+
"lib/kapow.rb",
|
17
|
+
"lib/kapow/sms.rb",
|
18
|
+
"lib/kapow/response.rb",
|
19
|
+
"lib/kapow/credit.rb",
|
20
|
+
"lib/kapow/version.rb"]
|
21
|
+
s.test_files = ["spec/sms_spec.rb", "spec/response_spec.rb"]
|
22
|
+
s.rdoc_options = ["--main", "Readme.rdoc"]
|
23
|
+
s.extra_rdoc_files = ["Readme.rdoc"]
|
24
|
+
end
|
data/lib/kapow.rb
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
# = Overview:
|
2
|
+
# A simple library for sending sms messages using the Kapow sms gateway.
|
3
|
+
# ---
|
4
|
+
# = License:
|
5
|
+
# Author:: Kieran Johnson
|
6
|
+
# Copyright:: July, 2008
|
7
|
+
# License:: Ruby License
|
8
|
+
# ---
|
9
|
+
# = Usage:
|
10
|
+
# require 'rubygems'
|
11
|
+
# require 'kieranj-kapow'
|
12
|
+
#
|
13
|
+
# msg = Kapow::SMS.new('username', 'password')
|
14
|
+
# msg.deliver('mobile_no', 'sms')
|
15
|
+
|
16
|
+
module Kapow
|
17
|
+
|
18
|
+
%w(version response sms credit).each do |lib|
|
19
|
+
require File.join(File.dirname(__FILE__), 'kapow', lib)
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
data/lib/kapow/credit.rb
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
module Kapow
|
2
|
+
|
3
|
+
# Module to access the amount of available credit.
|
4
|
+
|
5
|
+
module Credit
|
6
|
+
|
7
|
+
class << self
|
8
|
+
|
9
|
+
attr_accessor :available
|
10
|
+
|
11
|
+
# Returns the available credit
|
12
|
+
#
|
13
|
+
def to_s
|
14
|
+
available.to_s
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
module Kapow
|
2
|
+
|
3
|
+
class NoCreditError < StandardError; end
|
4
|
+
class AuthenticationError < StandardError; end
|
5
|
+
class Error < StandardError; end
|
6
|
+
|
7
|
+
# A small class for parsing the response from the sms gateway.
|
8
|
+
|
9
|
+
class Response
|
10
|
+
|
11
|
+
def initialize(sms, message)
|
12
|
+
@sms = sms
|
13
|
+
@message = parse(message)
|
14
|
+
end
|
15
|
+
|
16
|
+
attr_reader :message
|
17
|
+
|
18
|
+
# Parses the response body. Raises the appropriate error or returns true.
|
19
|
+
# Also updates the amount of available credit.
|
20
|
+
#
|
21
|
+
def parse(message)
|
22
|
+
if message.is_a?(Net::HTTPSuccess || Net::HTTPRedirection)
|
23
|
+
case message.body
|
24
|
+
when "USERPASS"
|
25
|
+
raise AuthenticationError
|
26
|
+
when "NOCREDIT"
|
27
|
+
raise NoCreditError
|
28
|
+
when "ERROR"
|
29
|
+
raise Error
|
30
|
+
when /STATUS (.*)/ # This needs to change
|
31
|
+
$1
|
32
|
+
when /^OK (\d+)\s?(.*)?/
|
33
|
+
Kapow::Credit.available = $1.to_i
|
34
|
+
@sms.unique_id = $2 unless $2 == ""
|
35
|
+
end
|
36
|
+
else
|
37
|
+
raise message.error!
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
data/lib/kapow/sms.rb
ADDED
@@ -0,0 +1,74 @@
|
|
1
|
+
%w(uri net/http).each { |lib| require lib }
|
2
|
+
|
3
|
+
module Kapow
|
4
|
+
|
5
|
+
# A class for creating and sending an sms message using the Kapow sms gateway.
|
6
|
+
|
7
|
+
class SMS
|
8
|
+
|
9
|
+
MESSAGE_URL = "https://www.kapow.co.uk/scripts/sendsms.php"
|
10
|
+
|
11
|
+
STATUS_URL = "https://www.kapow.co.uk/scripts/chk_status.php"
|
12
|
+
|
13
|
+
VALID_OPTIONS = [ :flash, :from_id, :long_sms, :returnid, :route, :url ]
|
14
|
+
|
15
|
+
attr_accessor :unique_id
|
16
|
+
|
17
|
+
# Required values are: username, password
|
18
|
+
# <tt>:username</tt>:: Your account username.
|
19
|
+
# <tt>:password</tt>:: Your account password.
|
20
|
+
#
|
21
|
+
def initialize(username, password)
|
22
|
+
@username = username
|
23
|
+
@password = password
|
24
|
+
end
|
25
|
+
|
26
|
+
# Delivers the message
|
27
|
+
# <tt>:mobile</tt>:: Recipient number, or list of comma separated numbers.
|
28
|
+
# <tt>:sms</tt>:: Text for the message itself, truncated by gateway at 160 characters
|
29
|
+
#
|
30
|
+
# Optional parameters passed in as a hash
|
31
|
+
# <tt>:flash</tt>:: Boolean - Send SMS as a flash
|
32
|
+
# <tt>:from_id</tt>:: The message originator (if enabled for your account)
|
33
|
+
# <tt>:long_sms</tt>:: Boolean (if enabled in your account)
|
34
|
+
# <tt>:returnid</tt>:: Boolean - Returns unique id in response, so status can be tracked
|
35
|
+
# <tt>:route</tt>:: Your shortcode - Enables premium sms messages (reverse billed)
|
36
|
+
# <tt>:url</tt>:: URL to call after sending the request
|
37
|
+
#
|
38
|
+
def deliver(mobile, sms, options={})
|
39
|
+
options = options.reject { |k,v| !VALID_OPTIONS.include?(k) }
|
40
|
+
|
41
|
+
sms = "FLASH#{sms}" if options.include?(:flash) && options[:flash] == true
|
42
|
+
|
43
|
+
options[:returnid] = "TRUE" if options.include?(:returnid) && options[:returnid] == true
|
44
|
+
|
45
|
+
sms_parameters = {
|
46
|
+
:username => @username,
|
47
|
+
:password => @password,
|
48
|
+
:mobile => mobile,
|
49
|
+
:sms => sms
|
50
|
+
}.merge(options)
|
51
|
+
|
52
|
+
response = Net::HTTP.post_form(URI.parse(MESSAGE_URL), sms_parameters)
|
53
|
+
Response.new(self, response).message
|
54
|
+
end
|
55
|
+
|
56
|
+
# Returns the delivery status of a message
|
57
|
+
# <tt>:returnid</tt>:: The unique id received when sending a message with returnid=TRUE
|
58
|
+
#
|
59
|
+
def status(returnid)
|
60
|
+
response = Net::HTTP.post_form(URI.parse(STATUS_URL), { :username => @username, :returnid => returnid } )
|
61
|
+
Response.new(self, response).message
|
62
|
+
end
|
63
|
+
|
64
|
+
protected
|
65
|
+
|
66
|
+
def format_number(number)
|
67
|
+
number.sub!(/^\+/, "")
|
68
|
+
number.sub!(/^00/, "")
|
69
|
+
number
|
70
|
+
end
|
71
|
+
|
72
|
+
end
|
73
|
+
|
74
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/spec_helper'
|
2
|
+
|
3
|
+
describe Kapow::Response do
|
4
|
+
|
5
|
+
before do
|
6
|
+
@sms = Kapow::SMS.new("kieran", "secret")
|
7
|
+
@response_text = Net::HTTPSuccess.new('1.1', '200', 'OK')
|
8
|
+
end
|
9
|
+
|
10
|
+
it "should raise Kapow::Authentication error if response is USERPASS" do
|
11
|
+
@response_text.stubs(:body).returns("USERPASS")
|
12
|
+
lambda { Kapow::Response.new(@sms, @response_text) }.should raise_error(Kapow::AuthenticationError)
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should raise Kapow::NoCreditError error if response is NOCREDIT" do
|
16
|
+
@response_text.stubs(:body).returns("NOCREDIT")
|
17
|
+
lambda { Kapow::Response.new(@sms, @response_text) }.should raise_error(Kapow::NoCreditError)
|
18
|
+
end
|
19
|
+
|
20
|
+
it "should raise Kapow::Error error if response is ERROR" do
|
21
|
+
@response_text.stubs(:body).returns("ERROR")
|
22
|
+
lambda { Kapow::Response.new(@sms, @response_text) }.should raise_error(Kapow::Error)
|
23
|
+
end
|
24
|
+
|
25
|
+
it "should return true if response is OK" do
|
26
|
+
@response_text.stubs(:body).returns("OK CREDITS")
|
27
|
+
lambda { Kapow::Response.new(@sms, @response_text) }.should_not raise_error
|
28
|
+
end
|
29
|
+
|
30
|
+
it "should return the amount of credit available if response is OK" do
|
31
|
+
@response_text.stubs(:body).returns("OK 111")
|
32
|
+
Kapow::Response.new(@sms, @response_text)
|
33
|
+
Kapow::Credit.to_s.should == "111"
|
34
|
+
end
|
35
|
+
|
36
|
+
it "should raise Kapow::Error if response is not success or redirection" do
|
37
|
+
error = Net::HTTPServerError.new("1.1", "500", "Error")
|
38
|
+
lambda { Kapow::Response.new(@sms, error) }.should raise_error
|
39
|
+
end
|
40
|
+
|
41
|
+
# # response with unique_id
|
42
|
+
it "should return the unique_id if available" do
|
43
|
+
@response_text.stubs(:body).returns("OK 111 UNIQUEID")
|
44
|
+
Kapow::Response.new(@sms, @response_text)
|
45
|
+
@sms.unique_id.should == "UNIQUEID"
|
46
|
+
end
|
47
|
+
|
48
|
+
# response for status
|
49
|
+
it "should return the status of the message" do
|
50
|
+
@response_text.stubs(:body).returns("STATUS SENT")
|
51
|
+
Kapow::Response.new(@sms, @response_text).message.should == "SENT"
|
52
|
+
end
|
53
|
+
|
54
|
+
end
|
data/spec/sms_spec.rb
ADDED
@@ -0,0 +1,91 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/spec_helper'
|
2
|
+
|
3
|
+
describe Kapow::SMS do
|
4
|
+
|
5
|
+
before do
|
6
|
+
@sms = Kapow::SMS.new("kieran", "secret")
|
7
|
+
end
|
8
|
+
|
9
|
+
describe "posting a message" do
|
10
|
+
|
11
|
+
before do
|
12
|
+
@response = Net::HTTPSuccess.new("1.1", "200", "OK")
|
13
|
+
@response.stubs(:body).returns("OK")
|
14
|
+
Net::HTTP.stubs(:post_form).returns(@response)
|
15
|
+
@uri = URI.parse(Kapow::SMS::MESSAGE_URL)
|
16
|
+
end
|
17
|
+
|
18
|
+
it "should send an sms" do
|
19
|
+
Net::HTTP.expects(:post_form).with(@uri, {:username => "kieran", :mobile => "4401234567890", :password => "secret", :sms => "Yo!"}).returns(@response)
|
20
|
+
lambda { @sms.deliver("4401234567890", "Yo!") }.should_not raise_error
|
21
|
+
end
|
22
|
+
|
23
|
+
context "with flash" do
|
24
|
+
|
25
|
+
it "should send an sms as a flash" do
|
26
|
+
Net::HTTP.expects(:post_form).with(@uri, {:flash => true, :username => "kieran", :mobile => "4401234567890", :password => "secret", :sms => "FLASHYo!"}).returns(@response)
|
27
|
+
lambda { @sms.deliver("4401234567890", "Yo!", :flash => true) }.should_not raise_error
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
|
32
|
+
context "with from_id" do
|
33
|
+
|
34
|
+
it "should send an sms with a from_id" do
|
35
|
+
Net::HTTP.expects(:post_form).with(@uri, {:from_id => "Kieran_j", :username => "kieran", :mobile => "4401234567890", :password => "secret", :sms => "Yo!"}).returns(@response)
|
36
|
+
lambda { @sms.deliver("4401234567890", "Yo!", :from_id => "Kieran_j") }.should_not raise_error
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
40
|
+
|
41
|
+
context "with long_sms" do
|
42
|
+
|
43
|
+
it "should send a long sms" do
|
44
|
+
msg = ""
|
45
|
+
4.times { msg << "The quick brown fox jumps over the lazy dog. " }
|
46
|
+
Net::HTTP.expects(:post_form).with(@uri, {:long_sms => true, :username => "kieran", :mobile => "4401234567890", :password => "secret", :sms => msg}).returns(@response)
|
47
|
+
lambda { @sms.deliver("4401234567890", msg, :long_sms => true) }.should_not raise_error
|
48
|
+
end
|
49
|
+
|
50
|
+
end
|
51
|
+
|
52
|
+
context "with returnid=TRUE" do
|
53
|
+
|
54
|
+
it "should send an sms with returnid=TRUE" do
|
55
|
+
Net::HTTP.expects(:post_form).with(@uri, {:returnid => "TRUE", :mobile => "4401234567890", :username => "kieran", :sms => "Yo!", :password => "secret"}).returns(@response)
|
56
|
+
lambda { @sms.deliver("4401234567890", "Yo!", :returnid => true) }.should_not raise_error
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
60
|
+
|
61
|
+
context "with URL" do
|
62
|
+
|
63
|
+
it "should send an sms with a callback URL" do
|
64
|
+
Net::HTTP.expects(:post_form).with(@uri, {:url => "http://my.callback.com", :mobile => "4401234567890", :username => "kieran", :sms => "Yo!", :password => "secret"}).returns(@response)
|
65
|
+
lambda { @sms.deliver("4401234567890", "Yo!", :url => "http://my.callback.com") }.should_not raise_error
|
66
|
+
end
|
67
|
+
|
68
|
+
end
|
69
|
+
|
70
|
+
end
|
71
|
+
|
72
|
+
describe "returning a message status" do
|
73
|
+
|
74
|
+
#
|
75
|
+
# The actual response needs to be inserted here.
|
76
|
+
#
|
77
|
+
before do
|
78
|
+
@response = Net::HTTPSuccess.new("1.1", "200", "OK")
|
79
|
+
@response.stubs(:body).returns("STATUS SENT") # status body response
|
80
|
+
Net::HTTP.stubs(:post_form).returns(@response)
|
81
|
+
@uri = URI.parse(Kapow::SMS::STATUS_URL)
|
82
|
+
end
|
83
|
+
|
84
|
+
it "should return the status" do
|
85
|
+
Net::HTTP.expects(:post_form).with(@uri, {:username => "kieran", :returnid => "12345"}).returns(@response)
|
86
|
+
@sms.status("12345").should be_instance_of(String)
|
87
|
+
end
|
88
|
+
|
89
|
+
end
|
90
|
+
|
91
|
+
end
|
metadata
ADDED
@@ -0,0 +1,65 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: kapow
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.4.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Kieran Johnson
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2009-10-21 00:00:00 +01:00
|
13
|
+
default_executable:
|
14
|
+
dependencies: []
|
15
|
+
|
16
|
+
description: Ruby library for sending SMS messages using the Kapow SMS gateway service.
|
17
|
+
email: kieran[AT]invisiblelines.com
|
18
|
+
executables: []
|
19
|
+
|
20
|
+
extensions: []
|
21
|
+
|
22
|
+
extra_rdoc_files:
|
23
|
+
- Readme.rdoc
|
24
|
+
files:
|
25
|
+
- History.txt
|
26
|
+
- Readme.rdoc
|
27
|
+
- Rakefile
|
28
|
+
- kapow.gemspec
|
29
|
+
- lib/kapow.rb
|
30
|
+
- lib/kapow/sms.rb
|
31
|
+
- lib/kapow/response.rb
|
32
|
+
- lib/kapow/credit.rb
|
33
|
+
- lib/kapow/version.rb
|
34
|
+
has_rdoc: true
|
35
|
+
homepage: http://gemcutter.org/gems/kapow
|
36
|
+
licenses: []
|
37
|
+
|
38
|
+
post_install_message:
|
39
|
+
rdoc_options:
|
40
|
+
- --main
|
41
|
+
- Readme.rdoc
|
42
|
+
require_paths:
|
43
|
+
- lib
|
44
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - ">="
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: "0"
|
49
|
+
version:
|
50
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: "0"
|
55
|
+
version:
|
56
|
+
requirements: []
|
57
|
+
|
58
|
+
rubyforge_project: kapow
|
59
|
+
rubygems_version: 1.3.5
|
60
|
+
signing_key:
|
61
|
+
specification_version: 3
|
62
|
+
summary: Ruby library for Kapow SMS gateway service
|
63
|
+
test_files:
|
64
|
+
- spec/sms_spec.rb
|
65
|
+
- spec/response_spec.rb
|