wechat-handler 0.1.1 → 0.1.2

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: 40924815f5ce2a04783e1dc07d38029c5e8c2f24
4
- data.tar.gz: b682066dbc4b3d50f1cd1a04eac5e5e71dace983
3
+ metadata.gz: 03e9e87d39249ad23c59ced49203f4e496988312
4
+ data.tar.gz: f08549b67f63f3b0f0166b8352c7d34a7c4926eb
5
5
  SHA512:
6
- metadata.gz: 020d1584e552b658c372692250c3d3e0becb60983771e81e91bdde775bed5d4c832e7114196880dc1eee3ebf45dbef51cc6e6a7541bd41a2092b96b36530858c
7
- data.tar.gz: bb26f6032ffe83cd628c7202e8e17f67f2536c550c58db7cb3331a6b4b2f0955ea0f73cc68950c82c93bc382823c2072b21f2b23aa982468a9c47d0e95dfe28b
6
+ metadata.gz: 35a59ad8dbdc65d41fe4cecedd5a9ca7fc1df4309764a09e165f4570c7c0af26a986cfbf0d2d3c46ad4368b0ed5be552761d02e4683e5f3e245b8e6dafd32461
7
+ data.tar.gz: 54323309fd7ff1f30af8f7d227ae80fcbe0a65807f0402b61bbfd84180ce240ce0b040d6b6a3f77d2abb179ef43bf805f6c37837f0f1ad094d5c3535596f4fa6
data/README.md CHANGED
@@ -1,19 +1,24 @@
1
1
  # Wechat Handler 微信回调处理引擎
2
2
 
