it_cloud_sms 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.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/it_cloud_sms.rb +93 -0
  3. metadata +86 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: c5f375d9aed19221f56d16fc319448177b665d08
4
+ data.tar.gz: e5358268ed6afae1fc4bf51b9c69f579a3e279d7
5
+ SHA512:
6
+ metadata.gz: 7996a169560aec7616487f63c774fd604c10935db584f53e15e822c5790b04c356770ff23a5c088f82c5b5c2efaf56a511daa9c0e1cd052cbd1a7ca3e25e9c3d
7
+ data.tar.gz: 502be17f4a7b5c17add4ec2f68f12c2c0fe7f2bcb26685cace6729267bc98b4bcfc0c81a329a7b92268e6437dcaddef1fc8acd8775ae12ff859de1dc727af6b7
@@ -0,0 +1,93 @@
1
+ require 'phone'
2
+ require 'net/https'
3
+
4
+ module ItCloudSms
5
+
6
+ PhoneFormat = "%c%a%n"
7
+ APIUri = URI.parse("https://sistemasmasivos.com/itcloud/api/sendsms/send.php")
8
+
9
+ class << self
10
+
11
+ @@login = ""
12
+ @@password = ""
13
+ @@from = ""
14
+
15
+ def login=(username)
16
+ @@login = username
17
+ end
18
+
19
+ def password=(secret)
20
+ @@password = secret
21
+ end
22
+
23
+ # Send a petition to ItCloud SMS gateway
24
+ #
25
+ # Example:
26
+ # >> ItCloudSms.send_sms(:login => "login",
27
+ # :password => "password",
28
+ # :destination => "573102111111" || ["573102111111", "573102111112"], # Up to 500 numbers
29
+ # :message => "Message with 159 chars maximum")
30
+ def send_sms(options = {})
31
+ # Check for login
32
+ login = options[:login] || @@login
33
+ raise ArgumentError, "Login must be present" unless login and not login.blank?
34
+
35
+ # Check for password
36
+ password = options[:password] || @@password
37
+ raise ArgumentError, "Password must be present" unless password and not password.blank?
38
+
39
+ # Multiple destinations support
40
+ options[:destination] = [options[:destination]] unless options[:destination].kind_of?(Array)
41
+
42
+ # Check for max destinations
43
+ raise ArgumentError, "Max of 500 destinations exceeded" if (options[:destination].size > 500)
44
+
45
+ destinations = []
46
+ options[:destination].each do |phone|
47
+ raise ArgumentError, "Recipient must be a telephone number with international format: #{phone.to_s}" unless Phoner::Phone.valid?(phone.to_s)
48
+ destinations << Phoner::Phone.parse(phone.to_s).format(PhoneFormat)
49
+ end
50
+
51
+ message = options[:message].to_s
52
+ raise ArgumentError, "Message must be present" if message.blank?
53
+ raise ArgumentError, "Message is 159 chars maximum" if message.size > 159
54
+
55
+ http = Net::HTTP.new(APIUri.host, APIUri.port)
56
+ http.use_ssl = true
57
+ http.verify_mode = OpenSSL::SSL::VERIFY_NONE
58
+
59
+ request = Net::HTTP::Post.new(APIUri.request_uri)
60
+ request.set_form_data({'user' => login,
61
+ 'password' => password,
62
+ 'GSM' => destinations.join(","),
63
+ 'SMSText' => message})
64
+
65
+ response = http.request(request)
66
+ if response.code == "200"
67
+ case response.body
68
+ when "-1" then
69
+ raise StandardError, "Authentication failed"
70
+ when "-2" then
71
+ raise StandardError, "Out of hours"
72
+ when "-3" then
73
+ raise StandardError, "No credit"
74
+ when "-4" then
75
+ raise StandardError, "Wrong number"
76
+ when "-5" then
77
+ raise StandardError, "Wrong message"
78
+ when "-6" then
79
+ raise StandardError, "System under maintenance"
80
+ when "-7" then
81
+ raise StandardError, "Max cellphones reached"
82
+ when "0" then
83
+ raise StandardError, "Operator not found"
84
+ else
85
+ return response.body
86
+ end
87
+ else
88
+ raise RuntimeError, "Server responded with code #{response.code}: #{response.body}"
89
+ end
90
+ end
91
+
92
+ end
93
+ end
metadata ADDED
@@ -0,0 +1,86 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: it_cloud_sms
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Angel García Pérez
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-07-23 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: phone
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '='
18
+ - !ruby/object:Gem::Version
19
+ version: '1.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '='
25
+ - !ruby/object:Gem::Version
26
+ version: '1.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ~>
32
+ - !ruby/object:Gem::Version
33
+ version: 0.8.7
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ~>
39
+ - !ruby/object:Gem::Version
40
+ version: 0.8.7
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '>'
46
+ - !ruby/object:Gem::Version
47
+ version: 1.3.1
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>'
53
+ - !ruby/object:Gem::Version
54
+ version: 1.3.1
55
+ description: A gateway to send SMS using HTTP POST, through IT Cloud Services Colombia,
56
+ written in ruby
57
+ email: wage83@gmail.com
58
+ executables: []
59
+ extensions: []
60
+ extra_rdoc_files: []
61
+ files:
62
+ - lib/it_cloud_sms.rb
63
+ homepage: http://www.itcloudcolombia.com/?page_id=23
64
+ licenses: []
65
+ metadata: {}
66
+ post_install_message:
67
+ rdoc_options: []
68
+ require_paths:
69
+ - lib
70
+ required_ruby_version: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - '>='
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
75
+ required_rubygems_version: !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - - '>='
78
+ - !ruby/object:Gem::Version
79
+ version: '0'
80
+ requirements: []
81
+ rubyforge_project:
82
+ rubygems_version: 2.0.6
83
+ signing_key:
84
+ specification_version: 4
85
+ summary: IT Cloud Services Colombia send SMS HTTP gateway
86
+ test_files: []