cellular 0.0.0 → 1.0.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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 6797a5f2c6ccf1a9f71167bad98a54eeed77d729
4
+ data.tar.gz: 03dd1fcc61fd35ab0bfebee9a40b181fe731dff5
5
+ SHA512:
6
+ metadata.gz: 14a1c8bf8e47f83eaa088cecf5efc867b60b76c5578b7b8236ed3897821018b85dc8b726bb969556bd72648e44aab42ce12324954f0c5a260a96475eae8b192b
7
+ data.tar.gz: 1554bbe7f7d214a02aa49c0de8d3c58c6155bc0738e9d79ab1d2ce088b4ae75873d51a3b992775e6cf877af96386e86f118efea8240e0022ba44d027f18ca119
data/LICENSE.md CHANGED
@@ -1,6 +1,6 @@
1
1
  Licensed under the **MIT** license
2
2
 
3
- > Copyright (c) 2013 Tim Kurvers <<tim@hyper.no>>
3
+ > Copyright (c) 2014 Hyper
4
4
  >
5
5
  > Permission is hereby granted, free of charge, to any person obtaining
6
6
  > a copy of this software and associated documentation files (the
data/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Sending and receiving SMSs with Ruby through pluggable backends.
4
4
 
5
- **Supported Ruby versions: 1.8.7 or higher**
5
+ **Supported Ruby versions: 1.9 or higher**
6
6
 
7
7
  Licensed under the **MIT** license, see LICENSE for more information.
8
8
 
data/cellular.gemspec CHANGED
@@ -8,8 +8,8 @@ require 'cellular/version'
8
8
  Gem::Specification.new do |gem|
9
9
  gem.name = 'cellular'
10
10
  gem.version = Cellular::VERSION
11
- gem.authors = ['Tim Kurvers']
12
- gem.email = ['tim@moonsphere.net']
11
+ gem.authors = ['Sindre Moen', 'Tim Kurvers']
12
+ gem.email = ['johannes@hyper.no']
13
13
  gem.description = %q{Sending and receiving SMSs through pluggable backends}
14
14
  gem.summary = %q{Sending and receiving SMSs through pluggable backends}
15
15
  gem.homepage = ''
@@ -18,4 +18,8 @@ Gem::Specification.new do |gem|
18
18
  gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
19
19
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
20
20
  gem.require_paths = ['lib']
21
+
22
+ gem.add_dependency 'savon'
23
+
24
+ gem.add_development_dependency 'pry'
21
25
  end
data/lib/cellular.rb CHANGED
@@ -1,4 +1,20 @@
1
1
  require 'cellular/version'
2
+ require 'cellular/configuration'
3
+ require 'cellular/models/sms'
4
+ require 'cellular/backends'
2
5
 
3
6
  module Cellular
7
+
8
+ class << self
9
+ attr_accessor :config
10
+
11
+ def configure
12
+ yield config
13
+ end
14
+
15
+ def config
16
+ @config ||= Configuration.new
17
+ end
18
+ end
19
+
4
20
  end
@@ -0,0 +1,5 @@
1
+ module Cellular
2
+ module Backends
3
+ autoload :Sendega, 'cellular/backends/sendega'
4
+ end
5
+ end
@@ -0,0 +1,73 @@
1
+ require 'savon'
2
+
3
+ module Cellular
4
+ module Backends
5
+ class Sendega
6
+
7
+ GATEWAY_URL = 'https://smsc.sendega.com/Content.asmx?WSDL'
8
+
9
+ def self.deliver(options = {})
10
+ # Send an SMS and return its initial delivery status code.
11
+ #
12
+ # Delivery status codes:
13
+ # 0 -- Message is received and is being processed.
14
+ # 1001 -- Not validated
15
+ # 1003 -- Wrong format: pid/dcs
16
+ # 1004 -- Erroneous typeid
17
+ # 1020 -- Fromalpha too long
18
+ # 1021 -- Fromnumber too long
19
+ # 1022 -- Erroneous recipient, integer overflow
20
+ # 1023 -- No message content submitted
21
+ # 1024 -- Premium sms must have abbreviated number as sender
22
+ # 1025 -- The message sender is not allowed
23
+ # 1026 -- Balance to low
24
+ # 1027 -- Message too long
25
+ # 1028 -- Alphanumeric sender is not valid
26
+ # 1099 -- Internal error
27
+ # 9001 -- Username and password does not match
28
+ # 9002 -- Account is closed
29
+ # 9004 -- Http not enabled
30
+ # 9005 -- Smpp not enabled
31
+ # 9006 -- Ip not allowed
32
+ # 9007 -- Demo account empty
33
+ #
34
+ # See Gate API Documentation:
35
+ # http://www.sendega.no/downloads/Sendega%20API%20documentation%20v2.0.pdf
36
+
37
+ client = Savon.client wsdl: GATEWAY_URL
38
+
39
+ result = client.call(:send, message: {
40
+ username: Cellular.config.username,
41
+ password: Cellular.config.password,
42
+ sender: options[:sender],
43
+ destination: options[:recipient],
44
+ pricegroup: options[:price] || 0, # default price to 0
45
+ contentTypeID: 1,
46
+ contentHeader: "",
47
+ content: options[:message],
48
+ dlrUrl: Cellular.config.delivery_url,
49
+ ageLimit: 0,
50
+ extID: "",
51
+ sendDate: "",
52
+ refID: "",
53
+ priority: 0,
54
+ gwID: 0,
55
+ pid: 0,
56
+ dcs: 0
57
+ }
58
+ )
59
+
60
+ if result.success?
61
+ [ result.body[:error_number], 'Message is received and is being processed.' ]
62
+ else
63
+ [ result.body[:error_number], result.body[:error_message] ]
64
+ end
65
+ end
66
+
67
+ def self.receive(data)
68
+ raise NotImplementedError
69
+ end
70
+
71
+ end
72
+ end
73
+ end
@@ -0,0 +1,7 @@
1
+ module Cellular
2
+ class Configuration
3
+
4
+ attr_accessor :username, :password, :delivery_url, :backend
5
+
6
+ end
7
+ end
@@ -0,0 +1,43 @@
1
+ module Cellular
2
+ class SMS
3
+
4
+ attr_accessor :recipient, :sender, :message, :price, :country
5
+
6
+ def initialize(options = {})
7
+ @backend = Cellular.config.backend
8
+
9
+ @recipient = options[:recipient]
10
+ @sender = options[:sender]
11
+ @message = options[:message]
12
+ @price = options[:price]
13
+ @country = options[:country]
14
+
15
+ @delivered = false
16
+ end
17
+
18
+ def deliver
19
+ @delivery_status, @delivery_message = @backend.deliver(
20
+ recipient: @recipient,
21
+ sender: @sender,
22
+ price: @price,
23
+ country: @country,
24
+ message: @message
25
+ )
26
+
27
+ @delivered = true
28
+ end
29
+
30
+ def save(options)
31
+ raise NotImplementedError
32
+ end
33
+
34
+ def receive(options)
35
+ raise NotImplementedError
36
+ end
37
+
38
+ def delivered?
39
+ @delivered
40
+ end
41
+
42
+ end
43
+ end
@@ -1,3 +1,3 @@
1
1
  module Cellular
2
- VERSION = '0.0.0'
2
+ VERSION = '1.0.0'
3
3
  end
metadata CHANGED
@@ -1,19 +1,47 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cellular
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.0
5
- prerelease:
4
+ version: 1.0.0
6
5
  platform: ruby
7
6
  authors:
7
+ - Sindre Moen
8
8
  - Tim Kurvers
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-05-08 00:00:00.000000000 Z
13
- dependencies: []
12
+ date: 2014-02-03 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: savon
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - '>='
19
+ - !ruby/object:Gem::Version
20
+ version: '0'
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - '>='
26
+ - !ruby/object:Gem::Version
27
+ version: '0'
28
+ - !ruby/object:Gem::Dependency
29
+ name: pry
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - '>='
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
35
+ type: :development
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - '>='
40
+ - !ruby/object:Gem::Version
41
+ version: '0'
14
42
  description: Sending and receiving SMSs through pluggable backends
15
43
  email:
16
- - tim@moonsphere.net
44
+ - johannes@hyper.no
17
45
  executables: []
18
46
  extensions: []
19
47
  extra_rdoc_files: []
@@ -25,29 +53,32 @@ files:
25
53
  - Rakefile
26
54
  - cellular.gemspec
27
55
  - lib/cellular.rb
56
+ - lib/cellular/backends.rb
57
+ - lib/cellular/backends/sendega.rb
58
+ - lib/cellular/configuration.rb
59
+ - lib/cellular/models/sms.rb
28
60
  - lib/cellular/version.rb
29
61
  homepage: ''
30
62
  licenses: []
63
+ metadata: {}
31
64
  post_install_message:
32
65
  rdoc_options: []
33
66
  require_paths:
34
67
  - lib
35
68
  required_ruby_version: !ruby/object:Gem::Requirement
36
- none: false
37
69
  requirements:
38
- - - ! '>='
70
+ - - '>='
39
71
  - !ruby/object:Gem::Version
40
72
  version: '0'
41
73
  required_rubygems_version: !ruby/object:Gem::Requirement
42
- none: false
43
74
  requirements:
44
- - - ! '>='
75
+ - - '>='
45
76
  - !ruby/object:Gem::Version
46
77
  version: '0'
47
78
  requirements: []
48
79
  rubyforge_project:
49
- rubygems_version: 1.8.24
80
+ rubygems_version: 2.2.1
50
81
  signing_key:
51
- specification_version: 3
82
+ specification_version: 4
52
83
  summary: Sending and receiving SMSs through pluggable backends
53
84
  test_files: []