alidayu_sms 0.1.0 → 0.2.0

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: 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
- *~