sms_factor 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: d8196e46faf3a9cda27c4944ee3e4dc31afa0021
4
+ data.tar.gz: ca31b56daf07212145abfe3a5a72db2ed5f37328
5
+ SHA512:
6
+ metadata.gz: d590cc2cfc3427cf948aba5c50589891a6dd06703b6c6c3cdf337f7e76271498537a273800d91ec11910aa0b85f13c7a2ff29f9ba58e2e0756a604c59fafb16b
7
+ data.tar.gz: e08233e3324543fb5f6e6ce8e4a1ac0de57058cab01fd3b2b561095544cde5cf5c9cc7289a5f8a9744d6b12e079114dc3b5004cba70b83936278816bf1f9ca86
@@ -0,0 +1,165 @@
1
+ GNU LESSER GENERAL PUBLIC LICENSE
2
+ Version 3, 29 June 2007
3
+
4
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
5
+ Everyone is permitted to copy and distribute verbatim copies
6
+ of this license document, but changing it is not allowed.
7
+
8
+
9
+ This version of the GNU Lesser General Public License incorporates
10
+ the terms and conditions of version 3 of the GNU General Public
11
+ License, supplemented by the additional permissions listed below.
12
+
13
+ 0. Additional Definitions.
14
+
15
+ As used herein, "this License" refers to version 3 of the GNU Lesser
16
+ General Public License, and the "GNU GPL" refers to version 3 of the GNU
17
+ General Public License.
18
+
19
+ "The Library" refers to a covered work governed by this License,
20
+ other than an Application or a Combined Work as defined below.
21
+
22
+ An "Application" is any work that makes use of an interface provided
23
+ by the Library, but which is not otherwise based on the Library.
24
+ Defining a subclass of a class defined by the Library is deemed a mode
25
+ of using an interface provided by the Library.
26
+
27
+ A "Combined Work" is a work produced by combining or linking an
28
+ Application with the Library. The particular version of the Library
29
+ with which the Combined Work was made is also called the "Linked
30
+ Version".
31
+
32
+ The "Minimal Corresponding Source" for a Combined Work means the
33
+ Corresponding Source for the Combined Work, excluding any source code
34
+ for portions of the Combined Work that, considered in isolation, are
35
+ based on the Application, and not on the Linked Version.
36
+
37
+ The "Corresponding Application Code" for a Combined Work means the
38
+ object code and/or source code for the Application, including any data
39
+ and utility programs needed for reproducing the Combined Work from the
40
+ Application, but excluding the System Libraries of the Combined Work.
41
+
42
+ 1. Exception to Section 3 of the GNU GPL.
43
+
44
+ You may convey a covered work under sections 3 and 4 of this License
45
+ without being bound by section 3 of the GNU GPL.
46
+
47
+ 2. Conveying Modified Versions.
48
+
49
+ If you modify a copy of the Library, and, in your modifications, a
50
+ facility refers to a function or data to be supplied by an Application
51
+ that uses the facility (other than as an argument passed when the
52
+ facility is invoked), then you may convey a copy of the modified
53
+ version:
54
+
55
+ a) under this License, provided that you make a good faith effort to
56
+ ensure that, in the event an Application does not supply the
57
+ function or data, the facility still operates, and performs
58
+ whatever part of its purpose remains meaningful, or
59
+
60
+ b) under the GNU GPL, with none of the additional permissions of
61
+ this License applicable to that copy.
62
+
63
+ 3. Object Code Incorporating Material from Library Header Files.
64
+
65
+ The object code form of an Application may incorporate material from
66
+ a header file that is part of the Library. You may convey such object
67
+ code under terms of your choice, provided that, if the incorporated
68
+ material is not limited to numerical parameters, data structure
69
+ layouts and accessors, or small macros, inline functions and templates
70
+ (ten or fewer lines in length), you do both of the following:
71
+
72
+ a) Give prominent notice with each copy of the object code that the
73
+ Library is used in it and that the Library and its use are
74
+ covered by this License.
75
+
76
+ b) Accompany the object code with a copy of the GNU GPL and this license
77
+ document.
78
+
79
+ 4. Combined Works.
80
+
81
+ You may convey a Combined Work under terms of your choice that,
82
+ taken together, effectively do not restrict modification of the
83
+ portions of the Library contained in the Combined Work and reverse
84
+ engineering for debugging such modifications, if you also do each of
85
+ the following:
86
+
87
+ a) Give prominent notice with each copy of the Combined Work that
88
+ the Library is used in it and that the Library and its use are
89
+ covered by this License.
90
+
91
+ b) Accompany the Combined Work with a copy of the GNU GPL and this license
92
+ document.
93
+
94
+ c) For a Combined Work that displays copyright notices during
95
+ execution, include the copyright notice for the Library among
96
+ these notices, as well as a reference directing the user to the
97
+ copies of the GNU GPL and this license document.
98
+
99
+ d) Do one of the following:
100
+
101
+ 0) Convey the Minimal Corresponding Source under the terms of this
102
+ License, and the Corresponding Application Code in a form
103
+ suitable for, and under terms that permit, the user to
104
+ recombine or relink the Application with a modified version of
105
+ the Linked Version to produce a modified Combined Work, in the
106
+ manner specified by section 6 of the GNU GPL for conveying
107
+ Corresponding Source.
108
+
109
+ 1) Use a suitable shared library mechanism for linking with the
110
+ Library. A suitable mechanism is one that (a) uses at run time
111
+ a copy of the Library already present on the user's computer
112
+ system, and (b) will operate properly with a modified version
113
+ of the Library that is interface-compatible with the Linked
114
+ Version.
115
+
116
+ e) Provide Installation Information, but only if you would otherwise
117
+ be required to provide such information under section 6 of the
118
+ GNU GPL, and only to the extent that such information is
119
+ necessary to install and execute a modified version of the
120
+ Combined Work produced by recombining or relinking the
121
+ Application with a modified version of the Linked Version. (If
122
+ you use option 4d0, the Installation Information must accompany
123
+ the Minimal Corresponding Source and Corresponding Application
124
+ Code. If you use option 4d1, you must provide the Installation
125
+ Information in the manner specified by section 6 of the GNU GPL
126
+ for conveying Corresponding Source.)
127
+
128
+ 5. Combined Libraries.
129
+
130
+ You may place library facilities that are a work based on the
131
+ Library side by side in a single library together with other library
132
+ facilities that are not Applications and are not covered by this
133
+ License, and convey such a combined library under terms of your
134
+ choice, if you do both of the following:
135
+
136
+ a) Accompany the combined library with a copy of the same work based
137
+ on the Library, uncombined with any other library facilities,
138
+ conveyed under the terms of this License.
139
+
140
+ b) Give prominent notice with the combined library that part of it
141
+ is a work based on the Library, and explaining where to find the
142
+ accompanying uncombined form of the same work.
143
+
144
+ 6. Revised Versions of the GNU Lesser General Public License.
145
+
146
+ The Free Software Foundation may publish revised and/or new versions
147
+ of the GNU Lesser General Public License from time to time. Such new
148
+ versions will be similar in spirit to the present version, but may
149
+ differ in detail to address new problems or concerns.
150
+
151
+ Each version is given a distinguishing version number. If the
152
+ Library as you received it specifies that a certain numbered version
153
+ of the GNU Lesser General Public License "or any later version"
154
+ applies to it, you have the option of following the terms and
155
+ conditions either of that published version or of any later version
156
+ published by the Free Software Foundation. If the Library as you
157
+ received it does not specify a version number of the GNU Lesser
158
+ General Public License, you may choose any version of the GNU Lesser
159
+ General Public License ever published by the Free Software Foundation.
160
+
161
+ If the Library as you received it specifies that a proxy can decide
162
+ whether future versions of the GNU Lesser General Public License shall
163
+ apply, that proxy's public statement of acceptance of any version is
164
+ permanent authorization for you to choose that version for the
165
+ Library.
@@ -0,0 +1,40 @@
1
+ == SMS Factor
2
+
3
+ An easy way to use API SMS of http://www.smsfactor.com/ (http://www.smsfactor.com/api-sms/)
4
+
5
+ == Installation
6
+
7
+ You can install sms_factor by adding this line in your Gemfile :
8
+
9
+ gem 'sms_factor'
10
+
11
+ And then :
12
+
13
+ bundle install
14
+
15
+ == Configuration
16
+
17
+ To use this gem, configure SmsFactor using your API information :
18
+
19
+ SmsFactor::Init.configure do |config|
20
+ config.api_url = 'http://api.smsfactor.com'
21
+ config.api_login = '<your_email@your_company.com>'
22
+ config.api_password = '<your_password>'
23
+ config.api_default_from = '<a_default_sender_name>'
24
+ end
25
+
26
+ == Use
27
+
28
+ To send a SMS :
29
+
30
+ r = SmsFactor.sms('Hello World', '336++++++++') # to a single recipient
31
+ r = SmsFactor.sms('Hello World', ['336++++++++', '336++++++++', '336++++++++']) # to multiple recipients
32
+ r = SmsFactor.sms('Hello World', '336++++++++', 'Toto') # to override default from
33
+
34
+ To retrieve your credit after the sms was sent :
35
+
36
+ r.credit
37
+
38
+ == Copyright
39
+
40
+ Copyright (c) 2015 Julien Séveno
@@ -0,0 +1,65 @@
1
+ require 'rest-client'
2
+ require 'nokogiri'
3
+
4
+ class SmsFactor
5
+ attr_accessor :message, :recipients, :sender
6
+
7
+ def initialize(message, recipients, sender = nil)
8
+ raise "The configuration is not complete. Please define api_url, api_login, api_password and api_default_from" unless SmsFactor::Init.configuration.is_valid?
9
+
10
+ @sender ||= SmsFactor::Init.configuration.api_default_from
11
+ @recipients = recipients.kind_of?(Array) ? recipients : [recipients]
12
+ @message = message
13
+ end
14
+
15
+ def build
16
+ {
17
+ sms: auth_credentials.merge(
18
+ message: {text: @message, sender: @sender, pushtype: 'alert'},
19
+ recipients: {
20
+ gsm: @recipients.collect{|recipient| {value: recipient}}
21
+ }
22
+ )
23
+ }
24
+ end
25
+
26
+ def auth_credentials
27
+ @auth_credentials ||= {
28
+ authentication: {
29
+ username: SmsFactor::Init.configuration.api_login,
30
+ password: SmsFactor::Init.configuration.api_password
31
+ }
32
+ }
33
+ end
34
+
35
+ def deliver(delay: :now, check: false)
36
+ data = case delay
37
+ when nil, :now
38
+ build
39
+ else
40
+ build[:sms].merge!({delay: delay})
41
+ end
42
+
43
+ url = "#{SmsFactor::Init.configuration.api_url}/send"
44
+ url = "#{url}/simulate" if check
45
+
46
+ SmsFactor::SmsResponse.new(
47
+ RestClient.post(
48
+ url,
49
+ { data: data.to_json },
50
+ content_type: :json,
51
+ accept: :json,
52
+ verify_ssl: false
53
+ )
54
+ )
55
+ end
56
+
57
+ def self.sms(message, recipients, sender = nil)
58
+ sms = SmsFactor.new(message, recipients, sender)
59
+ sms.deliver
60
+ end
61
+ end
62
+
63
+ require 'sms_factor/configuration'
64
+ require 'sms_factor/init'
65
+ require 'sms_factor/sms_response'
@@ -0,0 +1,7 @@
1
+ class SmsFactor::Configuration
2
+ attr_accessor :api_url, :api_login, :api_password, :api_default_from
3
+
4
+ def is_valid?
5
+ !api_url.nil? && !api_login.nil? && !api_password.nil? && !api_default_from.nil?
6
+ end
7
+ end
@@ -0,0 +1,11 @@
1
+ class SmsFactor::Init
2
+ attr_accessor :configuration
3
+
4
+ def self.configuration
5
+ @configuration ||= SmsFactor::Configuration.new
6
+ end
7
+
8
+ def self.configure
9
+ yield(configuration)
10
+ end
11
+ end
@@ -0,0 +1,20 @@
1
+ class SmsFactor::SmsResponse
2
+ attr_accessor :response
3
+
4
+ def initialize(response)
5
+ @response = JSON.parse(response)
6
+ end
7
+
8
+ def success?
9
+ @response['status'] == 1
10
+ end
11
+
12
+ def message
13
+ @response['message']
14
+ end
15
+
16
+ def method_missing(m, *args, &block)
17
+ super unless @response.keys.include?(m.to_s)
18
+ @response[m.to_s]
19
+ end
20
+ end
metadata ADDED
@@ -0,0 +1,73 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: sms_factor
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.1
5
+ platform: ruby
6
+ authors:
7
+ - Julien Séveno
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-07-17 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rest-client
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.8'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 1.8.0
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '1.8'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 1.8.0
33
+ description: An easy way to use API SMS of http://www.smsfactor.com/ (http://www.smsfactor.com/api-sms)
34
+ email: jseveno@gmail.com
35
+ executables: []
36
+ extensions: []
37
+ extra_rdoc_files:
38
+ - LICENSE.txt
39
+ - README.rdoc
40
+ files:
41
+ - LICENSE.txt
42
+ - README.rdoc
43
+ - lib/sms_factor.rb
44
+ - lib/sms_factor/configuration.rb
45
+ - lib/sms_factor/init.rb
46
+ - lib/sms_factor/sms_response.rb
47
+ homepage: https://github.com/juseveno/sms_factor
48
+ licenses:
49
+ - LGPL
50
+ metadata: {}
51
+ post_install_message:
52
+ rdoc_options: []
53
+ require_paths:
54
+ - lib
55
+ required_ruby_version: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - ">="
58
+ - !ruby/object:Gem::Version
59
+ version: 2.2.0
60
+ required_rubygems_version: !ruby/object:Gem::Requirement
61
+ requirements:
62
+ - - ">="
63
+ - !ruby/object:Gem::Version
64
+ version: '0'
65
+ requirements:
66
+ - rest-client, >= 1.8.0
67
+ - An account on http://www.smsfactor.com/
68
+ rubyforge_project:
69
+ rubygems_version: 2.4.5
70
+ signing_key:
71
+ specification_version: 4
72
+ summary: An easy way to send SMS through SmsFactor API
73
+ test_files: []