alidayu_sms 0.1.0 → 0.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 358c8f0763bf15466b7511b60bbfa562e72c03fe
4
- data.tar.gz: b379d22e05ec0358492615c4dd17ced744b7c399
3
+ metadata.gz: c00fc6ced4e245d6f7fe70e8206b34f4679133e8
4
+ data.tar.gz: c3d7825e83e0abec0e9721b091ec10be319b79d1
5
5
  SHA512:
6
- metadata.gz: efbad6893b6901a6044ac289755260fd2dadd62576ad6b44c8d97dc76aeb379c28620017d086b0942a5428461456221c49414ae1023666167d19d3ddcbadcb87
7
- data.tar.gz: 890070ebc7a1c983e4b50f1d301336f861d4732bfee2b3663c94b30163ddeb1f308ab2d85b67bd263110f4964a997a6ecd641bfdd801ab402a334ed6f9cafd58
6
+ metadata.gz: 5afcecfa24c2edcf2cd8adca78f4982cf4217d2e1b4d72a819db29859d80316d61b2807db57f59e907ff1edd5b01a9a8e20cd078b360961a36441b353ed94441
7
+ data.tar.gz: 719a2a22d1d4cbff0a434676c26f597a759fd21c8dd16e61a64716165874b7dcaa950ab37ca69a4a7d74448f3b42edd9c04048fe075a788456c1928e1858aee5
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- alidayu_sms (0.1.0)
4
+ alidayu_sms (0.2.0)
5
5
  i18n
6
6
 
7
7
  GEM
data/README.md CHANGED
@@ -1,8 +1,8 @@
1
1
  # alidayu_sms
2
- 阿里大鱼的短信发送api
2
+ 阿里大鱼的短信发送api,暂时只支持 alibaba.aliqin.fc.sms.num.send 短信发送
3
3
 
4
4
  # Gemfile add
5
- gem 'alidayu_sms', git: 'git@github.com:wangping0105/alidayu_sms.git'
5
+ gem 'alidayu_sms'
6
6
 
7
7
  # start
8
8
  ##生成配置文件示例!(my :app_key and :app_secret, Valid to 2016.02.22)
@@ -13,6 +13,11 @@ defaults: &defaults
13
13
  app_key: 23304964
14
14
  app_secret: "12b083a7c5e89ce3093067ddd65c4b5a"
15
15
  post_url: 'http://gw.api.taobao.com/router/rest'
16
+ product: "阿里打鱼"
17
+ sms_templates:
18
+ - name: "sign_up"
19
+ sms_free_sign_name: "注册验证" # 短信签名
20
+ sms_template_code: "SMS_5019408" # 短信模板
16
21
 
17
22
  development:
18
23
  <<: *defaults
@@ -23,12 +28,13 @@ test:
23
28
  production:
24
29
  <<: *defaults
25
30
  ```
31
+
26
32
  ## hello world!
27
33
  ```ruby
