rack-weixin 0.0.4.2 → 0.0.4.3

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.
data/.gitignore CHANGED
@@ -11,6 +11,7 @@ spec/reports
11
11
  test/tmp
12
12
  test/version_tmp
13
13
  tmp
14
+ vender
14
15
 
15
16
  # YARD artifacts
16
17
  .yardoc
@@ -0,0 +1,8 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.0.0
4
+ - 1.9.3
5
+ - 1.8.7
6
+
7
+ # uncomment this line if your project needs to run something other than `rake`:
8
+ # script: bundle exec rspec spec
data/Gemfile CHANGED
@@ -1,3 +1,4 @@
1
+ source 'https://rubygems.org'
1
2
  source 'http://ruby.taobao.org'
2
3
 
3
4
  gemspec
data/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  微信公众平台 开放消息接口 Rack Middleware
2
2
  ========================================
3
3
 
4
- Latest version: v0.0.4.2, supports subscribe/unsubscribe event
4
+ [![Build Status](https://travis-ci.org/wolfg1969/rack-weixin.png?branch=master)](https://travis-ci.org/wolfg1969/rack-weixin) [![Gem Version](https://badge.fury.io/rb/rack-weixin.png)](http://badge.fury.io/rb/rack-weixin)
5
5
 
6
6
  * 验证微信请求 with 'weixin/middleware'
7
7
  * 解析推送消息 with 'weixin/model'
@@ -32,87 +32,24 @@ configure do
32
32
  end
33
33
 
34
34
  helpers do
35
- def text_parse(msg)
36
- case msg.Content
37
- when '我想听歌'
38
- mp3 = Weixin.music(
39
- '身骑白马',
40
- '徐佳莹首张专辑《LALA创作专辑》的主打歌。这首歌的是由徐佳莹及其老师苏通达共同创作,其最大的特点是改编自台湾的民间剧种歌仔戏。',
41
- 'http://nj.baidupcs.com/file/9cbb087ece3da309a31e05a7e14003c9?xcode=70d27743259294de1c42dff2d4720c05d4c19cd5e52a44f7&fid=204864837-250528-3177081425&time=1376666534&sign=FDTAXER-DCb740ccc5511e5e8fedcff06b081203-9NqxJyKhTJYx34SlHyPnK7%2B83vY%3D&to=nb&fm=B,B,T&expires=8h&rt=sh&r=756751042&logid=2171432620&sh=1&fn=%E8%BA%AB%E9%AA%91%E7%99%BD%E9%A9%AC.mp3',
42
- 'http://nj.baidupcs.com/file/9cbb087ece3da309a31e05a7e14003c9?xcode=c59d095c8566efe4d948c3846269e02ed4c19cd5e52a44f7&fid=204864837-250528-3177081425&time=1376666631&sign=FDTAXER-DCb740ccc5511e5e8fedcff06b081203-yAO3TLeuAQ867emfUs0dYKgMtSE%3D&to=nb&fm=B,B,T&expires=8h&rt=sh&r=897038653&logid=4061975287&sh=1&fn=%E8%BA%AB%E9%AA%91%E7%99%BD%E9%A9%AC.mp3'
43
- )
44
- Weixin.music_msg(msg.ToUserName, msg.FromUserName, mp3)
45
- else
46
- Weixin.text_msg(msg.ToUserName, msg.FromUserName, '这件商品暂时缺货~~')
47
- end
48
- end
49
-
50
- def image_parse(msg)
51
- item = Weixin.item(
52
- '发现一个基于sinatra的web框架padrino',
53
- 'gem install padrino
54
- padrino g project myapp -d datamapper -b
55
- cd myapp
56
- padrino g admin
57
- padrino rake dm:migrate seed
58
- padrino start',
59
- 'http://www.padrinorb.com/images/screens.jpg',
60
- 'http://www.padrinorb.com/'
61
- )
62
- Weixin.news_msg(msg.ToUserName, msg.FromUserName, [item])
63
- end
64
-
65
- def location_parse(msg)
66
- "http://maps.googleapis.com/maps/api/geocode/json?latlng=#{msg.Location_X},#{msg.Location_Y}"
67
- Weixin.text_msg(msg.ToUserName, msg.FromUserName, "#{msg.Label} 周围没有妹子~")
68
- end
69
-
70
- def link_parse(msg)
71
- # Mechanize.new.get(msg.Url) # 爬虫
72
- Weixin.text_msg(msg.ToUserName, msg.FromUserName, '这件商品暂时缺货~~')
73
- end
74
-
75
- def event_parse(msg)
76
- case msg.Event
77
- when 'subscribe' # 订阅
78
- Weixin.text_msg(msg.ToUserName, msg.FromUserName, '欢迎订阅【数字尾巴】~~')
79
- when 'unsubscribe' # 退订
80
- # 又少了名用户
81
- when 'CLICK' # 点击菜单
82
- menu_parse(msg)
83
- else
84
- Weixin.text_msg(msg.ToUserName, msg.FromUserName, '作为一名程序猿,表示压力山大~~')
85
- end
86
- end
87
-
88
- def menu_parse(msg)
89
- case msg.EventKey
90
- when 'profile'
91
- # ???
92
- Weixin.text_msg(msg.ToUserName, msg.FromUserName, '主人您的个人信息丢失啦~')
93
- else
94
- Weixin.text_msg(msg.ToUserName, msg.FromUserName, '您想来点什么?')
95
- end
96
- end
97
-
98
35
  def msg_router(msg)
99
36
  case msg.MsgType
100
37
  when 'text'
101
- text_parse(msg)
38
+ # text message handler
102
39
  when 'image'
103
- image_parse(msg)
40
+ # image message handler
104
41
  when 'location'
105
- location_parse(msg)
42
+ # location message handler
106
43
  when 'link'
107
- link_parse(msg)
44
+ # link message handler
108
45
  when 'event'
109
- event_parse(msg)
46
+ # event messge handler
110
47
  when 'voice'
111
- voice_parse(msg)
48
+ # voice message handler
112
49
  when 'video'
113
- video_parse(msg)
50
+ # video message handler
114
51
  else
115
- Weixin.text_msg(msg.ToUserName, msg.FromUserName, '作为一名程序猿,表示压力山大~~')
52
+ Weixin.text_msg(msg.ToUserName, msg.FromUserName, '未知消息类型')
116
53
  end
117
54
  end
118
55
  end
@@ -126,6 +63,8 @@ post '/your_app_root' do
126
63
 
127
64
  message = request.env[Weixin::Middleware::WEIXIN_MSG]
128
65
  logger.info "原始数据: #{request.env[Weixin::Middleware::WEIXIN_MSG_RAW]}"
66
+
67
+ # handle the message according to your business logic
129
68
  msg_router(message) unless message.nil?
130
69
  end
131
70
  ```
@@ -145,7 +84,7 @@ end
145
84
  use Weixin::Middleware, 'your api token', '/your_app_root'
146
85
 
147
86
  configure do
148
- set :wx_id, 'your_weixin_account'
87
+ set :wx_id, 'your_weixin_account'
149
88
  end
150
89
 
151
90
 
@@ -45,7 +45,7 @@ module Weixin
45
45
 
46
46
  def authenticate
47
47
  url = "#{@endpoint}/token"
48
- request = Nestful.get url, { grant_type: 'client_credential', appid: @api, secret: @key } rescue nil
48
+ request = Nestful.get url, { :grant_type => 'client_credential', :appid => @api, :secret => @key } rescue nil
49
49
  unless request.nil?
50
50
  auth = MultiJson.load(request.body)
51
51
  unless auth.has_key?('errcode')
@@ -57,4 +57,4 @@ module Weixin
57
57
  end
58
58
  end
59
59
 
60
- end
60
+ end
@@ -1,3 +1,3 @@
1
1
  module Weixin
2
- VERSION = "0.0.4.2"
2
+ VERSION = "0.0.4.3"
3
3
  end
@@ -27,4 +27,5 @@ Gem::Specification.new do |s|
27
27
 
28
28
  s.homepage = 'https://github.com/wolfg1969/rack-weixin'
29
29
  s.require_paths = %w[lib]
30
- end
30
+ s.required_ruby_version = '>= 1.8.6'
31
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rack-weixin
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4.2
4
+ version: 0.0.4.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-12-14 00:00:00.000000000 Z
12
+ date: 2014-01-06 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rack
@@ -146,6 +146,7 @@ extensions: []
146
146
  extra_rdoc_files: []
147
147
  files:
148
148
  - .gitignore
149
+ - .travis.yml
149
150
  - Gemfile
150
151
  - Gemfile.lock
151
152
  - README.md
@@ -169,7 +170,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
169
170
  requirements:
170
171
  - - ! '>='
171
172
  - !ruby/object:Gem::Version
172
- version: '0'
173
+ version: 1.8.6
173
174
  required_rubygems_version: !ruby/object:Gem::Requirement
174
175
  none: false
175
176
  requirements: