easy_wechat 0.1.0 → 0.1.6

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: 7364b15bfaffdfbd425ee3da00578995dc16dbddabc922e51bd369766524a311
4
- data.tar.gz: 8b356a8c3e57f5ce4e1a9d1f16b8a30d751476428f763aae57681b18ad8db2bb
3
+ metadata.gz: ccc93ec4d83d3f2b3b45a514b9297b76ee395fbe8aebbceef0387cd4a422d491
4
+ data.tar.gz: 9a89ebd838cb835625acb977c1145ef2edfb62250de62adbfa22527e15a5bd97
5
5
  SHA512:
6
- metadata.gz: 709aa701cff058d7ccf341442d27fab92c6840d160da6f79e30cf5115896fcc1952067b3cdc22fab4b9e87bb9ebcbe85c20f4c9d522b7fc2f4775b478c7dfc81
7
- data.tar.gz: b9715e4797ed0fed1b6b8d5bffcd36d943affd89157cb22296f8d173d21aa3a652e5f28fefc5b384df66e53ceb5831950c93e93a98a4c506285dfbd46e11610e
6
+ metadata.gz: 24929f3e1b1ed83e6f57fc167a4c2aa76404b968e6c73f64cf42b99124b35d185ef67d59ba5cee23fcc7a0fe40bc2e1790bfe354c16fb8e06eaee433aa4d7397
7
+ data.tar.gz: aa1b2c8ae2679b0b3d080c8389e71d562275e612f0bebc617b59f323ad051e3e823745db403ab9d15a4175fc6e21a99adfb62f280b4e78864f9cec50da73fea6
data/Gemfile.lock CHANGED
@@ -1,8 +1,9 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- easy_wechat (0.1.0)
4
+ easy_wechat (0.1.6)
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
@@ -22,7 +22,27 @@ Or install it yourself as:
22
22
 
23
23
  ## Usage
24
24
 
25
- TODO: Write usage instructions here
25
+ ```
26
+ rails g easy_wechat:install
27
+
28
+ EasyWechat.configure do |config|
29
+ config.appid = ENV.fetch("APPID") || ""
30
+ config.app_secret = ENV.fetch("APP_SECRET") || ""
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)
40
+ ```
41
+
42
+ ## FAQ
43
+ 1. 微信api,请求方式有问题,也会报错,所以要注意请求方式
44
+ 2. 先搞清楚你的appid对应的公众号是什么,并且搞清楚你是什么类型的,查看接口权限是否获得,否则有可能会有类似48001的权限未开通错误
45
+ 3. 调用api之前,请确保ip已经加入到服务器白名单
26
46
 
27
47
  ## Development
28
48
 
data/easy_wechat.gemspec CHANGED
@@ -6,8 +6,8 @@ Gem::Specification.new do |spec|
6
6
  spec.authors = ["42up"]
7
7
  spec.email = ["foobar@v2up.com"]
8
8
 
9
- spec.summary = "easy wechat sdk"
10
- spec.description = "easy wechat sdk"
9
+ spec.summary = "An unofficial easy wechat sdk"
10
+ spec.description = "An unofficial easy wechat sdk"
11
11
  spec.homepage = "https://github.com/42up/easy_wechat"
12
12
  spec.license = "MIT"
13
13
  spec.required_ruby_version = Gem::Requirement.new(">= 2.3.0")
@@ -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"
data/lib/easy_wechat.rb CHANGED
@@ -1,7 +1,32 @@
1
1
  require "easy_wechat/version"
2
+ require "easy_wechat/client"
3
+ require "easy_wechat/configuration"
4
+
5
+ require "httpx"
2
6
 
3
7
  module EasyWechat
4
8
  class Error < StandardError; end
5
- # Your code goes here...
6
- puts "foo"
9
+ def self.configuration
10
+ @configuration ||= Configuration.new
11
+ end
12
+
13
+ class << self
14
+ attr_writer :configuration
15
+
16
+ def configuration
17
+ @configuration ||= Configuration.new
18
+ end
19
+
20
+ def configure
21
+ yield(configuration)
22
+ end
23
+
24
+ def app_id
25
+ configuration.app_id
26
+ end
27
+
28
+ def app_secret
29
+ configuration.app_secret
30
+ end
31
+ end
7
32
  end
