msg91ruby 1.0.1 → 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2d7e32c93bfba798257284cb77a7083b07ec2475
4
- data.tar.gz: 0b89f0c3c3fdbfa9ee5c2de3444d8d04f0988ea8
3
+ metadata.gz: 489f709a089ee11f7293f4c184b3343fffabb3ac
4
+ data.tar.gz: 6682118f44b88a1345d3e9ea9880434c6b7147ea
5
5
  SHA512:
6
- metadata.gz: 603aa85c8430d9869f9ca8f86c5717ed5f675155d9f6ec845677d2c65722e11afc10a14094ffc3c3ac9438da3bb8e197b70f33b707c1b13af28643e79b4795b7
7
- data.tar.gz: f6b6e13baaa36fabfe1055bf46ba6b0b50c5c00af379436f60396e402e7da9f4b13d2073bf9372d83fd5e10c65bb1513f3bdf240a141186e94e974d6090c8e68
6
+ metadata.gz: fa3849954c046b49b7ccd478ee7bcc16ac72f5f5630e799a5ab49c991fc1f6cd3d42825b325841aebeef5f0f733cde3af9b038ed1b988d1e2e67ee28f21a6f9a
7
+ data.tar.gz: 5eb4954591a9628fe5db2485acd6e149ff12ca745d9b9ac2bbe77d68b9141df7f083571f581b974106452dde71d13f32628c9caa83cc9cd9be413bcb4da7c508
data/.gitignore CHANGED
@@ -1,22 +1,22 @@
1
- *.gem
2
- *.rbc
3
- .bundle
4
- .config
5
- .yardoc
6
- Gemfile.lock
7
- InstalledFiles
8
- _yardoc
9
- coverage
10
- doc/
11
- lib/bundler/man
12
- pkg
13
- rdoc
14
- spec/reports
15
- test/tmp
16
- test/version_tmp
17
- tmp
18
- *.bundle
19
- *.so
20
- *.o
21
- *.a
22
- mkmf.log
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
18
+ *.bundle
19
+ *.so
20
+ *.o
21
+ *.a
22
+ mkmf.log
data/Gemfile CHANGED
@@ -1,4 +1,4 @@
1
- source 'https://rubygems.org'
2
-
3
- # Specify your gem's dependencies in msg91ruby.gemspec
4
- gemspec
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in msg91ruby.gemspec
4
+ gemspec
data/LICENSE.txt CHANGED
@@ -1,22 +1,22 @@
1
- Copyright (c) 2014 Rajesh Reddy
2
-
3
- MIT License
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining
6
- a copy of this software and associated documentation files (the
7
- "Software"), to deal in the Software without restriction, including
8
- without limitation the rights to use, copy, modify, merge, publish,
9
- distribute, sublicense, and/or sell copies of the Software, and to
10
- permit persons to whom the Software is furnished to do so, subject to
11
- the following conditions:
12
-
13
- The above copyright notice and this permission notice shall be
14
- included in all copies or substantial portions of the Software.
15
-
16
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
1
+ Copyright (c) 2014 Rajesh Reddy
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md CHANGED
@@ -1,47 +1,55 @@
1
- # Msg91ruby
2
-
3
- A Ruby Gem to communicate with Msg91 Api to send Messages
4
-
5
- ## Installation
6
-
7
- Add this line to your application's Gemfile:
8
-
9
- gem 'msg91ruby'
10
-
11
- And then execute:
12
-
13
- $ bundle
14
-
15
- Or install it yourself as:
16
-
17
- $ gem install msg91ruby
18
-
19
- ## Usage
20
-
21
- ## To connect to Msg91 Api
22
-
23
- require 'msg91ruby'
24
- api = Msg91ruby::API.new(auth_key,senderid)
25
- api.send(mobileno, message)
26
-
27
- eg:
28
-
29
- require 'msg91ruby'
30
- api = Msg91ruby::API.new("2552515255255255252","113388")
31
- api.send(1234567890, "Test Message")
32
- api.send([1234567890,9012345678], "Test Message")
33
-
34
- ## SMS Settings
35
-
36
- You can generate a Yaml file to store the Sms Settings required for your application with following command
37
-
38
- rails g msg91ruby:install
39
-
40
-
41
- ## Contributing
42
-
43
- 1. Fork it ( https://github.com/deeproot/msg91ruby/fork )
44
- 2. Create your feature branch (`git checkout -b my-new-feature`)
45
- 3. Commit your changes (`git commit -am 'Add some feature'`)
46
- 4. Push to the branch (`git push origin my-new-feature`)
47
- 5. Create a new Pull Request
1
+ # Msg91ruby
2
+
3
+ A Ruby Gem to communicate with Msg91 Api to send Messages
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ gem 'msg91ruby'
10
+
11
+ And then execute:
12
+
13
+ $ bundle
14
+
15
+ Or install it yourself as:
16
+
17
+ $ gem install msg91ruby
18
+
19
+ ## Usage
20
+
21
+ ## To connect to Msg91 Api
22
+
23
+ require 'msg91ruby'
24
+ api = Msg91ruby::API.new(auth_key,senderid)
25
+ api.send(mobileno, message, route)
26
+
27
+ eg:
28
+
29
+ require 'msg91ruby'
30
+ api = Msg91ruby::API.new("2552515255255255252","113388")
31
+ api.send(1234567890, "Test Message", 1)
32
+ api.send([1234567890,9012345678], "Test Message", 1)
33
+
34
+ you can find your Auth-key here: http://help.msg91.com/article/177-where-can-i-find-my-authentication-key
35
+
36
+ ## SMS Settings
37
+
38
+ You can generate a Yaml file to store the Sms Settings required for your application with following command
39
+
40
+ rails g msg91ruby:install
41
+
42
+ ## MSG91 Account Details
43
+
44
+ You can create your account on MSG91 by simply singing up here: https://msg91.com/signup/msg91ruby
45
+
46
+ If you are an startup company, you can avail sms credits for your Startup app. For more details visit: https://msg91.com/startups/
47
+
48
+
49
+ ## Contributing
50
+
51
+ 1. Fork it ( https://github.com/deeproot/msg91ruby/fork )
52
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
53
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
54
+ 4. Push to the branch (`git push origin my-new-feature`)
55
+ 5. Create a new Pull Request
data/Rakefile CHANGED
@@ -1,2 +1,2 @@
1
- require "bundler/gem_tasks"
2
-
1
+ require "bundler/gem_tasks"
2
+
@@ -1,25 +1,25 @@
1
- module Msg91ruby
2
- module Generators
3
- class InstallGenerator < ::Rails::Generators::Base
4
-
5
- def self.source_root
6
- @_rails_config_source_root ||= File.expand_path("../templates", __FILE__)
7
- end
8
-
9
- def copy_initializer
10
- template "msg91ruby.rb", "config/initializers/msg91ruby.rb"
11
- end
12
-
13
- def copy_settings
14
- template "sms_settings.yml", "config/sms_settings.yml"
15
- end
16
-
17
- def modify_gitignore
18
- append_to_file '.gitignore' do
19
- "\n" +
20
- "config/settings/*_settings.yml\n"
21
- end
22
- end
23
- end
24
- end
1
+ module Msg91ruby
2
+ module Generators
3
+ class InstallGenerator < ::Rails::Generators::Base
4
+
5
+ def self.source_root
6
+ @_rails_config_source_root ||= File.expand_path("../templates", __FILE__)
7
+ end
8
+
9
+ def copy_initializer
10
+ template "msg91ruby.rb", "config/initializers/msg91ruby.rb"
11
+ end
12
+
13
+ def copy_settings
14
+ template "sms_settings.yml", "config/sms_settings.yml"
15
+ end
16
+
17
+ def modify_gitignore
18
+ append_to_file '.gitignore' do
19
+ "\n" +
20
+ "config/settings/*_settings.yml\n"
21
+ end
22
+ end
23
+ end
24
+ end
25
25
  end
@@ -1,3 +1,3 @@
1
- Msg91ruby.setup do |config|
2
- config.const_name = "SmsSettings"
1
+ Msg91ruby.setup do |config|
2
+ config.const_name = "SmsSettings"
3
3
  end
data/lib/msg91ruby.rb CHANGED
@@ -1,50 +1,50 @@
1
- require 'active_support/core_ext/module/attribute_accessors'
2
- require "msg91ruby/version"
3
- require "msg91ruby/options"
4
- require "msg91ruby/sources/yaml_source"
5
- require "msg91ruby/api"
6
- require "net/http"
7
- require "net/https"
8
- require "uri"
9
-
10
-
11
- module Msg91ruby
12
- # ensures the setup only gets run once
13
- @@_ran_once = false
14
-
15
- mattr_accessor :const_name, :use_env
16
- @@const_name = "SmsSettings"
17
- @@use_env = false
18
-
19
- def self.setup
20
- yield self if @@_ran_once == false
21
- @@_ran_once = true
22
- end
23
-
24
- # Create a populated Options instance from a yaml file. If a second yaml file is given, then the sections of that file will overwrite the sections
25
- # if the first file if they exist in the first file.
26
- def self.load_files(*files)
27
- config = Options.new
28
-
29
- # add yaml sources
30
- [files].flatten.compact.uniq.each do |file|
31
- config.add_source!(file.to_s)
32
- end
33
-
34
- config.load!
35
- config.load_env! if @@use_env
36
- config
37
- end
38
-
39
- # Loads and sets the settings constant!
40
- def self.load_and_set_settings(*files)
41
- Kernel.send(:remove_const, Msg91ruby.const_name) if Kernel.const_defined?(Msg91ruby.const_name)
42
- Kernel.const_set(Msg91ruby.const_name, Msg91ruby.load_files(files))
43
- end
44
-
45
- def self.reload!
46
- Kernel.const_get(Msg91ruby.const_name).reload!
47
- end
48
- end
49
-
50
- require('msg91ruby/integration/rails') if defined?(::Rails)
1
+ require 'active_support/core_ext/module/attribute_accessors'
2
+ require "msg91ruby/version"
3
+ require "msg91ruby/options"
4
+ require "msg91ruby/sources/yaml_source"
5
+ require "msg91ruby/api"
6
+ require "net/http"
7
+ require "net/https"
8
+ require "uri"
9
+
10
+
11
+ module Msg91ruby
12
+ # ensures the setup only gets run once
13
+ @@_ran_once = false
14
+
15
+ mattr_accessor :const_name, :use_env
16
+ @@const_name = "SmsSettings"
17
+ @@use_env = false
18
+
19
+ def self.setup
20
+ yield self if @@_ran_once == false
21
+ @@_ran_once = true
22
+ end
23
+
24
+ # Create a populated Options instance from a yaml file. If a second yaml file is given, then the sections of that file will overwrite the sections
25
+ # if the first file if they exist in the first file.
26
+ def self.load_files(*files)
27
+ config = Options.new
28
+
29
+ # add yaml sources
30
+ [files].flatten.compact.uniq.each do |file|
31
+ config.add_source!(file.to_s)
32
+ end
33
+
34
+ config.load!
35
+ config.load_env! if @@use_env
36
+ config
37
+ end
38
+
39
+ # Loads and sets the settings constant!
40
+ def self.load_and_set_settings(*files)
41
+ Kernel.send(:remove_const, Msg91ruby.const_name) if Kernel.const_defined?(Msg91ruby.const_name)
42
+ Kernel.const_set(Msg91ruby.const_name, Msg91ruby.load_files(files))
43
+ end
44
+
45
+ def self.reload!
46
+ Kernel.const_get(Msg91ruby.const_name).reload!
47
+ end
48
+ end
49
+
50
+ require('msg91ruby/integration/rails') if defined?(::Rails)
data/lib/msg91ruby/api.rb CHANGED
@@ -1,36 +1,36 @@
1
- module Msg91ruby
2
- class API
3
- attr_accessor :auth_key, :senderid
4
- URL = "http://control.msg91.com"
5
- def initialize(auth_key, senderid)
6
- @auth_key = auth_key
7
- @senderid = senderid
8
- @url = URL
9
- end
10
-
11
- def send(mobilenos,msg)
12
- mobile_nos = mobilenos.is_a?(Array) ? mobilenos.join(',') : mobilenos
13
- params = {:authkey => auth_key, :mobiles => mobile_nos, :message => msg , :sender => senderid ,:route => 1, :response => "json"}
14
- uri = full_path('/api/sendhttp.php', params)
15
- response = Net::HTTP.get(uri)
16
- end
17
-
18
- def change_password(passwd, newpasswd)
19
- params = {:authkey => auth_key, :password => passwd, :newpass => newpasswd, :response => "json"}
20
- uri = full_path('/api/password.php', params)
21
- response = Net::HTTP.get(uri)
22
- end
23
-
24
- def balance
25
- params = {:authkey => auth_key, :type => 1, :response => "json"}
26
- uri = full_path('/api/balance.php', params)
27
- response = Net::HTTP.get(uri)
28
- end
29
-
30
- def full_path(path, params)
31
- encoded_params = URI.encode_www_form(params)
32
- params_string = [path, encoded_params].join("?")
33
- URI.parse(@url + params_string)
34
- end
35
- end
36
- end
1
+ module Msg91ruby
2
+ class API
3
+ attr_accessor :auth_key, :senderid
4
+ URL = "http://control.msg91.com"
5
+ def initialize(auth_key, senderid)
6
+ @auth_key = auth_key
7
+ @senderid = senderid
8
+ @url = URL
9
+ end
10
+
11
+ def send(mobilenos,msg,route)
12
+ mobile_nos = mobilenos.is_a?(Array) ? mobilenos.join(',') : mobilenos
13
+ params = {:authkey => auth_key, :mobiles => mobile_nos, :message => msg , :sender => senderid ,:route => route, :response => "json"}
14
+ uri = full_path('/api/sendhttp.php', params)
15
+ response = Net::HTTP.get(uri)
16
+ end
17
+
18
+ def change_password(passwd, newpasswd)
19
+ params = {:authkey => auth_key, :password => passwd, :newpass => newpasswd, :response => "json"}
20
+ uri = full_path('/api/password.php', params)
21
+ response = Net::HTTP.get(uri)
22
+ end
23
+
24
+ def balance
25
+ params = {:authkey => auth_key, :type => 1, :response => "json"}
26
+ uri = full_path('/api/balance.php', params)
27
+ response = Net::HTTP.get(uri)
28
+ end
29
+
30
+ def full_path(path, params)
31
+ encoded_params = URI.encode_www_form(params)
32
+ params_string = [path, encoded_params].join("?")
33
+ URI.parse(@url + params_string)
34
+ end
35
+ end
36
+ end
@@ -1,25 +1,25 @@
1
- module Msg91ruby
2
- module Integration
3
- module Rails
4
- if defined?(::Rails::Railtie)
5
- class Railtie < ::Rails::Railtie
6
- # Load rake tasks (eg. Heroku)
7
- rake_tasks do
8
- Dir[File.join(File.dirname(__FILE__),'../tasks/*.rake')].each { |f| load f }
9
- end
10
-
11
- ActiveSupport.on_load :before_configuration, :yield => true do
12
- # Manually load the custom initializer before everything else
13
- initializer = ::Rails.root.join("config", "initializers", "msg91ruby.rb")
14
- require initializer if File.exist?(initializer)
15
-
16
- # Parse the settings before any of the initializers
17
- Msg91ruby.load_and_set_settings(
18
- ::Rails.root.join("config", "sms_settings.yml").to_s
19
- )
20
- end
21
- end
22
- end
23
- end
24
- end
1
+ module Msg91ruby
2
+ module Integration
3
+ module Rails
4
+ if defined?(::Rails::Railtie)
5
+ class Railtie < ::Rails::Railtie
6
+ # Load rake tasks (eg. Heroku)
7
+ rake_tasks do
8
+ Dir[File.join(File.dirname(__FILE__),'../tasks/*.rake')].each { |f| load f }
9
+ end
10
+
11
+ ActiveSupport.on_load :before_configuration, :yield => true do
12
+ # Manually load the custom initializer before everything else
13
+ initializer = ::Rails.root.join("config", "initializers", "msg91ruby.rb")
14
+ require initializer if File.exist?(initializer)
15
+
16
+ # Parse the settings before any of the initializers
17
+ Msg91ruby.load_and_set_settings(
18
+ ::Rails.root.join("config", "sms_settings.yml").to_s
19
+ )
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
25
25
  end
@@ -1,119 +1,119 @@
1
- require 'ostruct'
2
- module Msg91ruby
3
- class Options < OpenStruct
4
-
5
- include Enumerable
6
-
7
- def empty?
8
- marshal_dump.empty?
9
- end
10
-
11
- def add_source!(source)
12
- # handle yaml file paths
13
- source = (Sources::YAMLSource.new(source)) if source.is_a?(String)
14
-
15
- @config_sources ||= []
16
- @config_sources << source
17
- end
18
-
19
- def reload_env!
20
- return self if ENV.nil? || ENV.empty?
21
- conf = Hash.new
22
- ENV.each do |key, value|
23
- next unless key.to_s.index(Msg91ruby.const_name) == 0
24
- hash = value
25
- key.to_s.split('.').reverse.each do |element|
26
- hash = {element => hash}
27
- end
28
- DeepMerge.deep_merge!(hash, conf, :preserve_unmergeables => false)
29
- end
30
-
31
- merge!(conf[Msg91ruby.const_name] || {})
32
- end
33
-
34
- alias :load_env! :reload_env!
35
-
36
- # look through all our sources and rebuild the configuration
37
- def reload!
38
- conf = {}
39
- @config_sources.each do |source|
40
- source_conf = source.load
41
-
42
- if conf.empty?
43
- conf = source_conf
44
- else
45
- DeepMerge.deep_merge!(source_conf, conf, :preserve_unmergeables => false)
46
- end
47
- end
48
-
49
- # swap out the contents of the OStruct with a hash (need to recursively convert)
50
- marshal_load(__convert(conf).marshal_dump)
51
-
52
- reload_env! if Msg91ruby.use_env
53
-
54
- return self
55
- end
56
-
57
- alias :load! :reload!
58
-
59
- def reload_from_files(*files)
60
- Msg91ruby.load_and_set_settings(files)
61
- reload!
62
- end
63
-
64
- def to_hash
65
- result = {}
66
- marshal_dump.each do |k, v|
67
- result[k] = v.instance_of?(Msg91ruby::Options) ? v.to_hash : v
68
- end
69
- result
70
- end
71
-
72
- def each(*args, &block)
73
- marshal_dump.each(*args, &block)
74
- end
75
-
76
- def to_json(*args)
77
- require "json" unless defined?(JSON)
78
- to_hash.to_json(*args)
79
- end
80
-
81
- def merge!(hash)
82
- current = to_hash
83
- DeepMerge.deep_merge!(hash.dup, current)
84
- marshal_load(__convert(current).marshal_dump)
85
- self
86
- end
87
-
88
- # An alternative mechanism for property access.
89
- # This let's you do foo['bar'] along with foo.bar.
90
- def [](param)
91
- send("#{param}")
92
- end
93
-
94
- def []=(param, value)
95
- send("#{param}=", value)
96
- end
97
-
98
- protected
99
-
100
- # Recursively converts Hashes to Options (including Hashes inside Arrays)
101
- def __convert(h) #:nodoc:
102
- s = self.class.new
103
-
104
- h.each do |k, v|
105
- k = k.to_s if !k.respond_to?(:to_sym) && k.respond_to?(:to_s)
106
- s.new_ostruct_member(k)
107
-
108
- if v.is_a?(Hash)
109
- v = v["type"] == "hash" ? v["contents"] : __convert(v)
110
- elsif v.is_a?(Array)
111
- v = v.collect { |e| e.instance_of?(Hash) ? __convert(e) : e }
112
- end
113
-
114
- s.send("#{k}=".to_sym, v)
115
- end
116
- s
117
- end
118
- end
1
+ require 'ostruct'
2
+ module Msg91ruby
3
+ class Options < OpenStruct
4
+
5
+ include Enumerable
6
+
7
+ def empty?
8
+ marshal_dump.empty?
9
+ end
10
+
11
+ def add_source!(source)
12
+ # handle yaml file paths
13
+ source = (Sources::YAMLSource.new(source)) if source.is_a?(String)
14
+
15
+ @config_sources ||= []
16
+ @config_sources << source
17
+ end
18
+
19
+ def reload_env!
20
+ return self if ENV.nil? || ENV.empty?
21
+ conf = Hash.new
22
+ ENV.each do |key, value|
23
+ next unless key.to_s.index(Msg91ruby.const_name) == 0
24
+ hash = value
25
+ key.to_s.split('.').reverse.each do |element|
26
+ hash = {element => hash}
27
+ end
28
+ DeepMerge.deep_merge!(hash, conf, :preserve_unmergeables => false)
29
+ end
30
+
31
+ merge!(conf[Msg91ruby.const_name] || {})
32
+ end
33
+
34
+ alias :load_env! :reload_env!
35
+
36
+ # look through all our sources and rebuild the configuration
37
+ def reload!
38
+ conf = {}
39
+ @config_sources.each do |source|
40
+ source_conf = source.load
41
+
42
+ if conf.empty?
43
+ conf = source_conf
44
+ else
45
+ DeepMerge.deep_merge!(source_conf, conf, :preserve_unmergeables => false)
46
+ end
47
+ end
48
+
49
+ # swap out the contents of the OStruct with a hash (need to recursively convert)
50
+ marshal_load(__convert(conf).marshal_dump)
51
+
52
+ reload_env! if Msg91ruby.use_env
53
+
54
+ return self
55
+ end
56
+
57
+ alias :load! :reload!
58
+
59
+ def reload_from_files(*files)
60
+ Msg91ruby.load_and_set_settings(files)
61
+ reload!
62
+ end
63
+
64
+ def to_hash
65
+ result = {}
66
+ marshal_dump.each do |k, v|
67
+ result[k] = v.instance_of?(Msg91ruby::Options) ? v.to_hash : v
68
+ end
69
+ result
70
+ end
71
+
72
+ def each(*args, &block)
73
+ marshal_dump.each(*args, &block)
74
+ end
75
+
76
+ def to_json(*args)
77
+ require "json" unless defined?(JSON)
78
+ to_hash.to_json(*args)
79
+ end
80
+
81
+ def merge!(hash)
82
+ current = to_hash
83
+ DeepMerge.deep_merge!(hash.dup, current)
84
+ marshal_load(__convert(current).marshal_dump)
85
+ self
86
+ end
87
+
88
+ # An alternative mechanism for property access.
89
+ # This let's you do foo['bar'] along with foo.bar.
90
+ def [](param)
91
+ send("#{param}")
92
+ end
93
+
94
+ def []=(param, value)
95
+ send("#{param}=", value)
96
+ end
97
+
98
+ protected
99
+
100
+ # Recursively converts Hashes to Options (including Hashes inside Arrays)
101
+ def __convert(h) #:nodoc:
102
+ s = self.class.new
103
+
104
+ h.each do |k, v|
105
+ k = k.to_s if !k.respond_to?(:to_sym) && k.respond_to?(:to_s)
106
+ s.new_ostruct_member(k)
107
+
108
+ if v.is_a?(Hash)
109
+ v = v["type"] == "hash" ? v["contents"] : __convert(v)
110
+ elsif v.is_a?(Array)
111
+ v = v.collect { |e| e.instance_of?(Hash) ? __convert(e) : e }
112
+ end
113
+
114
+ s.send("#{k}=".to_sym, v)
115
+ end
116
+ s
117
+ end
118
+ end
119
119
  end
@@ -1,24 +1,24 @@
1
- require 'yaml'
2
- require 'erb'
3
-
4
- module Msg91ruby
5
- module Sources
6
- class YAMLSource
7
-
8
- attr_accessor :path
9
-
10
- def initialize(path)
11
- @path = path
12
- end
13
-
14
- # returns a config hash from the YML file
15
- def load
16
- if @path and File.exists?(@path.to_s)
17
- result = YAML.load(ERB.new(IO.read(@path.to_s)).result)
18
- end
19
- result || {}
20
- end
21
-
22
- end
23
- end
1
+ require 'yaml'
2
+ require 'erb'
3
+
4
+ module Msg91ruby
5
+ module Sources
6
+ class YAMLSource
7
+
8
+ attr_accessor :path
9
+
10
+ def initialize(path)
11
+ @path = path
12
+ end
13
+
14
+ # returns a config hash from the YML file
15
+ def load
16
+ if @path and File.exists?(@path.to_s)
17
+ result = YAML.load(ERB.new(IO.read(@path.to_s)).result)
18
+ end
19
+ result || {}
20
+ end
21
+
22
+ end
23
+ end
24
24
  end
@@ -1,3 +1,3 @@
1
- module Msg91ruby
2
- VERSION = "1.0.1"
3
- end
1
+ module Msg91ruby
2
+ VERSION = "1.0.2"
3
+ end
data/msg91ruby.gemspec CHANGED
@@ -1,23 +1,23 @@
1
- # coding: utf-8
2
- lib = File.expand_path('../lib', __FILE__)
3
- $:.unshift(lib) unless $:.include?(lib)
4
- require 'msg91ruby/version'
5
-
6
- Gem::Specification.new do |spec|
7
- spec.name = "msg91ruby"
8
- spec.version = Msg91ruby::VERSION
9
- spec.authors = ["rajesh"]
10
- spec.email = ["rajeshnecg@gmail.com"]
11
- spec.summary = %q{A Ruby gem to connect with Msg91 Api to send messages}
12
- spec.description = %q{Connects to Msg91 api to send messages}
13
- spec.homepage = "https://github.com/deeproot/msg91ruby"
14
- spec.license = "MIT"
15
-
16
- spec.files = `git ls-files -z`.split("\x0")
17
- spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
- spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
- spec.require_paths = ["lib"]
20
-
21
- spec.add_development_dependency "bundler", "~> 1.6"
22
- spec.add_development_dependency "rake"
23
- end
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $:.unshift(lib) unless $:.include?(lib)
4
+ require 'msg91ruby/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "msg91ruby"
8
+ spec.version = Msg91ruby::VERSION
9
+ spec.authors = ["rajesh"]
10
+ spec.email = ["rajeshnecg@gmail.com"]
11
+ spec.summary = %q{A Ruby gem to connect with Msg91 Api to send messages}
12
+ spec.description = %q{Connects to Msg91 api to send messages}
13
+ spec.homepage = "https://github.com/deeproot/msg91ruby"
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files -z`.split("\x0")
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_development_dependency "bundler", "~> 1.6"
22
+ spec.add_development_dependency "rake"
23
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: msg91ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - rajesh
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-06-18 00:00:00.000000000 Z
11
+ date: 2016-09-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -80,9 +80,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
80
80
  version: '0'
81
81
  requirements: []
82
82
  rubyforge_project:
83
- rubygems_version: 2.2.2
83
+ rubygems_version: 2.4.5.1
84
84
  signing_key:
85
85
  specification_version: 4
86
86
  summary: A Ruby gem to connect with Msg91 Api to send messages
87
87
  test_files: []
88
- has_rdoc: