wechat_template_message 0.1.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: c76f12e84101d1232d7b665ab0d1ea6ca68b370a
4
+ data.tar.gz: 35ed1d09dd1409f835da2cc7d1fb9365b34cff89
5
+ SHA512:
6
+ metadata.gz: 11e9e072d1c2e2dbcce93c2fc86d6daa76e68ac9df8ed8b4fa3a59725e94e9cdad7f1a236c850d0cb25317950e41838664219aded14bd0b55db29ac7e5d298aa
7
+ data.tar.gz: 0a4c4e7a1f2cc97f89cdbec9223cd6447ea32358f44373b042a4fd1be637dc98308edceca1969c5d3d199e7c23d392cd6fde90938e3b658ce87e5866b8b992f1
data/LICENSE.md ADDED
@@ -0,0 +1,9 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2009-2013 Nicholas J Humfrey
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
6
+
7
+ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
8
+
9
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,66 @@
1
+ 微信模板消息 Ruby SDK
2
+ =========
3
+
4
+ [微信模板消息](https://mp.weixin.qq.com/wiki?action=doc&id=mp1433751277&t=0.8055365082030199) Ruby SDK, 支持以下功能:
5
+
6
+ * 获取账号模板列表
7
+ * 发送模板消息
8
+
9
+ 其它 ruby gem 都封装了 access-token 获取的逻辑, 不便于分布式环境使用,此 gem access-token 均需要从参数传入
10
+
11
+ [Source Code](https://github.com/jameswangz/wechat_template_message)
12
+
13
+ Table of Contents
14
+ -----------------
15
+ * [Installation](#installation)
16
+ * [Quick Start](#quick-start)
17
+ * [License](#license)
18
+ * [Contact](#contact)
19
+
20
+
21
+ Installation
22
+ ------------
23
+
24
+ You may get the latest stable version from [Rubygems]:
25
+
26
+ $ gem install wechat_template_message
27
+
28
+ For bundler:
29
+
30
+ gem 'wechat_template_message'
31
+
32
+
33
+ Quick Start
34
+ -----------
35
+
36
+ ~~~ ruby
37
+ require 'rubygems'
38
+ require 'wechat_template_message'
39
+
40
+ # 获取微信公众号模板列表
41
+ result = WechatTemplateMessage::Template.all access_token
42
+ if result.successful
43
+ result.body.each do |element|
44
+ template_id = element["template_id"]
45
+ template_title = element["title"]
46
+ template_content = element["content"]
47
+ end
48
+ else
49
+ # raise error
50
+ end
51
+
52
+ ~~~
53
+
54
+
55
+ License
56
+ -------
57
+
58
+ The wechat_template_message ruby gem is licensed under the terms of the MIT license.
59
+ See the file LICENSE for details.
60
+
61
+ Contact
62
+ -------
63
+
64
+ * Author: James Wang
65
+ * Email: james.wang.z81@gmail.com
66
+
@@ -0,0 +1,10 @@
1
+ class WechatTemplateMessage::Result
2
+
3
+ attr_reader :successful, :body
4
+
5
+ def initialize(successful, body)
6
+ @successful = successful
7
+ @body = body
8
+ end
9
+
10
+ end
@@ -0,0 +1,9 @@
1
+ require 'net/http'
2
+ require 'json'
3
+ require 'wechat_template_message/result'
4
+
5
+ class WechatTemplateMessage::Sender
6
+
7
+
8
+
9
+ end
@@ -0,0 +1,35 @@
1
+ require 'net/http'
2
+ require 'json'
3
+ require 'wechat_template_message/result'
4
+
5
+ class WechatTemplateMessage::Template
6
+
7
+ def self.all access_token
8
+ res = get_templates access_token
9
+ json = JSON.parse(res.body)
10
+ successful = res.is_a?(Net::HTTPSuccess) && json['template_list'] != nil
11
+ WechatTemplateMessage::Result.new(successful, json['template_list'])
12
+ end
13
+
14
+ def self.find access_token, template_id
15
+ all_template = all access_token
16
+ WechatTemplateMessage::Result.new(false, { error_message: "Unable to find template by id #{template_id}" }) unless all_template.successful
17
+ template = all_template.body.find { |t| t['template_id'] == template_id }
18
+ return WechatTemplateMessage::Result.new(template != nil, template)
19
+ end
20
+
21
+ private
22
+
23
+ def self.get_templates(access_token)
24
+ uri = URI.parse("#{WechatTemplateMessage.server}/cgi-bin/template/get_all_private_template?access_token=#{access_token}")
25
+ if WechatTemplateMessage.debug_mode && WechatTemplateMessage.logger
26
+ WechatTemplateMessage.logger.debug "Requesting uri #{uri}..."
27
+ end
28
+ res = Net::HTTP.get_response(uri)
29
+ if WechatTemplateMessage.debug_mode && WechatTemplateMessage.logger
30
+ WechatTemplateMessage.logger.debug "Get Templates response status: #{res.code}, body: #{res.body}"
31
+ end
32
+ res
33
+ end
34
+
35
+ end
@@ -0,0 +1,3 @@
1
+ module WechatTemplateMessage
2
+ VERSION = '0.1.0'.freeze
3
+ end
@@ -0,0 +1,14 @@
1
+ module WechatTemplateMessage
2
+
3
+ @debug_mode = true
4
+ @server = "https://api.weixin.qq.com"
5
+
6
+ class<< self
7
+ attr_accessor :logger, :debug_mode
8
+ attr_reader :server
9
+ end
10
+
11
+ require 'wechat_template_message/template'
12
+ require 'wechat_template_message/sender'
13
+
14
+ end
@@ -0,0 +1,47 @@
1
+ # -*- coding: UTF-8 -*-
2
+
3
+ require 'spec_helper'
4
+ require 'yaml'
5
+ require 'logger'
6
+
7
+ describe WechatTemplateMessage do
8
+
9
+ subject(:logger) { Logger.new STDOUT }
10
+ subject(:configuration) { YAML.load_file('./spec/fixtures/configuration.yml') }
11
+ subject(:access_token) { configuration['access_token'] }
12
+
13
+ before do
14
+ WechatTemplateMessage.debug_mode = true
15
+ WechatTemplateMessage.logger = logger
16
+ end
17
+
18
+ context 'templates' do
19
+
20
+ it 'should get error response when access token is invalid missing' do
21
+ result = WechatTemplateMessage::Template.all 'invalid access token'
22
+ expect(result.successful).to be false
23
+ end
24
+
25
+ it 'should get all templates successfully' do
26
+ result = WechatTemplateMessage::Template.all access_token
27
+ expect(result.successful).to be true
28
+ logger.debug "all templates #{result.body}"
29
+ expect(WechatTemplateMessage::Template.find(access_token, 'unexisting template id').successful).to be false
30
+ result.body.each do |element|
31
+ template_id = element["template_id"]
32
+ template_result = WechatTemplateMessage::Template.find access_token, template_id
33
+ expect(template_result.successful).to be true
34
+ logger.debug "template #{template_result.inspect}"
35
+ end
36
+ end
37
+
38
+
39
+
40
+ end
41
+
42
+ context 'messages' do
43
+
44
+
45
+ end
46
+
47
+ end
metadata ADDED
@@ -0,0 +1,66 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: wechat_template_message
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - James Wang
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2019-06-11 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rspec
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ description: 微信模板消息 Ruby SDK, 非官方
28
+ email: james.wang.z81@gmail.com
29
+ executables: []
30
+ extensions: []
31
+ extra_rdoc_files: []
32
+ files:
33
+ - LICENSE.md
34
+ - README.md
35
+ - lib/wechat_template_message.rb
36
+ - lib/wechat_template_message/result.rb
37
+ - lib/wechat_template_message/sender.rb
38
+ - lib/wechat_template_message/template.rb
39
+ - lib/wechat_template_message/version.rb
40
+ - spec/wechat_template_message_spec.rb
41
+ homepage: https://github.com/jameswangz/wechat_template_message
42
+ licenses:
43
+ - MIT
44
+ metadata: {}
45
+ post_install_message:
46
+ rdoc_options: []
47
+ require_paths:
48
+ - lib
49
+ required_ruby_version: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ required_rubygems_version: !ruby/object:Gem::Requirement
55
+ requirements:
56
+ - - ">="
57
+ - !ruby/object:Gem::Version
58
+ version: '0'
59
+ requirements: []
60
+ rubyforge_project:
61
+ rubygems_version: 2.6.14
62
+ signing_key:
63
+ specification_version: 4
64
+ summary: 微信模板消息 Ruby SDK
65
+ test_files:
66
+ - spec/wechat_template_message_spec.rb