msg91ruby 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: e49d4e6c02f51d81add0edcd5bd80f6fd3def10d
4
+ data.tar.gz: 4324b6c8a1632515f26657f87022b06d4974cb02
5
+ SHA512:
6
+ metadata.gz: 87a27b8f7cd5f9f2ceee6516aa24a56a295a30593a4c1e3b07ae49d20aeb50481bc30d57f1351370a2d65e070ad720ad8ca45ba6696a4df287def080e5c08ae0
7
+ data.tar.gz: 9aca2e29422f962f40e578f3c9f968283bd07950ac05e81041d0e9e8d0e3a72c3e6ba79bbc05cf125b31cd3c282d522b999301f0235fb5aecac300f76f8c82e0
data/.gitignore ADDED
@@ -0,0 +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
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in msg91ruby.gemspec
4
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +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.
data/README.md ADDED
@@ -0,0 +1,47 @@
1
+ # Msg91ruby
2
+
3
+ TODO: Write a gem description
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/RajeshReddyM/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
data/Rakefile ADDED
@@ -0,0 +1,2 @@
1
+ require "bundler/gem_tasks"
2
+
@@ -0,0 +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/*api.yml\n"
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,3 @@
1
+ Msg91ruby.setup do |config|
2
+ config.const_name = "SmsSettings"
3
+ end
@@ -0,0 +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
@@ -0,0 +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
25
+ end
@@ -0,0 +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
119
+ end
@@ -0,0 +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
24
+ end
@@ -0,0 +1,3 @@
1
+ module Msg91ruby
2
+ VERSION = "1.0.0"
3
+ end
data/lib/msg91ruby.rb ADDED
@@ -0,0 +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)
data/msg91ruby.gemspec ADDED
@@ -0,0 +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
metadata ADDED
@@ -0,0 +1,88 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: msg91ruby
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - rajesh
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-06-17 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.6'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.6'
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'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ description: Connects to Msg91 api to send messages
42
+ email:
43
+ - rajeshnecg@gmail.com
44
+ executables: []
45
+ extensions: []
46
+ extra_rdoc_files: []
47
+ files:
48
+ - ".gitignore"
49
+ - Gemfile
50
+ - LICENSE.txt
51
+ - README.md
52
+ - Rakefile
53
+ - lib/generators/msg91ruby/install_generator.rb
54
+ - lib/generators/msg91ruby/templates/msg91ruby.rb
55
+ - lib/generators/msg91ruby/templates/sms_settings.yml
56
+ - lib/msg91ruby.rb
57
+ - lib/msg91ruby/api.rb
58
+ - lib/msg91ruby/integration/rails.rb
59
+ - lib/msg91ruby/options.rb
60
+ - lib/msg91ruby/sources/yaml_source.rb
61
+ - lib/msg91ruby/version.rb
62
+ - msg91ruby.gemspec
63
+ homepage: https://github.com/deeproot/msg91ruby
64
+ licenses:
65
+ - MIT
66
+ metadata: {}
67
+ post_install_message:
68
+ rdoc_options: []
69
+ require_paths:
70
+ - lib
71
+ required_ruby_version: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ required_rubygems_version: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - ">="
79
+ - !ruby/object:Gem::Version
80
+ version: '0'
81
+ requirements: []
82
+ rubyforge_project:
83
+ rubygems_version: 2.2.2
84
+ signing_key:
85
+ specification_version: 4
86
+ summary: A Ruby gem to connect with Msg91 Api to send messages
87
+ test_files: []
88
+ has_rdoc: