txtlocal 0.0.1
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/.autotest +5 -0
- data/.gitignore +6 -0
- data/.rspec +3 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +46 -0
- data/LICENSE +20 -0
- data/README.md +46 -0
- data/Rakefile +2 -0
- data/lib/txtlocal.rb +26 -0
- data/lib/txtlocal/config.rb +27 -0
- data/lib/txtlocal/message.rb +90 -0
- data/lib/txtlocal/version.rb +3 -0
- data/spec/config_spec.rb +42 -0
- data/spec/message_spec.rb +187 -0
- data/spec/spec_helper.rb +9 -0
- data/spec/txtlocal_spec.rb +37 -0
- data/txtlocal.gemspec +28 -0
- metadata +128 -0
data/.autotest
ADDED
data/.gitignore
ADDED
data/.rspec
ADDED
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
txtlocal (0.0.1)
|
5
|
+
json
|
6
|
+
|
7
|
+
GEM
|
8
|
+
remote: http://rubygems.org/
|
9
|
+
specs:
|
10
|
+
ZenTest (4.4.2)
|
11
|
+
addressable (2.2.2)
|
12
|
+
autotest (4.4.6)
|
13
|
+
ZenTest (>= 4.4.1)
|
14
|
+
columnize (0.3.2)
|
15
|
+
crack (0.1.8)
|
16
|
+
diff-lcs (1.1.2)
|
17
|
+
json (1.4.6)
|
18
|
+
linecache (0.43)
|
19
|
+
rspec (2.4.0)
|
20
|
+
rspec-core (~> 2.4.0)
|
21
|
+
rspec-expectations (~> 2.4.0)
|
22
|
+
rspec-mocks (~> 2.4.0)
|
23
|
+
rspec-core (2.4.0)
|
24
|
+
rspec-expectations (2.4.0)
|
25
|
+
diff-lcs (~> 1.1.2)
|
26
|
+
rspec-mocks (2.4.0)
|
27
|
+
ruby-debug (0.10.4)
|
28
|
+
columnize (>= 0.1)
|
29
|
+
ruby-debug-base (~> 0.10.4.0)
|
30
|
+
ruby-debug-base (0.10.4)
|
31
|
+
linecache (>= 0.3)
|
32
|
+
webmock (1.6.2)
|
33
|
+
addressable (>= 2.2.2)
|
34
|
+
crack (>= 0.1.7)
|
35
|
+
|
36
|
+
PLATFORMS
|
37
|
+
ruby
|
38
|
+
|
39
|
+
DEPENDENCIES
|
40
|
+
autotest
|
41
|
+
bundler (>= 1.0.0)
|
42
|
+
json
|
43
|
+
rspec
|
44
|
+
ruby-debug
|
45
|
+
txtlocal!
|
46
|
+
webmock
|
data/LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2010 epiGenesys Limited
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
# txtlocal.co.uk API Wrapper
|
2
|
+
|
3
|
+
This gem is intended to provide a simple API for sending text messages via txtlocal's API.
|
4
|
+
|
5
|
+
## Installing
|
6
|
+
|
7
|
+
Add the gem to your gemfile
|
8
|
+
|
9
|
+
gem 'txtlocal', :git => 'git://github.com/epigenesys/txtlocal.git'
|
10
|
+
|
11
|
+
## Usage
|
12
|
+
|
13
|
+
Configure the default settings
|
14
|
+
|
15
|
+
Txtlocal.config do |c|
|
16
|
+
c.from = "My App"
|
17
|
+
c.username = "txtlocal_username"
|
18
|
+
c.password = "txtlocal_password"
|
19
|
+
end
|
20
|
+
|
21
|
+
Use Txtlocal.send_message to send messages
|
22
|
+
|
23
|
+
Txtlocal.send_message("You have 1 new friend request!", "07729435xxx")
|
24
|
+
|
25
|
+
Or create a message manually
|
26
|
+
|
27
|
+
msg = Txtlocal::Message.new
|
28
|
+
msg.body = "Tickets will be available tomorrow morning at 9am"
|
29
|
+
msg.recipients = ["0712 3893 xxx", "447923176xxx"]
|
30
|
+
msg.add_recipient "+447729435xxx"
|
31
|
+
msg.send!
|
32
|
+
|
33
|
+
You can override the sender on a per message basis
|
34
|
+
|
35
|
+
Txtlocal.send_message("You have 1 new friend request!", "07729435xxx", :from => "someone")
|
36
|
+
|
37
|
+
msg = Txtlocal::Message.new
|
38
|
+
msg.from = "a mystery"
|
39
|
+
|
40
|
+
## Testing
|
41
|
+
|
42
|
+
Set test = true in the configuration to use the API's test mode
|
43
|
+
|
44
|
+
Txtlocal.config.test = true
|
45
|
+
Txtlocal.config.testing?
|
46
|
+
=> true
|
data/Rakefile
ADDED
data/lib/txtlocal.rb
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'txtlocal/config'
|
2
|
+
require 'txtlocal/message'
|
3
|
+
|
4
|
+
module Txtlocal
|
5
|
+
class << self
|
6
|
+
|
7
|
+
def config
|
8
|
+
@config ||= Config.new
|
9
|
+
if block_given?
|
10
|
+
yield @config
|
11
|
+
end
|
12
|
+
@config
|
13
|
+
end
|
14
|
+
|
15
|
+
def reset_config
|
16
|
+
@config = nil
|
17
|
+
end
|
18
|
+
|
19
|
+
def send_message(message, recipients, options={})
|
20
|
+
msg = Txtlocal::Message.new(message, recipients, options)
|
21
|
+
msg.send!
|
22
|
+
msg
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module Txtlocal
|
2
|
+
class Config
|
3
|
+
|
4
|
+
# The default FROM value for sent messages
|
5
|
+
# this can be overridden on a per-message basis
|
6
|
+
attr_accessor :from
|
7
|
+
|
8
|
+
# The username of the txtlocal account to use when accessing the API
|
9
|
+
attr_accessor :username
|
10
|
+
|
11
|
+
# The password of the txtlocal account to use when accessing the API
|
12
|
+
attr_accessor :password
|
13
|
+
|
14
|
+
# Access the API in test mode
|
15
|
+
attr_accessor :test
|
16
|
+
|
17
|
+
def initialize
|
18
|
+
@test = false
|
19
|
+
end
|
20
|
+
|
21
|
+
# Nice wrapper to check if we're testing
|
22
|
+
def testing?
|
23
|
+
!!@test
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,90 @@
|
|
1
|
+
require 'net/https'
|
2
|
+
require 'uri'
|
3
|
+
require 'json'
|
4
|
+
|
5
|
+
module Txtlocal
|
6
|
+
class Message
|
7
|
+
|
8
|
+
attr_accessor :body
|
9
|
+
attr_accessor :recipients
|
10
|
+
attr_accessor :from
|
11
|
+
|
12
|
+
attr_accessor :response
|
13
|
+
|
14
|
+
def initialize(message=nil, recipients=nil, options=nil)
|
15
|
+
self.body = message if message
|
16
|
+
self.recipients = recipients if recipients
|
17
|
+
self.options = options if options
|
18
|
+
end
|
19
|
+
|
20
|
+
def body=(body)
|
21
|
+
@body = body.strip.gsub(/\n/, '%n')
|
22
|
+
end
|
23
|
+
|
24
|
+
def recipients
|
25
|
+
@recipients ||= []
|
26
|
+
end
|
27
|
+
def recipients=(recipients)
|
28
|
+
@recipients = []
|
29
|
+
[*recipients].each do |recip|
|
30
|
+
add_recipient(recip)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
def add_recipient(recipient)
|
34
|
+
recipient = recipient.gsub(/\s/, '')
|
35
|
+
recipient = case recipient
|
36
|
+
when /^447\d{9}$/
|
37
|
+
recipient
|
38
|
+
when /^(?:\+447|07)(\d{9})$/
|
39
|
+
"447#{$1}"
|
40
|
+
else
|
41
|
+
return
|
42
|
+
end
|
43
|
+
recipients << recipient
|
44
|
+
end
|
45
|
+
|
46
|
+
def from
|
47
|
+
self.from = Txtlocal.config.from if not @from
|
48
|
+
@from
|
49
|
+
end
|
50
|
+
def from=(from)
|
51
|
+
if from.to_s.length < 3
|
52
|
+
@from = nil
|
53
|
+
else
|
54
|
+
@from = from.strip.gsub(/[^\w ]/, '').to_s[0, 11]
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
def options=(options)
|
59
|
+
self.from = options[:from] if options.has_key?(:from)
|
60
|
+
end
|
61
|
+
|
62
|
+
def response=(response)
|
63
|
+
if not response.body.empty?
|
64
|
+
@response = {}
|
65
|
+
data = JSON.parse(response.body)
|
66
|
+
data.each_pair do |k, v|
|
67
|
+
key = k.gsub(/\B[A-Z]+/, '_\0').downcase.to_sym
|
68
|
+
@response[key] = v
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
API_ENDPOINT = URI.parse("https://www.txtlocal.com/sendsmspost.php")
|
74
|
+
def send!
|
75
|
+
http = Net::HTTP.new(API_ENDPOINT.host, API_ENDPOINT.port)
|
76
|
+
http.use_ssl = true
|
77
|
+
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
78
|
+
req = Net::HTTP::Post.new(API_ENDPOINT.path)
|
79
|
+
req.set_form_data(:json => 1,
|
80
|
+
:test => Txtlocal.config.testing? ? 1 : 0,
|
81
|
+
:from => from,
|
82
|
+
:message => body,
|
83
|
+
:selectednums => recipients.join(","),
|
84
|
+
:uname => Txtlocal.config.username,
|
85
|
+
:pword => Txtlocal.config.password)
|
86
|
+
result = http.start { |http| http.request(req) }
|
87
|
+
self.response = result
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
data/spec/config_spec.rb
ADDED
@@ -0,0 +1,42 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), 'spec_helper')
|
2
|
+
|
3
|
+
describe Txtlocal::Config do
|
4
|
+
let(:config) { Txtlocal::Config.new }
|
5
|
+
|
6
|
+
describe "attributes" do
|
7
|
+
attributes = %w(test from username password)
|
8
|
+
attributes.each do |attr|
|
9
|
+
it "should have the '#{attr}' attribute" do
|
10
|
+
value = mock("value")
|
11
|
+
config.send("#{attr}=", value)
|
12
|
+
config.send(attr).should == value
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
describe "defaults" do
|
18
|
+
defaults = {
|
19
|
+
:test => false,
|
20
|
+
:username => nil,
|
21
|
+
:password => nil,
|
22
|
+
:from => nil
|
23
|
+
}
|
24
|
+
|
25
|
+
defaults.each_pair do |attr, default|
|
26
|
+
example "#{attr} should default to #{default.inspect}" do
|
27
|
+
config.send(attr).should == default
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
describe "testing?" do
|
33
|
+
it "should return false if test isnt true" do
|
34
|
+
config.testing?.should be_false
|
35
|
+
end
|
36
|
+
it "should return true if test is true" do
|
37
|
+
config.test = true
|
38
|
+
config.testing?.should be_true
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
@@ -0,0 +1,187 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), 'spec_helper')
|
2
|
+
|
3
|
+
describe Txtlocal::Message do
|
4
|
+
describe "initialize" do
|
5
|
+
let(:new) { Txtlocal::Message.allocate }
|
6
|
+
let(:body) { double("body text") }
|
7
|
+
let(:recipients) { double("recipients") }
|
8
|
+
let(:options) { double("options") }
|
9
|
+
before(:each) do
|
10
|
+
Txtlocal::Message.stub!(:new) do |*args|
|
11
|
+
new.tap do |n|
|
12
|
+
n.send :initialize, *args
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
it "should call internal setter methods" do
|
18
|
+
new.should_receive(:body=).with(body)
|
19
|
+
new.should_receive(:recipients=).with(recipients)
|
20
|
+
new.should_receive(:options=).with(options)
|
21
|
+
msg = Txtlocal::Message.new(body, recipients, options)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
describe "body text" do
|
26
|
+
let(:msg) { Txtlocal::Message.new }
|
27
|
+
describe "body" do
|
28
|
+
it "should be accessible" do
|
29
|
+
msg.body = "body text"
|
30
|
+
msg.body.should == "body text"
|
31
|
+
end
|
32
|
+
it "should replace newlines with %n" do
|
33
|
+
msg.body = "once\nupon\na time"
|
34
|
+
msg.body.should == "once%nupon%na time"
|
35
|
+
end
|
36
|
+
it "should trim trailing and leading whitespace" do
|
37
|
+
msg.body = " a short message\n\n"
|
38
|
+
msg.body.should == "a short message"
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
describe "recipients" do
|
44
|
+
let(:msg) { Txtlocal::Message.new }
|
45
|
+
describe "accessor" do
|
46
|
+
it "should accept single value" do
|
47
|
+
msg.recipients = "447729416732"
|
48
|
+
msg.recipients.should == ["447729416732"]
|
49
|
+
end
|
50
|
+
it "should accept multiple values" do
|
51
|
+
msg.recipients = ["447729416732", "447923732984"]
|
52
|
+
msg.recipients.should == ["447729416732", "447923732984"]
|
53
|
+
end
|
54
|
+
it "should be using add_recipient internally" do
|
55
|
+
msg.should_receive(:add_recipient).with("447729416732")
|
56
|
+
msg.recipients = "447729416732"
|
57
|
+
end
|
58
|
+
end
|
59
|
+
describe "add_recipient" do
|
60
|
+
it "should accept txtlocal format number" do
|
61
|
+
msg.add_recipient("447729416732")
|
62
|
+
msg.recipients.should == ["447729416732"]
|
63
|
+
end
|
64
|
+
it "should accept 07 format number" do
|
65
|
+
msg.add_recipient("07729416745")
|
66
|
+
msg.recipients.should == ["447729416745"]
|
67
|
+
end
|
68
|
+
it "should accept international format number" do
|
69
|
+
msg.add_recipient("+447729416745")
|
70
|
+
msg.recipients.should == ["447729416745"]
|
71
|
+
end
|
72
|
+
it "should accept numbers with spaces" do
|
73
|
+
msg.add_recipient("07729 457 756")
|
74
|
+
msg.recipients.should == ["447729457756"]
|
75
|
+
end
|
76
|
+
it "should not add invalid numbers" do
|
77
|
+
# TODO: exception here?
|
78
|
+
msg.add_recipient("qwdcs")
|
79
|
+
msg.add_recipient("0114 245 9832")
|
80
|
+
msg.add_recipient("0800 800 8000")
|
81
|
+
msg.recipients.should be_empty
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
describe "from" do
|
87
|
+
let(:msg) { Txtlocal::Message.new }
|
88
|
+
before(:each) do
|
89
|
+
Txtlocal.config.from = "default"
|
90
|
+
end
|
91
|
+
after(:each) do
|
92
|
+
Txtlocal.reset_config
|
93
|
+
end
|
94
|
+
it "should default to config.from" do
|
95
|
+
msg.from.should == "default"
|
96
|
+
end
|
97
|
+
it "should be overridable" do
|
98
|
+
msg.from = "overridden"
|
99
|
+
msg.from.should == "overridden"
|
100
|
+
end
|
101
|
+
it "should revert to default if set to nil" do
|
102
|
+
msg.from = "overridden"
|
103
|
+
msg.from.should == "overridden"
|
104
|
+
msg.from = nil
|
105
|
+
msg.from.should == "default"
|
106
|
+
end
|
107
|
+
it "should truncate if set to longer than 11 characters" do
|
108
|
+
msg.from = "123456789012345"
|
109
|
+
msg.from.should == "12345678901"
|
110
|
+
end
|
111
|
+
it "should fail silently if set to less than 3 characters" do
|
112
|
+
msg.from = "12"
|
113
|
+
msg.from.should == "default"
|
114
|
+
end
|
115
|
+
it "should trim whitespace and remove any non alphanumeric or space characters" do
|
116
|
+
msg.from = " a person! "
|
117
|
+
msg.from.should == "a person"
|
118
|
+
end
|
119
|
+
end
|
120
|
+
|
121
|
+
describe "options" do
|
122
|
+
let(:msg) { Txtlocal::Message.new }
|
123
|
+
it "should accept :from" do
|
124
|
+
msg.options = {:from => "my name"}
|
125
|
+
msg.from.should == "my name"
|
126
|
+
end
|
127
|
+
end
|
128
|
+
|
129
|
+
describe "send!" do
|
130
|
+
context "web mocked" do
|
131
|
+
before(:each) do
|
132
|
+
WebMock.disable_net_connect!
|
133
|
+
stub_request(:post, "https://www.txtlocal.com/sendsmspost.php")
|
134
|
+
Txtlocal.config do |c|
|
135
|
+
c.from = "testing"
|
136
|
+
c.username = "testuser"
|
137
|
+
c.password = "testpass"
|
138
|
+
c.test = false
|
139
|
+
end
|
140
|
+
end
|
141
|
+
after(:each) do
|
142
|
+
Txtlocal.reset_config
|
143
|
+
end
|
144
|
+
it "should send data to the API endpoint" do
|
145
|
+
msg = Txtlocal::Message.new("a message", "447729416583")
|
146
|
+
msg.send!
|
147
|
+
WebMock.should have_requested(:post, "https://www.txtlocal.com/sendsmspost.php").with(
|
148
|
+
:body => {'uname' => "testuser", 'pword' => "testpass", 'json' => '1', 'test' => '0',
|
149
|
+
'from' => "testing", 'selectednums' => "447729416583", 'message' => "a message"}
|
150
|
+
)
|
151
|
+
end
|
152
|
+
it "should comma sepratate multiple recipients" do
|
153
|
+
msg = Txtlocal::Message.new("a message", ["447729416583", "447984534657"])
|
154
|
+
msg.send!
|
155
|
+
WebMock.should have_requested(:post, "https://www.txtlocal.com/sendsmspost.php").with(
|
156
|
+
:body => {'uname' => "testuser", 'pword' => "testpass", 'json' => '1', 'test' => '0',
|
157
|
+
'from' => "testing", 'selectednums' => "447729416583,447984534657",
|
158
|
+
'message' => "a message"}
|
159
|
+
)
|
160
|
+
end
|
161
|
+
end
|
162
|
+
context "api test mode" do
|
163
|
+
if not (File.readable?('api_login.rb') and load('api_login.rb') and
|
164
|
+
API_USERNAME and API_PASSWORD)
|
165
|
+
pending "\n" +
|
166
|
+
"Please create a file api_login.rb that defines API_USERNAME and API_PASSWORD " +
|
167
|
+
"to run tests against the real server"
|
168
|
+
else
|
169
|
+
before(:each) do
|
170
|
+
WebMock.allow_net_connect!
|
171
|
+
Txtlocal.config do |c|
|
172
|
+
c.from = "testing"
|
173
|
+
c.username = API_USERNAME
|
174
|
+
c.password = API_PASSWORD
|
175
|
+
c.test = true
|
176
|
+
end
|
177
|
+
end
|
178
|
+
it "should send data to the API endpoint" do
|
179
|
+
msg = Txtlocal::Message.new("a message", "447729467413")
|
180
|
+
msg.send!
|
181
|
+
msg.response.should_not be_nil
|
182
|
+
msg.response[:error].should include "testmode"
|
183
|
+
end
|
184
|
+
end
|
185
|
+
end
|
186
|
+
end
|
187
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), 'spec_helper')
|
2
|
+
|
3
|
+
describe Txtlocal do
|
4
|
+
|
5
|
+
describe "config" do
|
6
|
+
it "should be accessible" do
|
7
|
+
Txtlocal.config.should be_a Txtlocal::Config
|
8
|
+
end
|
9
|
+
it "should be modifiable with a block" do
|
10
|
+
remember = nil
|
11
|
+
Txtlocal.config do |c|
|
12
|
+
c.should be_a Txtlocal::Config
|
13
|
+
remember = c
|
14
|
+
end
|
15
|
+
Txtlocal.config.should == remember
|
16
|
+
end
|
17
|
+
it "should be resettable" do
|
18
|
+
c = Txtlocal.config
|
19
|
+
Txtlocal.reset_config
|
20
|
+
Txtlocal.config.should_not == c
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
describe "send_message" do
|
25
|
+
let(:message) { double("message body") }
|
26
|
+
let(:recipients) { double("list of recipients") }
|
27
|
+
let(:options) { double("additional message options") }
|
28
|
+
let(:msg_instance) { double("message instance") }
|
29
|
+
|
30
|
+
it "should construct a Message instance and send! it" do
|
31
|
+
msg_instance.should_receive(:send!).with(no_args)
|
32
|
+
Txtlocal::Message.should_receive(:new).with(message, recipients, options) { msg_instance }
|
33
|
+
Txtlocal.send_message(message, recipients, options).should == msg_instance
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
data/txtlocal.gemspec
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
require File.expand_path("../lib/txtlocal/version", __FILE__)
|
3
|
+
|
4
|
+
Gem::Specification.new do |s|
|
5
|
+
s.name = "txtlocal"
|
6
|
+
s.version = Txtlocal::VERSION
|
7
|
+
s.platform = Gem::Platform::RUBY
|
8
|
+
s.authors = ["Glen Mailer"]
|
9
|
+
s.email = ["glen@epigenesys.co.uk"]
|
10
|
+
s.homepage = "https://github.com/epigenesys/txtlocal"
|
11
|
+
s.summary = "An API wrapper for txtlocal.co.uk"
|
12
|
+
s.description = "An API wrapper for txtlocal.co.uk"
|
13
|
+
|
14
|
+
s.required_rubygems_version = ">= 1.3.6"
|
15
|
+
#s.rubyforge_project = "txtlocal"
|
16
|
+
|
17
|
+
s.add_dependency "json"
|
18
|
+
|
19
|
+
s.add_development_dependency "bundler", ">= 1.0.0"
|
20
|
+
s.add_development_dependency "rspec"
|
21
|
+
s.add_development_dependency "ruby-debug"
|
22
|
+
s.add_development_dependency "autotest"
|
23
|
+
s.add_development_dependency "webmock"
|
24
|
+
|
25
|
+
s.files = `git ls-files`.split("\n")
|
26
|
+
s.executables = `git ls-files`.split("\n").map{|f| f =~ /^bin\/(.*)/ ? $1 : nil}.compact
|
27
|
+
s.require_path = 'lib'
|
28
|
+
end
|
metadata
ADDED
@@ -0,0 +1,128 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: txtlocal
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Glen Mailer
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2011-11-13 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: json
|
16
|
+
requirement: &70290906322080 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *70290906322080
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: bundler
|
27
|
+
requirement: &70290906316680 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 1.0.0
|
33
|
+
type: :development
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *70290906316680
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: rspec
|
38
|
+
requirement: &70290906315460 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ! '>='
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0'
|
44
|
+
type: :development
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: *70290906315460
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: ruby-debug
|
49
|
+
requirement: &70290906311120 !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
type: :development
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: *70290906311120
|
58
|
+
- !ruby/object:Gem::Dependency
|
59
|
+
name: autotest
|
60
|
+
requirement: &70290906306060 !ruby/object:Gem::Requirement
|
61
|
+
none: false
|
62
|
+
requirements:
|
63
|
+
- - ! '>='
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: '0'
|
66
|
+
type: :development
|
67
|
+
prerelease: false
|
68
|
+
version_requirements: *70290906306060
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: webmock
|
71
|
+
requirement: &70290906301840 !ruby/object:Gem::Requirement
|
72
|
+
none: false
|
73
|
+
requirements:
|
74
|
+
- - ! '>='
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
77
|
+
type: :development
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: *70290906301840
|
80
|
+
description: An API wrapper for txtlocal.co.uk
|
81
|
+
email:
|
82
|
+
- glen@epigenesys.co.uk
|
83
|
+
executables: []
|
84
|
+
extensions: []
|
85
|
+
extra_rdoc_files: []
|
86
|
+
files:
|
87
|
+
- .autotest
|
88
|
+
- .gitignore
|
89
|
+
- .rspec
|
90
|
+
- Gemfile
|
91
|
+
- Gemfile.lock
|
92
|
+
- LICENSE
|
93
|
+
- README.md
|
94
|
+
- Rakefile
|
95
|
+
- lib/txtlocal.rb
|
96
|
+
- lib/txtlocal/config.rb
|
97
|
+
- lib/txtlocal/message.rb
|
98
|
+
- lib/txtlocal/version.rb
|
99
|
+
- spec/config_spec.rb
|
100
|
+
- spec/message_spec.rb
|
101
|
+
- spec/spec_helper.rb
|
102
|
+
- spec/txtlocal_spec.rb
|
103
|
+
- txtlocal.gemspec
|
104
|
+
homepage: https://github.com/epigenesys/txtlocal
|
105
|
+
licenses: []
|
106
|
+
post_install_message:
|
107
|
+
rdoc_options: []
|
108
|
+
require_paths:
|
109
|
+
- lib
|
110
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
111
|
+
none: false
|
112
|
+
requirements:
|
113
|
+
- - ! '>='
|
114
|
+
- !ruby/object:Gem::Version
|
115
|
+
version: '0'
|
116
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
117
|
+
none: false
|
118
|
+
requirements:
|
119
|
+
- - ! '>='
|
120
|
+
- !ruby/object:Gem::Version
|
121
|
+
version: 1.3.6
|
122
|
+
requirements: []
|
123
|
+
rubyforge_project:
|
124
|
+
rubygems_version: 1.8.10
|
125
|
+
signing_key:
|
126
|
+
specification_version: 3
|
127
|
+
summary: An API wrapper for txtlocal.co.uk
|
128
|
+
test_files: []
|