haobo_sms 0.0.1

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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: adc878236e49d552021b152c92d1c995e63cc5f3
4
+ data.tar.gz: 01039f82a7e69eb276e59dc89726a6ebfab3f69e
5
+ SHA512:
6
+ metadata.gz: 203d8795412591b37964a83033e06f69690176864768c6270170cc66a7c18ab2e9d3715cefa7bc81dcdff848f29fb44a4ead4e8e9be5cb1caad126393039e29b
7
+ data.tar.gz: f7d5e4ccf0462917761d078c57b160643c87e3e78a16884332267eb3d768a2b775329e1db1c339ca87bc3c7fb5336decd85f7478d2fa14bcfc9fdc1a044ecfab
@@ -0,0 +1,3 @@
1
+ require 'haobo_sms/config'
2
+ require 'haobo_sms/sms'
3
+ require 'haobo_sms/util'
@@ -0,0 +1,24 @@
1
+ require 'yaml'
2
+ require 'singleton'
3
+
4
+ module HaoboSms
5
+
6
+ class Config
7
+ include Singleton
8
+
9
+ def initialize()
10
+ configHash = YAML.load_file(Rails.root.to_s + '/config/sms.yml')
11
+
12
+ if configHash.nil?
13
+ raise "sms.yml为空"
14
+ end
15
+
16
+ configHash.each do |k, v|
17
+ Object.send :define_method, k do
18
+ v
19
+ end
20
+ end
21
+ end # initialize .. end
22
+
23
+ end
24
+ end
@@ -0,0 +1,97 @@
1
+ require 'net/http'
2
+ require 'uri'
3
+ require 'json'
4
+ require 'singleton'
5
+
6
+ module HaoboSms
7
+
8
+ # 这个类所有方法,
9
+ # 返回为空{},表示请求异常
10
+ class Sms
11
+ include Singleton
12
+
13
+ def initialize()
14
+ @config = HaoboSms::Config.instance
15
+ end
16
+
17
+ # 发送短信
18
+ # { rp: 0, id: }
19
+ def send_sms(phone, message)
20
+ # 将短信正文转换为gb18030并转换为16进制
21
+ content = (@config.pre_str + message).encode("gb18030").unpack("H*")
22
+
23
+ option = {}
24
+ option["un"] = @config.user_name
25
+ option["pw"] = @config.pass_word
26
+ option["da"] = phone
27
+ option["sm"] = content
28
+ option["dc"] = "15"
29
+ option["rd"] = "1"
30
+
31
+ uri = URI(@config.send_url)
32
+ uri.query = URI.encode_www_form(option)
33
+ res = Net::HTTP.get_response(uri)
34
+
35
+ if res.is_a? Net::HTTPSuccess
36
+ body = res.body
37
+ result = HaoboSms::Util.parse_query_str(body)
38
+ else
39
+ result = {}
40
+ end
41
+
42
+ return result.with_indifferent_access
43
+ end
44
+
45
+ # 查询剩余条数
46
+ # { op: "bi", bl: 33 }
47
+ def get_remain()
48
+ option = {}
49
+
50
+ option["un"] = @config.user_name
51
+ option["pw"] = @config.pass_word
52
+
53
+ uri = URI(@config.balance_url)
54
+ uri.query = URI.encode_www_form(option)
55
+ res = Net::HTTP.get_response(uri)
56
+
57
+ if res.is_a? Net::HTTPSuccess
58
+ body = res.body
59
+ result = HaoboSms::Util.parse_query_str(body)
60
+ else
61
+ result = {}
62
+ end
63
+
64
+ return result.with_indifferent_access
65
+ end
66
+
67
+ # 获取状态报告
68
+ # 可传参数fs: 请求长度
69
+ # 返回数组[ { id: , su: , rp: } ]
70
+ def get_report(option_hash = {})
71
+ option = option_hash.stringify_keys
72
+
73
+ option["un"] = @config.user_name
74
+ option["pw"] = @config.pass_word
75
+
76
+ uri = URI(@config.receive_url)
77
+ uri.query = URI.encode_www_form(option)
78
+ res = Net::HTTP.get_response(uri)
79
+
80
+ result = { rpts: [] }
81
+ if res.is_a? Net::HTTPSuccess
82
+ res.body.split("\r\n").each do |query_str|
83
+ hash = HaoboSms::Util.parse_query_str(query_str)
84
+
85
+ if hash["op"] == "dr"
86
+ result[:rpts] << hash
87
+ end
88
+ end
89
+ else
90
+ result = {}
91
+ end
92
+
93
+ return result.with_indifferent_access
94
+ end
95
+
96
+ end
97
+ end
@@ -0,0 +1,15 @@
1
+ module HaoboSms
2
+ module Util
3
+
4
+ def self.parse_query_str(query_str)
5
+ result = {}
6
+
7
+ query_str.split("&").each do |str|
8
+ key, value = str.split("=")
9
+ result[key] = value
10
+ end
11
+
12
+ return result
13
+ end
14
+ end
15
+ end
metadata ADDED
@@ -0,0 +1,47 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: haobo_sms
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - "袁帅"
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2017-11-25 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: "昊博短信接口"
14
+ email: bysxrokr@qq.com
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - lib/haobo_sms.rb
20
+ - lib/haobo_sms/config.rb
21
+ - lib/haobo_sms/sms.rb
22
+ - lib/haobo_sms/util.rb
23
+ homepage: http://rubygems.org/gems/haobo_sms
24
+ licenses:
25
+ - MIT
26
+ metadata: {}
27
+ post_install_message:
28
+ rdoc_options: []
29
+ require_paths:
30
+ - lib
31
+ required_ruby_version: !ruby/object:Gem::Requirement
32
+ requirements:
33
+ - - ">="
34
+ - !ruby/object:Gem::Version
35
+ version: '0'
36
+ required_rubygems_version: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ requirements: []
42
+ rubyforge_project:
43
+ rubygems_version: 2.4.5
44
+ signing_key:
45
+ specification_version: 4
46
+ summary: "昊博短信接口"
47
+ test_files: []