alidayu_sms 0.1.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: 358c8f0763bf15466b7511b60bbfa562e72c03fe
4
+ data.tar.gz: b379d22e05ec0358492615c4dd17ced744b7c399
5
+ SHA512:
6
+ metadata.gz: efbad6893b6901a6044ac289755260fd2dadd62576ad6b44c8d97dc76aeb379c28620017d086b0942a5428461456221c49414ae1023666167d19d3ddcbadcb87
7
+ data.tar.gz: 890070ebc7a1c983e4b50f1d301336f861d4732bfee2b3663c94b30163ddeb1f308ab2d85b67bd263110f4964a997a6ecd641bfdd801ab402a334ed6f9cafd58
data/.gitignore ADDED
@@ -0,0 +1 @@
1
+ *~
data/.idea/.rakeTasks ADDED
@@ -0,0 +1,7 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <Settings><!--This file was automatically generated by Ruby plugin.
3
+ You are allowed to:
4
+ 1. Remove rake task
5
+ 2. Add existing rake tasks
6
+ To add existing rake tasks automatically delete this file and reload the project.
7
+ --><RakeGroup description="" fullCmd="" taksId="rake"><RakeTask description="Build alidayu_sms-0.1.0.gem into the pkg directory" fullCmd="build" taksId="build" /><RakeTask description="Build and install alidayu_sms-0.1.0.gem into system gems" fullCmd="install" taksId="install" /><RakeGroup description="" fullCmd="" taksId="install"><RakeTask description="Build and install alidayu_sms-0.1.0.gem into system gems without network access" fullCmd="install:local" taksId="local" /></RakeGroup><RakeTask description="Create tag v0.1.0 and build and push alidayu_sms-0.1.0.gem to Rubygems" fullCmd="release" taksId="release" /><RakeTask description="Run tests" fullCmd="test" taksId="test" /><RakeGroup description="" fullCmd="" taksId="alidayu_sms"><RakeTask description="" fullCmd="alidayu_sms:create_default_config_file" taksId="create_default_config_file" /></RakeGroup><RakeTask description="" fullCmd="default" taksId="default" /><RakeGroup description="" fullCmd="" taksId="release"><RakeTask description="" fullCmd="release:guard_clean" taksId="guard_clean" /><RakeTask description="" fullCmd="release:rubygem_push" taksId="rubygem_push" /><RakeTask description="" fullCmd="release:source_control_push" taksId="source_control_push" /></RakeGroup></RakeGroup></Settings>
@@ -0,0 +1,27 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <module type="RUBY_MODULE" version="4">
3
+ <component name="FacetManager">
4
+ <facet type="gem" name="Ruby Gem">
5
+ <configuration>
6
+ <option name="GEM_APP_ROOT_PATH" value="$MODULE_DIR$" />
7
+ <option name="GEM_APP_TEST_PATH" value="$MODULE_DIR$/test" />
8
+ <option name="GEM_APP_LIB_PATH" value="$MODULE_DIR$/lib" />
9
+ </configuration>
10
+ </facet>
11
+ </component>
12
+ <component name="NewModuleRootManager">
13
+ <content url="file://$MODULE_DIR$">
14
+ <sourceFolder url="file://$MODULE_DIR$/test" isTestSource="true" />
15
+ </content>
16
+ <orderEntry type="inheritedJdk" />
17
+ <orderEntry type="sourceFolder" forTests="false" />
18
+ <orderEntry type="library" scope="PROVIDED" name="activesupport (v4.1.14.1, RVM: ruby-2.1.5) [gem]" level="application" />
19
+ <orderEntry type="library" scope="PROVIDED" name="i18n (v0.7.0, RVM: ruby-2.1.5) [gem]" level="application" />
20
+ <orderEntry type="library" scope="PROVIDED" name="json (v1.8.3, RVM: ruby-2.1.5) [gem]" level="application" />
21
+ <orderEntry type="library" scope="PROVIDED" name="minitest (v5.8.4, RVM: ruby-2.1.5) [gem]" level="application" />
22
+ <orderEntry type="library" scope="PROVIDED" name="rack (v1.6.4, RVM: ruby-2.1.5) [gem]" level="application" />
23
+ <orderEntry type="library" scope="PROVIDED" name="rake (v10.5.0, RVM: ruby-2.1.5) [gem]" level="application" />
24
+ <orderEntry type="library" scope="PROVIDED" name="thread_safe (v0.3.5, RVM: ruby-2.1.5) [gem]" level="application" />
25
+ <orderEntry type="library" scope="PROVIDED" name="tzinfo (v1.2.2, RVM: ruby-2.1.5) [gem]" level="application" />
26
+ </component>
27
+ </module>
data/.idea/misc.xml ADDED
@@ -0,0 +1,14 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="ProjectLevelVcsManager" settingsEditedManually="false">
4
+ <OptionsSetting value="true" id="Add" />
5
+ <OptionsSetting value="true" id="Remove" />
6
+ <OptionsSetting value="true" id="Checkout" />
7
+ <OptionsSetting value="true" id="Update" />
8
+ <OptionsSetting value="true" id="Status" />
9
+ <OptionsSetting value="true" id="Edit" />
10
+ <ConfirmationsSetting value="0" id="Add" />
11
+ <ConfirmationsSetting value="0" id="Remove" />
12
+ </component>
13
+ <component name="ProjectRootManager" version="2" project-jdk-name="RVM: ruby-2.1.5" project-jdk-type="RUBY_SDK" />
14
+ </project>
data/.idea/modules.xml ADDED
@@ -0,0 +1,8 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="ProjectModuleManager">
4
+ <modules>
5
+ <module fileurl="file://$PROJECT_DIR$/.idea/alidayu_sms.iml" filepath="$PROJECT_DIR$/.idea/alidayu_sms.iml" />
6
+ </modules>
7
+ </component>
8
+ </project>
data/.idea/vcs.xml ADDED
@@ -0,0 +1,6 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="VcsDirectoryMappings">
4
+ <mapping directory="" vcs="" />
5
+ </component>
6
+ </project>
@@ -0,0 +1,41 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="ChangeListManager">
4
+ <option name="TRACKING_ENABLED" value="true" />
5
+ <option name="SHOW_DIALOG" value="false" />
6
+ <option name="HIGHLIGHT_CONFLICTS" value="true" />
7
+ <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
8
+ <option name="LAST_RESOLUTION" value="IGNORE" />
9
+ </component>
10
+ <component name="ChangesViewManager" flattened_view="true" show_ignored="false" />
11
+ <component name="CreatePatchCommitExecutor">
12
+ <option name="PATCH_PATH" value="" />
13
+ </component>
14
+ <component name="NamedScopeManager">
15
+ <order />
16
+ </component>
17
+ <component name="ProjectLevelVcsManager" settingsEditedManually="false">
18
+ <OptionsSetting value="true" id="Add" />
19
+ <OptionsSetting value="true" id="Remove" />
20
+ <OptionsSetting value="true" id="Checkout" />
21
+ <OptionsSetting value="true" id="Update" />
22
+ <OptionsSetting value="true" id="Status" />
23
+ <OptionsSetting value="true" id="Edit" />
24
+ <ConfirmationsSetting value="0" id="Add" />
25
+ <ConfirmationsSetting value="0" id="Remove" />
26
+ </component>
27
+ <component name="ShelveChangesManager" show_recycled="false" />
28
+ <component name="TaskManager">
29
+ <task active="true" id="Default" summary="Default task">
30
+ <option name="number" value="Default" />
31
+ </task>
32
+ <servers />
33
+ </component>
34
+ <component name="VcsContentAnnotationSettings">
35
+ <option name="myLimit" value="2678400000" />
36
+ </component>
37
+ <component name="XDebuggerManager">
38
+ <breakpoint-manager />
39
+ <watches-manager />
40
+ </component>
41
+ </project>
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in sms.gemspec
4
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,33 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ alidayu_sms (0.1.0)
5
+ i18n
6
+
7
+ GEM
8
+ remote: https://rubygems.org/
9
+ specs:
10
+ activesupport (4.1.14.1)
11
+ i18n (~> 0.6, >= 0.6.9)
12
+ json (~> 1.7, >= 1.7.7)
13
+ minitest (~> 5.1)
14
+ thread_safe (~> 0.1)
15
+ tzinfo (~> 1.1)
16
+ i18n (0.7.0)
17
+ json (1.8.3)
18
+ minitest (5.8.4)
19
+ rack (1.6.4)
20
+ rake (10.5.0)
21
+ thread_safe (0.3.5)
22
+ tzinfo (1.2.2)
23
+ thread_safe (~> 0.1)
24
+
25
+ PLATFORMS
26
+ ruby
27
+
28
+ DEPENDENCIES
29
+ activesupport (~> 4.1.12)
30
+ alidayu_sms!
31
+ bundler (~> 1.9)
32
+ rack
33
+ rake (~> 10.0)
data/README.md ADDED
@@ -0,0 +1,39 @@
1
+ # alidayu_sms
2
+ 阿里大鱼的短信发送api
3
+
4
+ # Gemfile add
5
+ gem 'alidayu_sms', git: 'git@github.com:wangping0105/alidayu_sms.git'
6
+
7
+ # start
8
+ ##生成配置文件示例!(my :app_key and :app_secret, Valid to 2016.02.22)
9
+ rake alidayu_sms:create_default_config_file
10
+ ```ruby
11
+ defaults: &defaults
12
+ alidayu:
13
+ app_key: 23304964
14
+ app_secret: "12b083a7c5e89ce3093067ddd65c4b5a"
15
+ post_url: 'http://gw.api.taobao.com/router/rest'
16
+
17
+ development:
18
+ <<: *defaults
19
+
20
+ test:
21
+ <<: *defaults
22
+
23
+ production:
24
+ <<: *defaults
25
+ ```
26
+ ## hello world!
27
+ ```ruby
28
+ options = {
29
+ code: 1314520, # 模板的{code}字段
30
+ phones: "1520122011,1591251515", # 手机号码
31
+ product: "王平爱王玲", # 模板的{product}字段
32
+ extend: '', # 公共回传参数,在“消息返回”中会透传回该参数;举例:用户可以传入自己下级的会员ID,在消息返回时,该会员ID会包含在内,用户可以根据该会员ID识别是哪位会员使用了你的应用
33
+ sms_free_sign_name: "注册验证", # 短信签名
34
+ sms_template_code: "SMS_5045503" # 短信模板
35
+ }
36
+ result = AlidayuSmsSender.new.batchSendSms(options)
37
+
38
+ # 返回码参考 阿里大鱼 api文档
39
+ ```
data/Rakefile ADDED
@@ -0,0 +1,12 @@
1
+ require "bundler/gem_tasks"
2
+ load "tasks/alidayu_sms.rake"
3
+
4
+ require 'rake/testtask'
5
+
6
+ Rake::TestTask.new do |t|
7
+ t.libs << 'lib' << 'test'
8
+ t.pattern = "test/*_test.rb"
9
+ t.ruby_opts << "-r test_helper"
10
+ end
11
+
12
+ task :default => :test
@@ -0,0 +1,26 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'alidayu_sms/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "alidayu_sms"
8
+ spec.version = AlidayuSms::VERSION
9
+ spec.authors = ["jack ping"]
10
+ spec.email = ["525399584@qq.com"]
11
+
12
+ spec.summary = %q{alidayu_sms send.}
13
+ spec.description = %q{alidayu_sms send.}
14
+ spec.homepage = "https://github.com/wangping0105/alidayu_sms"
15
+
16
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
17
+ spec.bindir = "bin"
18
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_dependency 'i18n'
22
+ spec.add_development_dependency "bundler", "~> 1.9"
23
+ spec.add_development_dependency "rake", "~> 10.0"
24
+ spec.add_development_dependency "activesupport", "~> 4.1.12"
25
+ spec.add_development_dependency 'rack'
26
+ end
data/bin/alidayu_sms ADDED
@@ -0,0 +1,82 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "optparse"
4
+ require "pp"
5
+ require 'rack'
6
+
7
+ $:.unshift File.join(File.dirname(__FILE__), *%w[.. lib])
8
+ require 'alidayu_sms'
9
+
10
+ options = {method: 'batchSendSms'}
11
+ attributes = {}
12
+
13
+ OptionParser.new do |o|
14
+ o.banner = <<-EOF
15
+ Usage:
16
+ Starting:
17
+ alidayu_sms [-p <phone>] [-c <code>] [-m <model>] [-t <type>]
18
+
19
+ Querying:
20
+ alidayu_sms -v
21
+
22
+ Options:
23
+ EOF
24
+
25
+ o.on("-p", "--phones=phones", String, "send alidayu_sms phones") do |x|
26
+ options[:phones] = x
27
+ end
28
+
29
+ o.on("-c", "--code=code", String, "send alidayu_sms code") do |x|
30
+ options[:code] = x
31
+ end
32
+
33
+ o.on("-s", "--source=source", String, "send alidayu_sms source [zucp|taobao] (Default: zucp)") do |x|
34
+ options[:source] = x
35
+ end
36
+
37
+ o.on("-m", "--m=method", String, "send alidayu_sms method [batch] (Default: batch)") do |x|
38
+ options[:method] = x
39
+ end
40
+
41
+ o.on("-a", "--a=attributes", String, "attributes: ()") do |x|
42
+ attributes = Rack::Utils.parse_nested_query(x)
43
+ end
44
+
45
+ o.on("-h", "--help", "Show help documentation") do |x|
46
+ puts o
47
+ exit
48
+ end
49
+
50
+ o.on("-v", "--version", "Show alidayu_sms version") do |x|
51
+ puts "Version: #{AlidayuSms::VERSION}"
52
+ exit
53
+ end
54
+ end.parse!
55
+
56
+ options.merge!(attributes)
57
+
58
+ #测试用的, 不过我的key可能无效了哦
59
+ options = options.merge(
60
+ :code=> 1314520,
61
+ :product => "王平爱王玲",
62
+ :extend => '',
63
+ :sms_free_sign_name=> "注册验证",
64
+ :sms_template_code=> "SMS_5045503"
65
+ )
66
+ sys_options = {
67
+ app_key: 23304964,
68
+ app_secret: "12b083a7c5e89ce3093067ddd65c4b5a",
69
+ post_url: 'http://gw.api.taobao.com/router/rest'
70
+ }
71
+
72
+ begin
73
+ puts options.inspect
74
+ puts AlidayuSmsSender.new(sys_options).send(options[:method], options)
75
+ rescue => e
76
+ puts 'Uncaught exception'
77
+ puts e.message
78
+ puts e.backtrace.join("\n")
79
+ end
80
+
81
+ # sms -p 13262902619 -s taobao -a 'app_secret=5aff003ac3c7243da65adef1e7c9c363&app_key=23272925&sms_free_sign_name=爱客验证码&sms_template_code=SMS_2575137&sms_param[code]=xxx&sms_param[product]=ddd'
82
+
@@ -0,0 +1,70 @@
1
+ require 'net/http'
2
+
3
+ module AlidayuSms
4
+ class Alidayu
5
+ attr_accessor :app_key, :app_secret, :post_url
6
+
7
+ def initialize(options = {})
8
+ self.app_key = options['app_key']
9
+ self.app_secret = options['app_secret']
10
+ self.post_url = options['post_url']
11
+ end
12
+
13
+ def standard_send_msg(arg = [])
14
+ code, product, _phones, _extend, _sms_free_sign_name, _sms_template_code = arg
15
+
16
+ _sms_param = "{'code':'#{code}','product':'#{product}'}"
17
+ _timestamp = Time.now.strftime("%F %T")
18
+ options = {
19
+ app_key: self.app_key,
20
+ format: 'json',
21
+ method: 'alibaba.aliqin.fc.sms.num.send',
22
+ partner_id: 'apidoc',
23
+ sign_method: 'md5',
24
+ timestamp: _timestamp,
25
+ v: '2.0',
26
+ extend: _extend,
27
+ rec_num: _phones,
28
+ sms_free_sign_name: _sms_free_sign_name,
29
+ sms_param: _sms_param,
30
+ sms_template_code: _sms_template_code,
31
+ sms_type: 'normal'
32
+ }
33
+
34
+ options = sort_options(options)
35
+ puts "options: #{options}"
36
+
37
+ md5_str = 加密(options)
38
+ response = post(self.post_url, options.merge(sign: md5_str))
39
+ puts "phones: #{_phones}, #{_sms_param}, and respone: #{response}"
40
+ response
41
+ end
42
+
43
+ private
44
+ def sort_options(**arg)
45
+ arg.sort_by{|k,v| k}.to_h
46
+ end
47
+
48
+ def 加密(**arg)
49
+ _arg = arg.map{|k,v| "#{k}#{v}"}
50
+ md5("#{self.app_secret}#{_arg.join("")}#{self.app_secret}").upcase
51
+ end
52
+
53
+ def md5(arg)
54
+ Digest::MD5.hexdigest(arg)
55
+ end
56
+
57
+ def post(uri, options)
58
+ response = ""
59
+ url = URI.parse(uri)
60
+ Net::HTTP.start(url.host, url.port) do |http|
61
+ req = Net::HTTP::Post.new(url.path)
62
+ req.set_form_data(options)
63
+ response = http.request(req).body
64
+ end
65
+ JSON(response)
66
+ end
67
+ end
68
+ end
69
+
70
+
@@ -0,0 +1,3 @@
1
+ module AlidayuSms
2
+ VERSION = "0.1.0"
3
+ end
@@ -0,0 +1,76 @@
1
+ $:.unshift File.expand_path('../../lib', __FILE__)
2
+
3
+ require 'pp'
4
+ require "active_support/all"
5
+
6
+ require "alidayu_sms/version"
7
+ require "alidayu_sms/alidayu"
8
+
9
+ require 'yaml' unless defined? YMAL
10
+
11
+ def load_config
12
+ if defined? ::Rails
13
+ @sms_config ||= HashWithIndifferentAccess.new(YAML.load_file("#{::Rails.root}/config/alidayu_sms.yml")[::Rails.env] || {})
14
+ else
15
+ {}
16
+ end
17
+ end
18
+
19
+ class AlidayuSmsSender
20
+ attr_accessor :source, :template_code
21
+
22
+ def initialize(options = {})
23
+ if load_config.present? && load_config[:alidayu].present?
24
+ options = load_config[:alidayu].merge(options)
25
+ end
26
+ options = HashWithIndifferentAccess.new(options)
27
+ check_system_params(options)
28
+
29
+ @source = AlidayuSms::Alidayu.new(options)
30
+ end
31
+
32
+ # 发送短信
33
+ def batchSendSms(options = {})
34
+ options = HashWithIndifferentAccess.new(options)
35
+
36
+ arr = %w(code product phones extend sms_free_sign_name sms_template_code)
37
+ attr, flag = [], false
38
+ arr.each do |a|
39
+ flag = true unless options[a]
40
+ attr << options[a]
41
+ end
42
+
43
+ check_params(flag, options)
44
+ puts "传入参数为:#{attr}"
45
+
46
+ @source.standard_send_msg(attr)
47
+ end
48
+
49
+ private
50
+ def check_params(flag, options)
51
+ raise "自定义参数不全!\n你传入的: #{options.map{|k,v| k.to_sym}}\n需要传入: [:code :product :phones :extend :sms_free_sign_name :sms_template_code]" if flag
52
+ end
53
+
54
+ def check_system_params(options)
55
+ arr = %w(app_key app_secret post_url)
56
+ attr, flag = [], false
57
+ arr.each do |a|
58
+ flag = true unless options[a]
59
+ attr << options[a]
60
+ end
61
+ raise "系统参数不全!\n你传入的: #{options.map{|k,v| k.to_sym}}\n需要传入: [:app_key, :app_secret, :post_url]\n请配置 alidayu_sms.yml" if flag
62
+ puts "系统参数检测完毕!"
63
+ end
64
+ end
65
+
66
+ if defined? ::Rails
67
+ module AlidayuSms
68
+ module Rails
69
+ class Railtie < ::Rails::Railtie
70
+ rake_tasks do
71
+ load "tasks/alidayu_sms.rake"
72
+ end
73
+ end
74
+ end
75
+ end
76
+ end
@@ -0,0 +1,7 @@
1
+ namespace :alidayu_sms do
2
+ task :create_default_config_file do
3
+ unless File.exist?("#{::Rails.root}/config/alidayu_sms.yml")
4
+ FileUtils.cp(File.expand_path("../../templates/alidayu_sms.yml", __FILE__), "#{::Rails.root}/config/alidayu_sms.yml")
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,14 @@
1
+ defaults: &defaults
2
+ alidayu:
3
+ app_key: xxxx
4
+ app_secret: xxxx
5
+ post_url: 'http://gw.api.taobao.com/router/rest'
6
+
7
+ development:
8
+ <<: *defaults
9
+
10
+ test:
11
+ <<: *defaults
12
+
13
+ production:
14
+ <<: *defaults
Binary file
metadata ADDED
@@ -0,0 +1,133 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: alidayu_sms
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - jack ping
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-02-01 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: i18n
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: bundler
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.9'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.9'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '10.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '10.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: activesupport
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 4.1.12
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 4.1.12
69
+ - !ruby/object:Gem::Dependency
70
+ name: rack
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ description: alidayu_sms send.
84
+ email:
85
+ - 525399584@qq.com
86
+ executables:
87
+ - alidayu_sms
88
+ extensions: []
89
+ extra_rdoc_files: []
90
+ files:
91
+ - ".gitignore"
92
+ - ".idea/.rakeTasks"
93
+ - ".idea/alidayu_sms.iml"
94
+ - ".idea/misc.xml"
95
+ - ".idea/modules.xml"
96
+ - ".idea/vcs.xml"
97
+ - ".idea/workspace.xml"
98
+ - Gemfile
99
+ - Gemfile.lock
100
+ - README.md
101
+ - Rakefile
102
+ - alidayu_sms.gemspec
103
+ - bin/alidayu_sms
104
+ - lib/alidayu_sms.rb
105
+ - lib/alidayu_sms/alidayu.rb
106
+ - lib/alidayu_sms/version.rb
107
+ - lib/tasks/alidayu_sms.rake
108
+ - lib/templates/alidayu_sms.yml
109
+ - pkg/alidayu_sms-0.1.0.gem
110
+ homepage: https://github.com/wangping0105/alidayu_sms
111
+ licenses: []
112
+ metadata: {}
113
+ post_install_message:
114
+ rdoc_options: []
115
+ require_paths:
116
+ - lib
117
+ required_ruby_version: !ruby/object:Gem::Requirement
118
+ requirements:
119
+ - - ">="
120
+ - !ruby/object:Gem::Version
121
+ version: '0'
122
+ required_rubygems_version: !ruby/object:Gem::Requirement
123
+ requirements:
124
+ - - ">="
125
+ - !ruby/object:Gem::Version
126
+ version: '0'
127
+ requirements: []
128
+ rubyforge_project:
129
+ rubygems_version: 2.4.6
130
+ signing_key:
131
+ specification_version: 4
132
+ summary: alidayu_sms send.
133
+ test_files: []