easy_wechat 0.1.1 → 0.1.7

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0003f928b22948ff59d5f02c2bd5cacd621a74e29d5de77475b367da5e18a56e
4
- data.tar.gz: de689a155969d77a44a368e58f0df45043cef9c4e1482d409afbdc9890e8b478
3
+ metadata.gz: 67b8f2d0927212ebaf1237100f09192730b3e4f0bb58a071c9055067cbbf2ff6
4
+ data.tar.gz: ab9549350f751be8be52e20f4620be974a4ffd949e17f8193d7669987b6bb226
5
5
  SHA512:
6
- metadata.gz: 0c98054b4db81e4b8081a64d05d6cd65983332779a02b7d653011ea5079589ccf0d30bc11062511e78d7ce7c693cdbac5ffd9ea133a0ae057fb89736dd8675af
7
- data.tar.gz: 680a7b40a98a414b1191f4ceb50d5301511ae30672c0f396a3ef0e18b00f994fa8e38ce58599258c5aa377e8abac458fcb37c7ec33404aad6504366484f93b13
6
+ metadata.gz: 84146eeafed0226cc224dacb9fb53e5a219d89c16e16ad92e0ad356a368310a3141babdd767a740fff19f211622cb4c4310206efb61d2e428d87f9840a8f4c81
7
+ data.tar.gz: fe36caf79273e4d934bd2c9319038aba28226c98ad434528c7af884281d698e61313ecec193231d25d657de1e5909c54e916e4296bfe354b9d327478d7275553
data/Gemfile.lock CHANGED
@@ -1,8 +1,9 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- easy_wechat (0.1.1)
4
+ easy_wechat (0.1.7)
5
5
  activesupport
6
+ http-form_data
6
7
  httpx
7
8
 
8
9
  GEM
@@ -18,7 +19,8 @@ GEM
18
19
  concurrent-ruby (1.1.9)
19
20
  diff-lcs (1.4.4)
20
21
  http-2-next (0.4.3)
21
- httpx (0.15.1)
22
+ http-form_data (2.3.0)
23
+ httpx (0.15.3)
22
24
  http-2-next (>= 0.4.1)
23
25
  timers
24
26
  i18n (1.8.10)
data/README.md CHANGED
@@ -23,12 +23,27 @@ Or install it yourself as:
23
23
  ## Usage
24
24
 
25
25
  ```
26
+ rails g easy_wechat:install
27
+
26
28
  EasyWechat.configure do |config|
27
29
  config.appid = ENV.fetch("APPID") || ""
28
30
  config.app_secret = ENV.fetch("APP_SECRET") || ""
29
31
  end
32
+
33
+ client = EasyWechat::Client.new
34
+ client.token
35
+ client.batchget_material
36
+ client.uploadimg(media)
37
+ client.add_news(articles)
38
+ client.get_user_summary(begin_date, end_date)
39
+ client.get_user_cumulate(begin_date, end_date)
30
40
  ```
31
41
 
42
+ ## FAQ
43
+ 1. 微信api,请求方式有问题,也会报错,所以要注意请求方式
44
+ 2. 先搞清楚你的appid对应的公众号是什么,并且搞清楚你是什么类型的,查看接口权限是否获得,否则有可能会有类似48001的权限未开通错误
45
+ 3. 调用api之前,请确保ip已经加入到服务器白名单
46
+
32
47
  ## Development
33
48
 
34
49
  After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
data/easy_wechat.gemspec CHANGED
@@ -29,6 +29,7 @@ Gem::Specification.new do |spec|
29
29
 
30
30
  spec.add_dependency "httpx"
31
31
  spec.add_dependency "activesupport"
32
+ spec.add_dependency "http-form_data"
32
33
 
33
34
  spec.add_development_dependency "bundler"
34
35
  spec.add_development_dependency "rake"
@@ -9,6 +9,9 @@ module EasyWechat
9
9
  BATCHGET_MATERIAL_URL = "https://api.weixin.qq.com/cgi-bin/material/batchget_material"
10
10
  UPLOADIMG_URL = "https://api.weixin.qq.com/cgi-bin/media/uploadimg"
11
11
  ADD_NEWS_URL = "https://api.weixin.qq.com/cgi-bin/material/add_news"
12
+ GET_USER_SUMMARY_URL = "https://api.weixin.qq.com/datacube/getusersummary"
13
+ GET_USER_CUMULATE_URL = "https://api.weixin.qq.com/datacube/getusercumulate"
14
+ GET_TICKET_URL = "https://api.weixin.qq.com/cgi-bin/ticket/getticket"
12
15
 
13
16
  def initialize
14
17
  end
@@ -17,6 +20,26 @@ module EasyWechat
17
20
  @access_token ||= token["access_token"]
18
21
  end
19
22
 