28
34
  options = {
29
35
  code: 1314520, # 模板的{code}字段
30
36
  phones: "1520122011,1591251515", # 手机号码
31
- product: "王平爱王玲", # 模板的{product}字段
37
+ product: "阿里云", # 模板的{product}字段
32
38
  extend: '', # 公共回传参数,在“消息返回”中会透传回该参数;举例:用户可以传入自己下级的会员ID,在消息返回时,该会员ID会包含在内,用户可以根据该会员ID识别是哪位会员使用了你的应用
33
39
  sms_free_sign_name: "注册验证", # 短信签名
34
40
  sms_template_code: "SMS_5045503" # 短信模板
@@ -36,4 +42,11 @@ options = {
36
42
  result = AlidayuSmsSender.new.batchSendSms(options)
37
43
 
38
44
  # 返回码参考 阿里大鱼 api文档
39
- ```
45
+ ```
46
+
47
+ # v0.2.0最新用法
48
+ ## 配置文件里的product即为 options里的 product: "阿里云", # 模板的{product}字段,配置好之后可以用
49
+ ```ruby
50
+ # Alidayu::Sms.send_code_for_{name}(code, phone, extend="") {name}为配置文件sms_templates[:name]
51
+ Alidayu::Sms.send_code_for_sign_up(1314520, "1520122011")
52
+ ```
data/README.md~ ADDED
@@ -0,0 +1,6 @@
1
+ # alidayu_sms
2
+ 阿里大鱼的短信发送api
3
+ # Gemfile
4
+ gem "sms", git: "ssh://gitlab@gitlab.ikcrm.com:40022/ikcrm_server/ikcrm_sms.git", branch: 'master'
5
+
6
+ rake alidayu_sms:create_default_config_file
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,27 @@
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
+
23
+ spec.add_development_dependency "bundler", "~> 1.9"
24
+ spec.add_development_dependency "rake", "~> 10.0"
25
+ spec.add_development_dependency "activesupport", "~> 4.1.12"
26
+ spec.add_development_dependency 'rack'
27
+ end
data/bin/alidayu_sms~ ADDED
@@ -0,0 +1,68 @@
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 = {source: 'zucp', method: 'single'}
11
+ attributes = {}
12
+
13
+ OptionParser.new do |o|
14
+ o.banner = <<-EOF
15
+ Usage:
16
+ Starting:
17
+ alidayu_sms [-p <phone>] [-c <content>] [-m <model>] [-t <type>]
18
+
19
+ Querying:
20
+ alidayu_sms -v
21
+
22
+ Options:
23
+ EOF
24
+
25
+ o.on("-p", "--phone=phone", String, "send alidayu_sms phone") do |x|
26
+ options[:phone] = x
27
+ end
28
+
29
+ o.on("-c", "--content=content", String, "send alidayu_sms content") do |x|
30
+ options[:content] = 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 [single|batch] (Default: single)") 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
+ begin
59
+ puts options.inspect
60
+ puts AlidayuSmsSender.new(options).send("#{options[:method]}Send", options[:phone])
61
+ rescue => e
62
+ puts 'Uncaught exception'
63
+ puts e.message
64
+ puts e.backtrace.join("\n")
65
+ end
66
+
67
+ # 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'
68
+
data/lib/alidayu_sms.rb CHANGED
@@ -18,7 +18,6 @@ end
18
18
 
19
19
  class AlidayuSmsSender
20
20
  attr_accessor :source, :template_code
21
-
22
21
  def initialize(options = {})
23
22
  if load_config.present? && load_config[:alidayu].present?
24
23
  options = load_config[:alidayu].merge(options)
@@ -27,6 +26,21 @@ class AlidayuSmsSender
27
26
  check_system_params(options)
28
27
 
29
28
  @source = AlidayuSms::Alidayu.new(options)
29
+ class_eval do
30
+ load_config[:alidayu][:sms_templates].each do |sms_template|
31
+ define_method("send_code_for_#{sms_template[:name]}") do |code, phone, extend = ""|
32
+ options = {
33
+ code: code, # 模板的{code}字段
34
+ phones: phone, # 手机号码
35
+ product: load_config[:alidayu][:product], # 模板的{product}字段
36
+ extend: extend, # 公共回传参数,在“消息返回”中会透传回该参数;举例:用户可以传入自己下级的会员ID,在消息返回时,该会员ID会包含在内,用户可以根据该会员ID识别是哪位会员使用了你的应用
37
+ sms_free_sign_name: sms_template[:sms_free_sign_name], # 短信签名
38
+ sms_template_code: sms_template[:sms_template_code] # 短信模板
39
+ }
40
+ AlidayuSmsSender.new.batchSendSms(options)
41
+ end
42
+ end
43
+ end
30
44
  end
31
45
 
32
46
  # 发送短信
@@ -41,14 +55,14 @@ class AlidayuSmsSender
41
55
  end
42
56
 
43
57
  check_params(flag, options)
44
- puts "传入参数为:#{attr}"
58
+ puts "阿里大鱼传入参数为:#{attr}"
45
59
 
46
60
  @source.standard_send_msg(attr)
47
61
  end
48
62
 
49
63
  private
50
64
  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
65
+ raise "阿里大鱼自定义参数不全!\n你传入的: #{options.map{|k,v| k.to_sym}}\n需要传入: [:code :product :phones :extend :sms_free_sign_name :sms_template_code]" if flag
52
66
  end
53
67
 
54
68
  def check_system_params(options)
@@ -58,8 +72,8 @@ class AlidayuSmsSender
58
72
  flag = true unless options[a]
59
73
  attr << options[a]
60
74
  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 "系统参数检测完毕!"
75
+ raise "阿里大鱼系统参数不全!\n你传入的: #{options.map{|k,v| k.to_sym}}\n需要传入: [:app_key, :app_secret, :post_url]\n请配置 alidayu_sms.yml" if flag
76
+ puts "阿里大鱼系统参数检测完毕!"
63
77
  end
64
78
  end
65
79
 
@@ -0,0 +1,55 @@
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
+
27
+ options = HashWithIndifferentAccess.new(options)
28
+ @source = AlidayuSms::Alidayu.new(options)
29
+ end
30
+
31
+ # 发送短信
32
+ def batchSendSms(options = {})
33
+ arr = %w(code product phones extend sms_free_sign_name sms_template_code)
34
+ arr.each do |a|
35
+ unless options[a.to_sym]
36
+ puts "参数不全!"
37
+ end
38
+ end
39
+
40
+ @source.standard_send_msg(arr.map{|a| options[a.to_sym]})
41
+ end
42
+
43
+ end
44
+
45
+ if defined? ::Rails
46
+ module AlidayuSms
47
+ module Rails
48
+ class Railtie < ::Rails::Railtie
49
+ rake_tasks do
50
+ load "tasks/alidayu_sms.rake"
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,67 @@
1
+ require 'net/http'
2
+
3
+ module Sms
4
+ class Alidayu
5
+ attr_accessor :app_key, :app_secret, :post_url
6
+
7
+ def initialize(options = {})
8
+ app_key = options[:app_key]
9
+ app_secret = options[:app_secret]
10
+ post_url = options[:post_url]
11
+ end
12
+
13
+ def standard_send_msg(code, product, _phones, _extend, _sms_free_sign_name, _sms_template_code)
14
+ _sms_param = "{'code':'#{code}','product':'#{product}'}"
15
+
16
+ _timestamp = Time.now.strftime("%F %T")
17
+ options = {
18
+ app_key: self.app_key,
19
+ format: 'json',
20
+ method: 'alibaba.aliqin.fc.sms.num.send',
21
+ partner_id: 'apidoc',
22
+ sign_method: 'md5',
23
+ timestamp: _timestamp,
24
+ v: '2.0',
25
+ extend: _extend,
26
+ rec_num: _phones,
27
+ sms_free_sign_name: _sms_free_sign_name,
28
+ sms_param: _sms_param,
29
+ sms_template_code: _sms_template_code,
30
+ sms_type: 'normal'
31
+ }
32
+ options = sort_options(options)
33
+
34
+ md5_str = 加密(options)
35
+ response = post(self.post_url, options.merge(sign: md5_str))
36
+ puts "phones: #{_phones}, #{_sms_param}, and respone: #{response}"
37
+ response
38
+ end
39
+
40
+ private
41
+ def sort_options(**arg)
42
+ arg.sort_by{|k,v| k}.to_h
43
+ end
44
+
45
+ def 加密(**arg)
46
+ _arg = arg.map{|k,v| "#{k}#{v}"}
47
+ md5("#{self.app_secret}#{_arg.join("")}#{self.app_secret}").upcase
48
+ end
49
+
50
+ def md5(arg)
51
+ Digest::MD5.hexdigest(arg)
52
+ end
53
+
54
+ def post(uri, options)
55
+ response = ""
56
+ url = URI.parse(uri)
57
+ Net::HTTP.start(url.host, url.port) do |http|
58
+ req = Net::HTTP::Post.new(url.path)
59
+ req.set_form_data(options)
60
+ response = http.request(req).body
61
+ end
62
+ JSON(response)
63
+ end
64
+ end
65
+ end
66
+
67
+
@@ -1,3 +1,3 @@
1
1
  module AlidayuSms
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
@@ -0,0 +1,3 @@
1
+ module AlidayuSms
2
+ VERSION = "0.1.0"
3
+ end
data/lib/sms.rb~ ADDED
@@ -0,0 +1,60 @@
1
+ $:.unshift File.expand_path('../../lib', __FILE__)
2
+
3
+ require 'pp'
4
+ require "active_support/all"
5
+
6
+ require "sms/version"
7
+ require "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/sms.yml")[::Rails.env] || {})
14
+ else
15
+ {}
16
+ end
17
+ end
18
+
19
+ class AlidayuSmsSender
20
+
21
+ SOURCES = %w(alidayu)
22
+
23
+ attr_accessor :source, :template_code
24
+
25
+ def initialize(options = {})
26
+ return unless options[:source].in?(SOURCES)
27
+
28
+ if load_config.present? && load_config[:alidayu].present?
29
+ options = load_config[:alidayu].merge(options)
30
+ end
31
+
32
+ options = HashWithIndifferentAccess.new(options)
33
+ @source = Sms::Alidayu.new(options)
34
+ end
35
+
36
+ # 发送短信
37
+ def batchSendSms(options = {})
38
+ arr = %w(code product phones extend sms_free_sign_name sms_template_code)
39
+ arr.each do |a|
40
+ unless options[a.to_sym]
41
+ puts "参数不全!"
42
+ end
43
+ end
44
+
45
+ standard_send_msg(arr.map{|a| options[a.to_sym]})
46
+ end
47
+
48
+ end
49
+
50
+ if defined? ::Rails
51
+ module Sms
52
+ module Rails
53
+ class Railtie < ::Rails::Railtie
54
+ rake_tasks do
55
+ load "tasks/sms.rake"
56
+ end
57
+ end
58
+ end
59
+ end
60
+ end
@@ -3,5 +3,8 @@ namespace :alidayu_sms do
3
3
  unless File.exist?("#{::Rails.root}/config/alidayu_sms.yml")