@@ -0,0 +1,107 @@
1
+ require "httpx"
2
+ require "http/form_data"
3
+ require "json"
4
+ require "active_support"
5
+
6
+ module EasyWechat
7
+ class Client
8
+ TOKEN_URL = "https://api.weixin.qq.com/cgi-bin/token"
9
+ BATCHGET_MATERIAL_URL = "https://api.weixin.qq.com/cgi-bin/material/batchget_material"
10
+ UPLOADIMG_URL = "https://api.weixin.qq.com/cgi-bin/media/uploadimg"
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"
15
+
16
+ def initialize
17
+ end
18
+
19
+ def access_token
20
+ @access_token ||= token["access_token"]
21
+ end
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
+
43
+ # 获取access_token
44
+ # https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Get_access_token.html
45
+ def token
46
+ resp = HTTPX.get(TOKEN_URL, params: {
47
+ appid: EasyWechat.app_id,
48
+ secret: EasyWechat.app_secret,
49
+ grant_type: "client_credential",
50
+ })
51
+
52
+ r = ::JSON.parse(resp.body, quirks_mode: true)
53
+ yield r if block_given?
54
+ r
55
+ end
56
+
57
+ # 新增永久图文素材
58
+ # https://developers.weixin.qq.com/doc/offiaccount/Asset_Management/Adding_Permanent_Assets.html
59
+ def add_news(articles)
60
+ payload = { articles: articles }
61
+
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 })
71
+
72
+ r = ::JSON.parse(resp.body, quirks_mode: true)
73
+ yield r if block_given?
74
+ r
75
+ end
76
+
77
+ # 获取永久素材的列表
78
+ # https://developers.weixin.qq.com/doc/offiaccount/Asset_Management/Get_materials_list.html
79
+ def batchget_material(type = "image", offset = 0, count = 20)
80
+ # TODO: 检查参数完整性
81
+ # TODO: 检查参数合法性
82
+ payload = { type: type, offset: offset, count: count }
83
+
84
+ resp = HTTPX.post(BATCHGET_MATERIAL_URL, params: { access_token: access_token }, json: payload)
85
+
86
+ r = ::JSON.parse(resp.body, quirks_mode: true)
87
+ yield r if block_given?
88
+ r
89
+ end
90
+
91
+ # 上传图文消息内的图片获取URL
92
+ # https://developers.weixin.qq.com/doc/offiaccount/Asset_Management/Adding_Permanent_Assets.html
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) : meida
96
+ resp = HTTPX.plugin(:multipart).post(UPLOADIMG_URL, params: { access_token: access_token }, form: { media: file })
97
+
98
+ r = ::JSON.parse(resp.body, quirks_mode: true)
99
+ yield r if block_given?
100
+ r
101
+ end
102
+
103
+ def menu_create
104
+ raise NotImplementedError
105
+ end
106
+ end
107
+ end
@@ -0,0 +1,10 @@
1
+ module EasyWechat
2
+ class Configuration
3
+ attr_accessor :app_id, :app_secret
4
+
5
+ def initialize
6
+ @app_id = ""
7
+ @app_secret = ""
8
+ end
9
+ end
10
+ end
@@ -1,3 +1,3 @@
1
1
  module EasyWechat
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.6"
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.0
4
+ version: 0.1.6
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-28 00:00:00.000000000 Z
11
+ date: 2021-07-20 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
@@ -94,7 +108,7 @@ dependencies:
94
108
  - - ">="
95
109
  - !ruby/object:Gem::Version
96
110
  version: '0'
97
- description: easy wechat sdk
111
+ description: An unofficial easy wechat sdk
98
112
  email:
99
113
  - foobar@v2up.com
100
114
  executables: []
@@ -113,7 +127,11 @@ files:
113
127
  - bin/setup
114
128
  - easy_wechat.gemspec
115
129
  - lib/easy_wechat.rb
130
+ - lib/easy_wechat/client.rb
131
+ - lib/easy_wechat/configuration.rb
116
132
  - lib/easy_wechat/version.rb
133
+ - lib/generators/easy_wechat/install_generator.rb
134
+ - lib/generators/templates/initializer.rb
117
135
  homepage: https://github.com/42up/easy_wechat
118
136
  licenses:
119
137
  - MIT
@@ -139,5 +157,5 @@ requirements: []
139
157
  rubygems_version: 3.1.4
140
158
  signing_key:
141
159
  specification_version: 4
142
- summary: easy wechat sdk
160
+ summary: An unofficial easy wechat sdk
143
161
  test_files: []