23
+ def get_user_summary(begin_date, end_date)
24
+ payload = { begin_date: begin_date, end_date: end_date }
25
+
26
+ resp = HTTPX.post(GET_USER_SUMMARY_URL, params: { access_token: access_token }, json: payload)
27
+
28
+ r = ::JSON.parse(resp.body, quirks_mode: true)
29
+ yield r if block_given?
30
+ r
31
+ end
32
+
33
+ def get_user_cumulate(begin_date, end_date)
34
+ payload = { begin_date: begin_date, end_date: end_date }
35
+
36
+ resp = HTTPX.post(GET_USER_CUMULATE_URL, params: { access_token: access_token }, json: payload)
37
+
38
+ r = ::JSON.parse(resp.body, quirks_mode: true)
39
+ yield r if block_given?
40
+ r
41
+ end
42
+
20
43
  # 获取access_token
21
44
  # https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Get_access_token.html
22
45
  def token
@@ -31,13 +54,20 @@ module EasyWechat
31
54
  r
32
55
  end
33
56
 
34
- # 上传图文消息内的图片获取URL
57
+ # 新增永久图文素材
35
58
  # https://developers.weixin.qq.com/doc/offiaccount/Asset_Management/Adding_Permanent_Assets.html
36
- def uploadimg(media)
37
- # https://honeyryderchuck.gitlab.io/httpx/wiki/Multipart-Uploads.html#notes
38
- file = if media.is_a?(String) ? HTTP::FormData::File.new(media) : meida
59
+ def add_news(articles)
60
+ payload = { articles: articles }
39
61
 
40
- resp = HTTPX.plugin(:multipart).post(UPLOADIMG_URL, params: { access_token: access_token }, form: { media: file })
62
+ resp = HTTPX.post(ADD_NEWS_URL, params: { access_token: access_token }, json: payload)
63
+
64
+ r = ::JSON.parse(resp.body, quirks_mode: true)
65
+ yield r if block_given?
66
+ r
67
+ end
68
+
69
+ def get_ticket(type)
70
+ resp = HTTPX.get(GET_TICKET_URL, params: { access_token: access_token, type: type })
41
71
 
42
72
  r = ::JSON.parse(resp.body, quirks_mode: true)
43
73
  yield r if block_given?
@@ -58,12 +88,12 @@ module EasyWechat
58
88
  r
59
89
  end
60
90
 
61
- # 新增永久图文素材
91
+ # 上传图文消息内的图片获取URL
62
92
  # https://developers.weixin.qq.com/doc/offiaccount/Asset_Management/Adding_Permanent_Assets.html
63
- def add_news(articles)
64
- payload = { articles: articles }
65
-
66
- resp = HTTPX.post(ADD_NEWS_URL, params: { access_token: access_token }, json: payload)
93
+ def uploadimg(media)
94
+ # https://honeyryderchuck.gitlab.io/httpx/wiki/Multipart-Uploads.html#notes
95
+ file = media.is_a?(String) ? HTTP::FormData::File.new(media) : media.path
96
+ resp = HTTPX.plugin(:multipart).post(UPLOADIMG_URL, params: { access_token: access_token }, form: { media: file })
67
97
 
68
98
  r = ::JSON.parse(resp.body, quirks_mode: true)
69
99
  yield r if block_given?
@@ -1,3 +1,3 @@
1
1
  module EasyWechat
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.7"
3
3
  end
@@ -0,0 +1,20 @@
1
+ module EasyWechat
2
+ module Generators
3
+ class InstallGenerator < Rails::Generators::Base
4
+ desc "EasyWechat installation: initializer"
5
+ source_root File.expand_path("../../templates", __FILE__)
6
+
7
+ def install
8
+ puts "==> generate initializer file ..."
9
+ copy_initializer
10
+ puts "Done!"
11
+ end
12
+
13
+ private
14
+
15
+ def copy_initializer
16
+ template "initializer.rb", "config/initializers/easy_wechat.rb"
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,4 @@
1
+ EasyWechat.configure do |config|
2
+ # config.appid = ENV.fetch("APPID") || ""
3
+ # config.app_secret = ENV.fetch("APP_SECRET") || ""
4
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: easy_wechat
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - 42up
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-06-30 00:00:00.000000000 Z
11
+ date: 2021-07-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httpx
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: http-form_data
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: bundler
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -116,6 +130,8 @@ files:
116
130
  - lib/easy_wechat/client.rb
117
131
  - lib/easy_wechat/configuration.rb
118
132
  - lib/easy_wechat/version.rb
133
+ - lib/generators/easy_wechat/install_generator.rb
134
+ - lib/generators/templates/initializer.rb
119
135
  homepage: https://github.com/42up/easy_wechat
120
136
  licenses:
121
137
  - MIT