nofxx-activesms 0.9.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.autotest +17 -0
- data/CHANGELOG +5 -0
- data/History.txt +25 -0
- data/License.txt +22 -0
- data/MIT-LICENSE +22 -0
- data/Manifest.txt +56 -0
- data/README.txt +54 -0
- data/Rakefile +16 -0
- data/activesms.gemspec +36 -0
- data/config/hoe.rb +78 -0
- data/config/requirements.rb +15 -0
- the PDU format.webarchive +0 -0
- data/generators/sms/USAGE +20 -0
- data/generators/sms/sms_generator.rb +35 -0
- data/generators/sms/templates/fixture.rhtml +1 -0
- data/generators/sms/templates/model.rb +19 -0
- data/generators/sms/templates/sms.yml +103 -0
- data/generators/sms/templates/unit_test.rb +31 -0
- data/init.rb +4 -0
- data/lib/activesms.rb +79 -0
- data/lib/activesms/adv_attr_accessor.rb +32 -0
- data/lib/activesms/base.rb +249 -0
- data/lib/activesms/config.rb +20 -0
- data/lib/activesms/connection_adapters/abstract_adapter.rb +52 -0
- data/lib/activesms/connection_adapters/bulk_sms_adapter.rb +67 -0
- data/lib/activesms/connection_adapters/clickatell_adapter.rb +51 -0
- data/lib/activesms/connection_adapters/human_adapter.rb +174 -0
- data/lib/activesms/connection_adapters/simplewire_adapter.rb +73 -0
- data/lib/activesms/connections.rb +63 -0
- data/lib/activesms/email.rb +60 -0
- data/lib/activesms/exceptions.rb +35 -0
- data/lib/activesms/sms.rb +9 -0
- data/lib/activesms/sms2email.rb +21 -0
- data/lib/activesms/validations.rb +86 -0
- data/lib/activesms/version.rb +9 -0
- data/lib/activesms/views/active_sms/sms2_email/sms_message.html.erb +1 -0
- data/script/console +10 -0
- data/script/destroy +14 -0
- data/script/generate +14 -0
- data/script/txt2html +82 -0
- data/setup.rb +1585 -0
- data/spec/activesms/base_spec.rb +11 -0
- data/spec/activesms/connection_adapters/abstract_adapter_spec.rb +30 -0
- data/spec/activesms/connection_adapters/human_adapter_spec.rb +38 -0
- data/spec/activesms/connection_adapters/simplewire_spec.rb +75 -0
- data/spec/activesms/email_spec.rb +72 -0
- data/spec/activesms/sms2email_spec.rb +31 -0
- data/spec/activesms/sms_spec.rb +31 -0
- data/spec/activesms_spec.rb +15 -0
- data/spec/spec.opts +1 -0
- data/spec/spec_helper.rb +57 -0
- data/tasks/deployment.rake +34 -0
- data/tasks/environment.rake +7 -0
- data/tasks/rspec.rake +21 -0
- data/views/active_sms/base/sms2_email/sms_message.html.erb +1 -0
- metadata +130 -0
@@ -0,0 +1,30 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
|
2
|
+
require 'net/https'
|
3
|
+
|
4
|
+
include ConnectionAdapters
|
5
|
+
|
6
|
+
describe AbstractAdapter do
|
7
|
+
|
8
|
+
before(:each) do
|
9
|
+
@abstract_adapter = AbstractAdapter.new(nil)
|
10
|
+
end
|
11
|
+
|
12
|
+
it "should instantiate" do
|
13
|
+
violated unless @abstract_adapter
|
14
|
+
end
|
15
|
+
|
16
|
+
it "should have a name" do
|
17
|
+
@abstract_adapter.adapter_name.should eql("Abstract")
|
18
|
+
end
|
19
|
+
|
20
|
+
it "should have a default deliver method, to be implemented by subclasses" do
|
21
|
+
@abstract_adapter.should_receive(:deliver)
|
22
|
+
@abstract_adapter.deliver(mock(Sms))
|
23
|
+
end
|
24
|
+
|
25
|
+
it "should respond to parse with nil.. for some obscure reason" do
|
26
|
+
@abstract_adapter.parse(mock(Sms)).should eql(nil)
|
27
|
+
end
|
28
|
+
|
29
|
+
|
30
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
|
2
|
+
include ConnectionAdapters
|
3
|
+
|
4
|
+
describe HumanAdapter do
|
5
|
+
|
6
|
+
before(:each) do
|
7
|
+
@human_adapter = HumanAdapter.new(nil, {:use_ssl => false})
|
8
|
+
end
|
9
|
+
|
10
|
+
it "should instantiate" do
|
11
|
+
violated unless @human_adapter
|
12
|
+
end
|
13
|
+
|
14
|
+
it "should have a name" do
|
15
|
+
@human_adapter.adapter_name.should eql("Human")
|
16
|
+
end
|
17
|
+
|
18
|
+
it "should have a good url to send" do
|
19
|
+
@human_adapter.service_url.should eql("http://system.human.com.br:8080/GatewayIntegration/msgSms.do")
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should parse time nicely" do
|
23
|
+
@human_adapter.date_format_human('Fri Aug 08 01:18:56 -0300 2008').should eql("08/08/2008 01:18:56")
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should call http to send the message" do
|
27
|
+
sms = mock(Sms, :recipients => 'x@xx.com', :body => 'hi', :id => 1,
|
28
|
+
:from => 'no@mail.com', :schedule => "08/08/2008 01:18:56")
|
29
|
+
|
30
|
+
@human_adapter.should_receive(:send_http_request).\
|
31
|
+
with("http://system.human.com.br:8080/GatewayIntegration/msgSms.do", {
|
32
|
+
:type=>"E", :from=>"no@mail.com", :msg=>"hi",
|
33
|
+
:account=>nil, :dispatch=>"send", :schedule=>"08/08/2008 01:18:56",
|
34
|
+
:to=>"x@xx.com", :code=>nil, :id => 1
|
35
|
+
}).and_return(true)
|
36
|
+
@human_adapter.deliver(sms)#.should be_true
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,75 @@
|
|
1
|
+
# puts "test"
|
2
|
+
#
|
3
|
+
# require File.dirname(__FILE__) + "/../test_helper"
|
4
|
+
#
|
5
|
+
# # Only run this test if using jruby
|
6
|
+
# if RUBY_PLATFORM =~ /java/
|
7
|
+
# class SimplewireAdapterTest < Test::Unit::TestCase
|
8
|
+
# def setup
|
9
|
+
# @simplewire_adapter = ActiveSms::ConnectionAdapters::SimplewireAdapter.new(nil, {
|
10
|
+
# :subscriber_id => 'id',
|
11
|
+
# :subscriber_password => 'password'})
|
12
|
+
# end
|
13
|
+
#
|
14
|
+
# def test_instantiation
|
15
|
+
# assert_raise(RuntimeError) { ActiveSms::ConnectionAdapters::SimplewireAdapter.new(nil, {}) }
|
16
|
+
# assert @simplewire_adapter
|
17
|
+
# end
|
18
|
+
#
|
19
|
+
# def test_sms_size
|
20
|
+
# sms = flexmock("sms")
|
21
|
+
# sms.should_receive(:subscriber_id).and_return("id")
|
22
|
+
# sms.should_receive(:subscriber_password).and_return("password")
|
23
|
+
# sms.should_receive(:recipients).and_return("4081234567")
|
24
|
+
# sms.should_receive(:from).and_return("6502435555")
|
25
|
+
# long_body = ""
|
26
|
+
# 150.times {long_body += "x"}
|
27
|
+
# sms.should_receive(:body).and_return(long_body)
|
28
|
+
#
|
29
|
+
# assert_raise(StandardError) do
|
30
|
+
# s = @simplewire_adapter.create_sms(sms)
|
31
|
+
# end
|
32
|
+
# end
|
33
|
+
#
|
34
|
+
# def test_parse_sms
|
35
|
+
# xmldata = create_sms('121212', '6502435555', 'blah blah')
|
36
|
+
# sms = @simplewire_adapter.parse(xmldata)
|
37
|
+
# assert_equal 'blah blah', sms.body
|
38
|
+
# assert_equal '121212', sms.to
|
39
|
+
# assert_equal '6502435555', sms.from
|
40
|
+
# end
|
41
|
+
#
|
42
|
+
# def test_create_sms
|
43
|
+
# sms = flexmock("sms")
|
44
|
+
# sms.should_receive(:subscriber_id).and_return("id")
|
45
|
+
# sms.should_receive(:subscriber_password).and_return("password")
|
46
|
+
# sms.should_receive(:recipients).and_return("4081234567")
|
47
|
+
# sms.should_receive(:from).and_return("6502435555")
|
48
|
+
# sms.should_receive(:body).and_return("This is the body of the sms")
|
49
|
+
#
|
50
|
+
# s = @simplewire_adapter.create_sms(sms)
|
51
|
+
#
|
52
|
+
# assert_equal "id", s.subscriber_id
|
53
|
+
# assert_equal "password", s.subscriber_password
|
54
|
+
# assert_equal "4081234567", s.destination_addr.address
|
55
|
+
# assert_equal "6502435555", s.source_addr.address
|
56
|
+
# assert_equal "This is the body of the sms", s.msg_text
|
57
|
+
# end
|
58
|
+
#
|
59
|
+
# protected
|
60
|
+
# def create_sms(to, from, body)
|
61
|
+
# xmldata =<<END
|
62
|
+
# <?xml version="1.0" ?>
|
63
|
+
# <request version="3.0" protocol="wmp" type="deliver">
|
64
|
+
# <account id="123-456-789-12345"/>
|
65
|
+
# <destination ton="3" address="#{to}"/>
|
66
|
+
# <source carrier="348" ton="1" address="#{from}"/>
|
67
|
+
# <option datacoding="7bit" />
|
68
|
+
# <message udhi="true" data="0605040B8423F0#{body.unpack('H*')}"/>
|
69
|
+
# <ticket id="12004-0923R-1845S-10M25"/>
|
70
|
+
# </request>
|
71
|
+
# END
|
72
|
+
# xmldata
|
73
|
+
# end
|
74
|
+
# end
|
75
|
+
# end
|
@@ -0,0 +1,72 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
+
|
3
|
+
class Noter < ActiveSms::Base
|
4
|
+
def emaio
|
5
|
+
@delivery = :email
|
6
|
+
@carrier = 'tim' #
|
7
|
+
@recipients = '5555555555'
|
8
|
+
@from = 'me@somewhere.net'
|
9
|
+
@body = "Hi Friend"
|
10
|
+
#@id = ''
|
11
|
+
#@schedule = "dd/mm/aaaa hh:mm:ss"
|
12
|
+
@options = {}
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
describe Email do
|
17
|
+
|
18
|
+
it "should deliver an sms" do
|
19
|
+
sms = mock(Sms, :delivery => :email, :recipients => '5555555555', :body => 'hi', :options => {},
|
20
|
+
:id => 1, :carrier => :tim, :from => 'other@domain.com', :schedule => "08/08/2008 01:18:56")
|
21
|
+
Sms2Email.should_receive(:deliver_sms_message).with("5555555555@tim.com.br", "hi", "noreply@domain.com").and_return(true)
|
22
|
+
Noter.deliver(sms)
|
23
|
+
end
|
24
|
+
|
25
|
+
describe "Include Module" do
|
26
|
+
include Email
|
27
|
+
|
28
|
+
it "should format number" do
|
29
|
+
stub!(:valid?).and_return(false)
|
30
|
+
#format_number('555444').should eql('555555555')
|
31
|
+
end
|
32
|
+
|
33
|
+
it "should determine a correct email address" do
|
34
|
+
get_sms_address('5543214321', 'tim').should eql('5543214321@tim.com.br')
|
35
|
+
end
|
36
|
+
|
37
|
+
it "should determine two time to be sure" do
|
38
|
+
get_sms_address('5543214321', 'oi').should eql('5543214321@sms.oi.com.br')
|
39
|
+
end
|
40
|
+
|
41
|
+
it "should be valid with more than 10 digits" do
|
42
|
+
is_valid?('1234567890').should be_true
|
43
|
+
end
|
44
|
+
|
45
|
+
it "should be invalid with lesse than 10 digits" do
|
46
|
+
is_valid?('123456789').should_not be_true
|
47
|
+
end
|
48
|
+
|
49
|
+
it "should be invalid if it has something that is not a number.. NaN hehe" do
|
50
|
+
is_valid?('123456789a').should_not be_true
|
51
|
+
end
|
52
|
+
|
53
|
+
it "should clean the number from evil chars" do
|
54
|
+
get_sms_address('5-54g3-2=143h21', 'tim').should eql('5543214321@tim.com.br')
|
55
|
+
end
|
56
|
+
|
57
|
+
it "should throw an error if the carrier is not known" do
|
58
|
+
lambda {get_sms_address('5543214321', 'nofxx-telecom')}.should raise_error(ActiveSms::CarrierException)
|
59
|
+
end
|
60
|
+
|
61
|
+
it "should throw an error if the carrier is blank" do
|
62
|
+
lambda {get_sms_address('5543214321', '')}.should raise_error(ActiveSms::CarrierException)
|
63
|
+
end
|
64
|
+
|
65
|
+
describe "Email2Sms" do
|
66
|
+
it "should throw an error if the carrier is blank" do
|
67
|
+
@sms = ActiveSms::Sms.new
|
68
|
+
lambda {email_deliver(@sms)}.should raise_error(ActiveSms::CarrierException)
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
+
|
3
|
+
describe Sms2Email do
|
4
|
+
context 'The SomeMailer mailer' do
|
5
|
+
CHARSET = 'utf-8'
|
6
|
+
include ActionMailer::Quoting
|
7
|
+
|
8
|
+
setup do
|
9
|
+
# You don't need these lines while you are using create_ instead of deliver_
|
10
|
+
#ActionMailer::Base.delivery_method = :test
|
11
|
+
#ActionMailer::Base.perform_deliveries = true
|
12
|
+
#ActionMailer::Base.deliveries = []
|
13
|
+
|
14
|
+
@expected = TMail::Mail.new
|
15
|
+
@expected.set_content_type 'text', 'plain', { 'charset' => CHARSET }
|
16
|
+
@expected.mime_version = '1.0'
|
17
|
+
end
|
18
|
+
|
19
|
+
specify 'should send sms via email' do
|
20
|
+
#@expected.subject = 'Account activation'
|
21
|
+
@expected.body = 'hi' #read_fixture('sms_mesage')
|
22
|
+
@expected.from = 'no-email@example.com'
|
23
|
+
@expected.to = 'some@mail.com'
|
24
|
+
|
25
|
+
Sms2Email.create_sms_message("some@mail.com", "hi", "no-email@example.com").\
|
26
|
+
encoded.should == @expected.encoded
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
# good post about testing mailers
|
31
|
+
# => http://kpumuk.info/ruby-on-rails/testing-mailers-with-rspec/
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
+
|
3
|
+
module SmsSpecHelper
|
4
|
+
def attr_valid_sms
|
5
|
+
{
|
6
|
+
:delivery => :email,
|
7
|
+
:carrier => 'tim',
|
8
|
+
:recipients => '5544443333',
|
9
|
+
:from => 'someone@somewher.net',
|
10
|
+
:body => 'hello...how are your family?',
|
11
|
+
:id => 1,
|
12
|
+
:schedule => Time.parse('Sat Aug 09 03:44:19 -0300 2008')
|
13
|
+
}
|
14
|
+
end
|
15
|
+
end
|
16
|
+
describe Sms do
|
17
|
+
include SmsSpecHelper
|
18
|
+
|
19
|
+
before(:each) do
|
20
|
+
@sms = Sms.new
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should be a valid sms" do
|
24
|
+
violated unless @sms
|
25
|
+
end
|
26
|
+
|
27
|
+
it "should return a nice string" do
|
28
|
+
@sms.attr = attr_valid_sms
|
29
|
+
@sms.to_s.should eql("#<ActiveSms::Sms @recipients=\"5544443333\" @from=\"someone@somewher.net\" @body=\"hello...how are your family?\" @id=1 @schedule=Sat Aug 09 03:44:19 -0300 2008>")
|
30
|
+
end
|
31
|
+
end
|
data/spec/spec.opts
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
--colour
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,57 @@
|
|
1
|
+
begin
|
2
|
+
require 'spec'
|
3
|
+
rescue LoadError
|
4
|
+
require 'rubygems'
|
5
|
+
gem 'rspec'
|
6
|
+
require 'spec'
|
7
|
+
end
|
8
|
+
|
9
|
+
$:.unshift(File.dirname(__FILE__) + '/../lib')
|
10
|
+
#$:.unshift(File.dirname(__FILE__) + '/../lib/activesms')
|
11
|
+
#$:.unshift(File.dirname(__FILE__) + '/../lib/activesms/connection_adapters')
|
12
|
+
require 'activesms'
|
13
|
+
|
14
|
+
include ActiveSms
|
15
|
+
|
16
|
+
# #
|
17
|
+
# HELPERS
|
18
|
+
#
|
19
|
+
#
|
20
|
+
class Object
|
21
|
+
|
22
|
+
def attr=(options = {})
|
23
|
+
options.each do |attribute, value|
|
24
|
+
self.send("#{attribute}=", value)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
# ##
|
30
|
+
# * http://wincent.com/knowledge-base/Fixtures_considered_harmful%3F
|
31
|
+
# * Neil Rahilly
|
32
|
+
class Hash
|
33
|
+
##
|
34
|
+
# Filter keys out of a Hash.
|
35
|
+
#
|
36
|
+
# { :a => 1, :b => 2, :c => 3 }.except(:a)
|
37
|
+
# => { :b => 2, :c => 3 }
|
38
|
+
def except(*keys)
|
39
|
+
self.reject { |k,v| keys.include?(k || k.to_sym) }
|
40
|
+
end
|
41
|
+
##
|
42
|
+
# Override some keys.
|
43
|
+
#
|
44
|
+
# { :a => 1, :b => 2, :c => 3 }.with(:a => 4)
|
45
|
+
# => { :a => 4, :b => 2, :c => 3 }
|
46
|
+
def with(overrides = {})
|
47
|
+
self.merge overrides
|
48
|
+
end
|
49
|
+
##
|
50
|
+
# Returns a Hash with only the pairs identified by +keys+.
|
51
|
+
#
|
52
|
+
# { :a => 1, :b => 2, :c => 3 }.only(:a)
|
53
|
+
# => { :a => 1 }
|
54
|
+
def only(*keys)
|
55
|
+
self.reject { |k,v| !keys.include?(k || k.to_sym) }
|
56
|
+
end
|
57
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
desc 'Release the website and new gem version'
|
2
|
+
task :deploy => [:check_version, :website, :release] do
|
3
|
+
puts "Remember to create SVN tag:"
|
4
|
+
puts "svn copy svn+ssh://#{rubyforge_username}@rubyforge.org/var/svn/#{PATH}/trunk " +
|
5
|
+
"svn+ssh://#{rubyforge_username}@rubyforge.org/var/svn/#{PATH}/tags/REL-#{VERS} "
|
6
|
+
puts "Suggested comment:"
|
7
|
+
puts "Tagging release #{CHANGES}"
|
8
|
+
end
|
9
|
+
|
10
|
+
desc 'Runs tasks website_generate and install_gem as a local deployment of the gem'
|
11
|
+
task :local_deploy => [:website_generate, :install_gem]
|
12
|
+
|
13
|
+
task :check_version do
|
14
|
+
unless ENV['VERSION']
|
15
|
+
puts 'Must pass a VERSION=x.y.z release version'
|
16
|
+
exit
|
17
|
+
end
|
18
|
+
unless ENV['VERSION'] == VERS
|
19
|
+
puts "Please update your version.rb to match the release version, currently #{VERS}"
|
20
|
+
exit
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
desc 'Install the package as a gem, without generating documentation(ri/rdoc)'
|
25
|
+
task :install_gem_no_doc => [:clean, :package] do
|
26
|
+
sh "#{'sudo ' unless Hoe::WINDOZE }gem install pkg/*.gem --no-rdoc --no-ri"
|
27
|
+
end
|
28
|
+
|
29
|
+
namespace :manifest do
|
30
|
+
desc 'Recreate Manifest.txt to include ALL files'
|
31
|
+
task :refresh do
|
32
|
+
`rake check_manifest | patch -p0 > Manifest.txt`
|
33
|
+
end
|
34
|
+
end
|
data/tasks/rspec.rake
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
begin
|
2
|
+
require 'spec'
|
3
|
+
rescue LoadError
|
4
|
+
require 'rubygems'
|
5
|
+
require 'spec'
|
6
|
+
end
|
7
|
+
begin
|
8
|
+
require 'spec/rake/spectask'
|
9
|
+
rescue LoadError
|
10
|
+
puts <<-EOS
|
11
|
+
To use rspec for testing you must install rspec gem:
|
12
|
+
gem install rspec
|
13
|
+
EOS
|
14
|
+
exit(0)
|
15
|
+
end
|
16
|
+
|
17
|
+
desc "Run the specs under spec/models"
|
18
|
+
Spec::Rake::SpecTask.new do |t|
|
19
|
+
t.spec_opts = ['--options', "spec/spec.opts"]
|
20
|
+
t.spec_files = FileList['spec/**/*_spec.rb']
|
21
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= @message %>
|
metadata
ADDED
@@ -0,0 +1,130 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: nofxx-activesms
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.9.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Robert Cottrell
|
8
|
+
- Marcos Piccinini
|
9
|
+
- Ben Curren
|
10
|
+
- Dean Mao
|
11
|
+
autorequire:
|
12
|
+
bindir: bin
|
13
|
+
cert_chain: []
|
14
|
+
|
15
|
+
date: 2008-09-09 00:00:00 -07:00
|
16
|
+
default_executable:
|
17
|
+
dependencies:
|
18
|
+
- !ruby/object:Gem::Dependency
|
19
|
+
name: hoe
|
20
|
+
version_requirement:
|
21
|
+
version_requirements: !ruby/object:Gem::Requirement
|
22
|
+
requirements:
|
23
|
+
- - ">="
|
24
|
+
- !ruby/object:Gem::Version
|
25
|
+
version: 1.7.0
|
26
|
+
version:
|
27
|
+
description: Active SMS is a framework for sending and receiving SMS messages
|
28
|
+
email:
|
29
|
+
- rgcottrell@rubyforge.org
|
30
|
+
- x@nofxx.com
|
31
|
+
- ben@esomnie.com
|
32
|
+
- dean@esomnie.com
|
33
|
+
executables: []
|
34
|
+
|
35
|
+
extensions: []
|
36
|
+
|
37
|
+
extra_rdoc_files:
|
38
|
+
- History.txt
|
39
|
+
- License.txt
|
40
|
+
- Manifest.txt
|
41
|
+
- README.txt
|
42
|
+
files:
|
43
|
+
- .autotest
|
44
|
+
- CHANGELOG
|
45
|
+
- History.txt
|
46
|
+
- License.txt
|
47
|
+
- MIT-LICENSE
|
48
|
+
- Manifest.txt
|
49
|
+
- README.txt
|
50
|
+
- Rakefile
|
51
|
+
- activesms.gemspec
|
52
|
+
- config/hoe.rb
|
53
|
+
- config/requirements.rb
|
54
|
+
- docs/SMS messages and the PDU format.webarchive
|
55
|
+
- generators/sms/USAGE
|
56
|
+
- generators/sms/sms_generator.rb
|
57
|
+
- generators/sms/templates/fixture.rhtml
|
58
|
+
- generators/sms/templates/model.rb
|
59
|
+
- generators/sms/templates/sms.yml
|
60
|
+
- generators/sms/templates/unit_test.rb
|
61
|
+
- init.rb
|
62
|
+
- lib/activesms.rb
|
63
|
+
- lib/activesms/adv_attr_accessor.rb
|
64
|
+
- lib/activesms/base.rb
|
65
|
+
- lib/activesms/config.rb
|
66
|
+
- lib/activesms/connection_adapters/abstract_adapter.rb
|
67
|
+
- lib/activesms/connection_adapters/bulk_sms_adapter.rb
|
68
|
+
- lib/activesms/connection_adapters/clickatell_adapter.rb
|
69
|
+
- lib/activesms/connection_adapters/human_adapter.rb
|
70
|
+
- lib/activesms/connection_adapters/simplewire_adapter.rb
|
71
|
+
- lib/activesms/connections.rb
|
72
|
+
- lib/activesms/email.rb
|
73
|
+
- lib/activesms/exceptions.rb
|
74
|
+
- lib/activesms/sms.rb
|
75
|
+
- lib/activesms/sms2email.rb
|
76
|
+
- lib/activesms/validations.rb
|
77
|
+
- lib/activesms/version.rb
|
78
|
+
- lib/activesms/views/active_sms/sms2_email/sms_message.html.erb
|
79
|
+
- script/console
|
80
|
+
- script/destroy
|
81
|
+
- script/generate
|
82
|
+
- script/txt2html
|
83
|
+
- setup.rb
|
84
|
+
- spec/activesms/base_spec.rb
|
85
|
+
- spec/activesms/connection_adapters/abstract_adapter_spec.rb
|
86
|
+
- spec/activesms/connection_adapters/human_adapter_spec.rb
|
87
|
+
- spec/activesms/connection_adapters/simplewire_spec.rb
|
88
|
+
- spec/activesms/email_spec.rb
|
89
|
+
- spec/activesms/sms2email_spec.rb
|
90
|
+
- spec/activesms/sms_spec.rb
|
91
|
+
- spec/activesms_spec.rb
|
92
|
+
- spec/spec.opts
|
93
|
+
- spec/spec_helper.rb
|
94
|
+
- tasks/deployment.rake
|
95
|
+
- tasks/environment.rake
|
96
|
+
- tasks/rspec.rake
|
97
|
+
- tasks/website.rake
|
98
|
+
- views/active_sms/base/sms2_email/sms_message.html.erb
|
99
|
+
has_rdoc: true
|
100
|
+
homepage: http://github.com/nofxx/activesms
|
101
|
+
post_install_message: |+
|
102
|
+
|
103
|
+
For more information on activesms, see http://github.com/nofxx/activesms
|
104
|
+
|
105
|
+
rdoc_options:
|
106
|
+
- --main
|
107
|
+
- README.txt
|
108
|
+
require_paths:
|
109
|
+
- lib
|
110
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
111
|
+
requirements:
|
112
|
+
- - ">="
|
113
|
+
- !ruby/object:Gem::Version
|
114
|
+
version: "0"
|
115
|
+
version:
|
116
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
117
|
+
requirements:
|
118
|
+
- - ">="
|
119
|
+
- !ruby/object:Gem::Version
|
120
|
+
version: "0"
|
121
|
+
version:
|
122
|
+
requirements: []
|
123
|
+
|
124
|
+
rubyforge_project: activesms
|
125
|
+
rubygems_version: 1.2.0
|
126
|
+
signing_key:
|
127
|
+
specification_version: 2
|
128
|
+
summary: Active SMS is a framework for sending and receiving SMS messages
|
129
|
+
test_files: []
|
130
|
+
|