4
4
  FileUtils.cp(File.expand_path("../../templates/alidayu_sms.yml", __FILE__), "#{::Rails.root}/config/alidayu_sms.yml")
5
5
  end
6
+ unless File.exist?("#{::Rails.root}/config/initializers/alidayu.rb")
7
+ FileUtils.cp(File.expand_path("../../templates/alidayu.rb", __FILE__), "#{::Rails.root}/config/initializers/alidayu.rb")
8
+ end
6
9
  end
7
10
  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,3 @@
1
+ module Alidayu
2
+ Sms = AlidayuSmsSender.new
3
+ end
@@ -3,6 +3,11 @@ defaults: &defaults
3
3
  app_key: xxxx
4
4
  app_secret: xxxx
5
5
  post_url: 'http://gw.api.taobao.com/router/rest'
6
+ product: "阿里打鱼"
7
+ sms_templates:
8
+ - name: "sign_up"
9
+ sms_free_sign_name: "注册验证" # 短信签名
10
+ sms_template_code: "SMS_5019408" # 短信模板
6
11
 
7
12
  development:
8
13
  <<: *defaults
@@ -0,0 +1,18 @@
1
+ defaults: &defaults
2
+ alidayu:
3
+ app_key: xxxx
4
+ app_secret: xxxx
5
+ post_url: 'http://gw.api.taobao.com/router/rest'
6
+ templates:
7
+ devise_supplier_applies_otp_code_confirm: "验证码:%{code},有效期5分钟~ 如非本人操作,请忽略本短信"
8
+ devise_passwords_otp_code_confirm: "验证码:%{code},有效期5分钟~ 如非本人操作,请忽略本短信"
9
+ devise_confirmations_otp_code_confirm: "验证码:%{code},有效期5分钟,请尽快完成注册哦~ 如非本人操作,请忽略本短信"
10
+
11
+ development:
12
+ <<: *defaults
13
+
14
+ test:
15
+ <<: *defaults
16
+
17
+ production:
18
+ <<: *defaults
Binary file
data/sms.gemspec~ ADDED
@@ -0,0 +1,27 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'sms/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "alidayu_sms"
8
+ spec.version = Sms::VERSION
9
+ spec.authors = ["jack ping"]
10
+ spec.email = ["525399584@qq.com"]
11
+
12
+ spec.summary = %q{sms send.}
13
+ spec.description = %q{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
+
23
+ spec.add_development_dependency "bundler", "~> 1.9"
24
+ spec.add_development_dependency "rake", "~> 10.0"
25
+ spec.add_development_dependency "activesupport", "~> 4.1.12"
26
+ spec.add_development_dependency 'rack'
27
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: alidayu_sms
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - jack ping
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-02-01 00:00:00.000000000 Z
11
+ date: 2016-02-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: i18n
@@ -85,10 +85,10 @@ email:
85
85
  - 525399584@qq.com
86
86
  executables:
87
87
  - alidayu_sms
88
+ - alidayu_sms~
88
89
  extensions: []
89
90
  extra_rdoc_files: []
90
91
  files:
91
- - ".gitignore"
92
92
  - ".idea/.rakeTasks"
93
93
  - ".idea/alidayu_sms.iml"
94
94
  - ".idea/misc.xml"
@@ -98,15 +98,27 @@ files:
98
98
  - Gemfile
99
99
  - Gemfile.lock
100
100
  - README.md
101
+ - README.md~
101
102
  - Rakefile
103
+ - Rakefile~
102
104
  - alidayu_sms.gemspec
105
+ - alidayu_sms.gemspec~
103
106
  - bin/alidayu_sms
107
+ - bin/alidayu_sms~
104
108
  - lib/alidayu_sms.rb
109
+ - lib/alidayu_sms.rb~
105
110
  - lib/alidayu_sms/alidayu.rb
111
+ - lib/alidayu_sms/alidayu.rb~
106
112
  - lib/alidayu_sms/version.rb
113
+ - lib/alidayu_sms/version.rb~
114
+ - lib/sms.rb~
107
115
  - lib/tasks/alidayu_sms.rake
116
+ - lib/tasks/alidayu_sms.rake~
117
+ - lib/templates/alidayu.rb
108
118
  - lib/templates/alidayu_sms.yml
119
+ - lib/templates/sms.yml~
109
120
  - pkg/alidayu_sms-0.1.0.gem
121
+ - sms.gemspec~
110
122
  homepage: https://github.com/wangping0105/alidayu_sms
111
123
  licenses: []
112
124
  metadata: {}
data/.gitignore DELETED
@@ -1 +0,0 @@
1
- *~