3
+ [![Documentation](http://img.shields.io/badge/docs-rdoc.info-blue.svg)](http://www.rubydoc.info/gems/wechat-handler/frames)
3
4
  [![License](https://img.shields.io/badge/license-MIT-green.svg)](http://opensource.org/licenses/MIT)
5
+
4
6
  [![Gem Version](https://badge.fury.io/rb/wechat-handler.svg)](https://badge.fury.io/rb/wechat-handler)
7
+ [![Dependency Status](https://gemnasium.com/badges/github.com/topbitdu/wechat-handler.svg)](https://gemnasium.com/github.com/topbitdu/wechat-handler)
5
8
 
6
9
  The Wechat Handler engine handles the Wechat event & message notifications. 微信回调处理引擎处理微信服务器发出的事件通知和消息通知。
7
10
 
8
11
 
9
12
 
10
13
  ## Recent Update
14
+
11
15
  Check out the [Road Map](ROADMAP.md) to find out what's the next.
12
16
  Check out the [Change Log](CHANGELOG.md) to find out what's new.
13
17
 
14
18
 
15
19
 
16
20
  ## Usage in Gemfile
21
+
17
22
  ```ruby
18
23
  gem 'wechat-handler'
19
24
  ```
@@ -21,6 +26,7 @@ gem 'wechat-handler'
21
26
 
22
27
 
23
28
  ## Include the controller concern
29
+
24
30
  ```ruby
25
31
  include Wechat::Handler::Concerns::Dispatcher
26
32
 
data/Rakefile CHANGED
@@ -10,7 +10,7 @@ RDoc::Task.new(:rdoc) do |rdoc|
10
10
  rdoc.rdoc_dir = 'rdoc'
11
11
  rdoc.title = 'Wecaht Handler'
12
12
  rdoc.options << '--line-numbers'
13
- rdoc.rdoc_files.include('README.rdoc')
13
+ rdoc.rdoc_files.include('README.md')
14
14
  rdoc.rdoc_files.include('lib/**/*.rb')
15
15
  end
16
16
 
@@ -20,5 +20,5 @@ load 'rails/tasks/statistics.rake'
20
20
 
21
21
 
22
22
 
23
- Bundler::GemHelper.install_tasks
23
+ require 'bundler/gem_tasks'
24
24
 
@@ -0,0 +1,2 @@
1
+ //= link_directory ../javascripts/wechat/handler .js
2
+ //= link_directory ../stylesheets/wechat/handler .css
@@ -5,7 +5,7 @@
5
5
  // or any plugin's vendor/assets/javascripts directory can be referenced here using a relative path.
6
6
  //
7
7
  // It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
8
- // compiled file.
8
+ // compiled file. JavaScript code in this file should be added after the last require_* statement.
9
9
  //
10
10
  // Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details
11
11
  // about supported directives.
@@ -6,9 +6,9 @@
6
6
  * or any plugin's vendor/assets/stylesheets directory can be referenced here using a relative path.
7
7
  *
8
8
  * You're free to add application-wide styles to this file and they'll appear at the bottom of the
9
- * compiled file so the styles you add here take precedence over styles defined in any styles
10
- * defined in the other CSS/SCSS files in this directory. It is generally better to create a new
11
- * file per style scope.
9
+ * compiled file so the styles you add here take precedence over styles defined in any other CSS/SCSS
10
+ * files in this directory. Styles in this file should be added after the last require_* statement.
11
+ * It is generally better to create a new file per style scope.
12
12
  *
13
13
  *= require_self
14
14
  */
@@ -1,2 +1,6 @@
1
+ ##
2
+ # Application controller 是模块内所有控制器的基类。
3
+
1
4
  class Wechat::Handler::ApplicationController < ActionController::Base
5
+ protect_from_forgery with: :exception
2
6
  end
@@ -1,8 +1,11 @@
1
+ ##
2
+ # Dispatcher 是分发微信回调消息的关注点。
3
+
1
4
  module Wechat::Handler::Concerns::Dispatcher
2
5
 
3
6
  extend ActiveSupport::Concern
4
7
 
5
- self.included do |includer|
8
+ included do |includer|
6
9
 
7
10
  skip_before_filter :verify_authenticity_token
8
11
 
@@ -33,8 +36,8 @@ module Wechat::Handler::Concerns::Dispatcher
33
36
  Rails.logger.info "The encoded_message is #{encoded_message.inspect}."
34
37
  render status: :bad_request, text: 'msg_sign_error' and return unless check_message_signature(message_signature, encoded_message, nonce, timestamp)
35
38
 
36
- message = ::Wechat::Callback::MessageDecryption.create encoded_message, Rails.application.secrets.wechat_encoding_aes_keys
37
- random_bytes, xml_size, xml_text, app_id, padding_bytes = ::Wechat::Callback::SecureMessage.load message
39
+ message = Wechat::Callback::MessageDecryption.create encoded_message, Rails.application.secrets.wechat_encoding_aes_keys
40
+ random_bytes, xml_size, xml_text, app_id, padding_bytes = Wechat::Callback::SecureMessage.load message
38
41
  Rails.logger.warn " >> Wechat Callback >> Message Controller >> App ID of the Secure Message = #{app_id}."
39
42
  Rails.logger.warn ' >> Wechat Callback >> Message Controller >> XML Text of the Secure Message ='
40
43
  Rails.logger.warn xml_text
@@ -47,7 +50,7 @@ module Wechat::Handler::Concerns::Dispatcher
47
50
 
48
51
  end
49
52
 
50
- pairs = ::Wechat::Callback::XmlDocument.load xml_text
53
+ pairs = Wechat::Callback::XmlDocument.load xml_text
51
54
  replying_pairs = { 'ToUserName' => pairs['FromUserName'], 'FromUserName' => pairs['ToUserName'], 'CreateTime' => Time.now.to_i }
52
55
 
53
56
  if respond_to? :on_event
@@ -57,30 +60,30 @@ module Wechat::Handler::Concerns::Dispatcher
57
60
  Rails.logger.warn "The #{includer} does not have the #on_event method."
58
61
  end
59
62
 
60
- replying_xml_text = ::Wechat::Callback::XmlDocument.create replying_pairs
63
+ replying_xml_text = Wechat::Callback::XmlDocument.create replying_pairs
61
64
 
62
65
  if 'aes'==replying_encryption
63
- random_bytes = ::Wechat::Callback::RandomByteArray.create 16
64
- plain_text = ::Wechat::Callback::SecureMessage.create random_bytes, replying_xml_text, wechat_app_id
65
- encrypted = ::Wechat::Callback::MessageEncryption.create plain_text, wechat_encoding_aes_keys
66
- replying_singature = ::Wechat::Callback::Signature.create wechat_token, timestamp, nonce, encrypted
66
+ random_bytes = Wechat::Callback::RandomByteArray.create #16
67
+ plain_text = Wechat::Callback::SecureMessage.create random_bytes, replying_xml_text, wechat_app_id
68
+ encrypted = Wechat::Callback::MessageEncryption.create plain_text, wechat_encoding_aes_keys
69
+ replying_singature = Wechat::Callback::Signature.create wechat_token, timestamp, nonce, encrypted
67
70
  encrypted_replying_pairs = {
68
71
  'Encrypt' => encrypted,
69
72
  'MsgSignature' => replying_singature,
70
73
  'TimeStamp' => timestamp,
71
74
  'Nonce' => nonce
72
75
  }
73
- replying_xml_text = ::Wechat::Callback::XmlDocument.create encrypted_replying_pairs
76
+ replying_xml_text = Wechat::Callback::XmlDocument.create encrypted_replying_pairs
74
77
 
75
78
  # debugging
76
- debugging_pairs = ::Wechat::Callback::XmlDocument.load replying_xml_text
79
+ debugging_pairs = Wechat::Callback::XmlDocument.load replying_xml_text
77
80
  Rails.logger.warn ' >> Wechat Callback >> Message Controller >> Debugging Pairs ='
78
81
  Rails.logger.warn debugging_pairs.inspect
79
82
  debugging_encrypted_message = debugging_pairs['Encrypt']
80
- debugging_decrypted_message = ::Wechat::Callback::MessageDecryption.create debugging_encrypted_message, wechat_encoding_aes_keys
83
+ debugging_decrypted_message = Wechat::Callback::MessageDecryption.create debugging_encrypted_message, wechat_encoding_aes_keys
81
84
  Rails.logger.warn ' >> Wechat Callback >> Message Controller >> Debugging Decrypted Message ='
82
85
  Rails.logger.warn debugging_decrypted_message
83
- debugging_random_bytes, debugging_xml_size, debugging_xml_text, debugging_app_id, debugging_padding_bytes = ::Wechat::Callback::SecureMessage.load debugging_decrypted_message
86
+ debugging_random_bytes, debugging_xml_size, debugging_xml_text, debugging_app_id, debugging_padding_bytes = Wechat::Callback::SecureMessage.load debugging_decrypted_message
84
87
  Rails.logger.warn " >> Wechat Callback >> Message Controller >> Debugging App ID of the Secure Message = #{debugging_app_id}."
85
88
  Rails.logger.warn ' >> Wechat Callback >> Message Controller >> Debugging XML Text of the Secure Message ='
86
89
  Rails.logger.warn debugging_xml_text
@@ -102,14 +105,14 @@ module Wechat::Handler::Concerns::Dispatcher
102
105
  end
103
106
 
104
107
  def check_signature(signature, nonce, timestamp)
105
- actual = ::Wechat::Callback::Signature.create wechat_token, timestamp, nonce
108
+ actual = Wechat::Callback::Signature.create wechat_token, timestamp, nonce
106
109
  matched = signature==actual
107
110
  Rails.logger.warn "Actual signature is #{actual}, which does not equal to the given signature #{signature}." unless matched
108
111
  matched
109
112
  end
110
113
 
111
114
  def check_message_signature(message_signature, encoded_message, nonce, timestamp)
112
- actual = ::Wechat::Callback::MessageSignature.create encoded_message, wechat_token, timestamp, nonce
115
+ actual = Wechat::Callback::MessageSignature.create encoded_message, wechat_token, timestamp, nonce
113
116
  matched = message_signature==actual
114
117
  Rails.logger.warn "Actual message signature is #{actual}, which does not equal to the given message signature #{message_signature}." unless matched
115
118
  matched
@@ -0,0 +1,5 @@
1
+ ##
2
+ # Application job 是模块内所有异步任务的基类。
3
+
4
+ class Wechat::Handler::ApplicationJob < ActiveJob::Base
5
+ end
@@ -0,0 +1,7 @@
1
+ ##
2
+ # Application mailer 是模块内所有电子邮件发送类的基类。
3
+
4
+ class Wechat::Handler::ApplicationMailer < ActionMailer::Base
5
+ default from: 'from@example.com'
6
+ layout 'mailer'
7
+ end
@@ -0,0 +1,6 @@
1
+ ##
2
+ # Application record 是模块内所有模型的抽象基类。
3
+
4
+ class Wechat::Handler::ApplicationRecord < ActiveRecord::Base
5
+ self.abstract_class = true
6
+ end
@@ -2,14 +2,14 @@
2
2
  <html>
3
3
  <head>
4
4
  <title>Wechat Handler</title>
5
- <%= stylesheet_link_tag "handler/application", media: "all" %>
5
+ <%= stylesheet_link_tag 'wechat/handler/application', media: "all" %>
6
6
  <%= csrf_meta_tags %>
7
7
  </head>
8
8
  <body>
9
9
 
10
10
  <%= yield %>
11
11
 
12
- <%= javascript_include_tag 'handler/application' %>
12
+ <%= javascript_include_tag 'wechat/handler/application' %>
13
13
 
14
14
  </body>
15
15
  </html>
@@ -1,5 +1,5 @@
1
1
  module Wechat
2
2
  module Handler
3
- VERSION = '0.1.1'.freeze
3
+ VERSION = '0.1.2'.freeze
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wechat-handler
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Topbit Du
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-07-29 00:00:00.000000000 Z
11
+ date: 2017-02-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -24,20 +24,6 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '4.2'
27
- - !ruby/object:Gem::Dependency
28
- name: wechat-validation
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: '0.2'
34
- type: :runtime
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - ">="
39
- - !ruby/object:Gem::Version
40
- version: '0.2'
41
27
  - !ruby/object:Gem::Dependency
42
28
  name: wechat-validator
43
29
  requirement: !ruby/object:Gem::Requirement
@@ -77,11 +63,15 @@ files:
77
63
  - MIT-LICENSE
78
64
  - README.md
79
65
  - Rakefile
66
+ - app/assets/config/wechat-handler_manifest.js
80
67
  - app/assets/javascripts/wechat/handler/application.js
81
68
  - app/assets/stylesheets/wechat/handler/application.css
82
69
  - app/controllers/wechat/handler/application_controller.rb
83
70
  - app/controllers/wechat/handler/concerns/dispatcher.rb
84
71
  - app/helpers/wechat/handler/application_helper.rb
72
+ - app/jobs/wechat/handler/application_job.rb
73
+ - app/mailers/wechat/handler/application_mailer.rb
74
+ - app/models/wechat/handler/application_record.rb
85
75
  - app/views/layouts/wechat/handler/application.html.erb
86
76
  - config/routes.rb
87
77
  - lib/tasks/handler_tasks.rake