imwukong 0.1.4 → 0.1.5
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 +4 -4
- data/Gemfile.lock +4 -7
- data/README.md +1 -1
- data/imwukong.gemspec +1 -1
- data/lib/imwukong/api.rb +15 -1
- data/lib/imwukong/base.rb +21 -37
- data/lib/imwukong/version.rb +1 -1
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 646a6144178082387c93319db9fe27f04f89733c
|
4
|
+
data.tar.gz: a09298d354196e1afdbcbc3b0bf30445e4ab2f24
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 64528f4879b345a808a8432bdbfaf40c72a613b5a5213899b37b77f4a51ef10b9b1d51b0d5b181be2d8c31598239808ed1131bd650fc8b8ada6dc5257a64d738
|
7
|
+
data.tar.gz: f49e656fb60f748696029f76d6e5f730eff76955ac0e2984da9c02c731417735582c9b1839a2b00dea01e3f1a2e5836ee796fee217bf03da32727a45d2163794
|
data/Gemfile.lock
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
imwukong (0.1.
|
4
|
+
imwukong (0.1.5)
|
5
5
|
activesupport (~> 4.2.0)
|
6
|
-
|
6
|
+
httpclient (~> 2.7.0.1)
|
7
7
|
|
8
8
|
GEM
|
9
9
|
remote: https://rubygems.org/
|
@@ -15,13 +15,10 @@ GEM
|
|
15
15
|
thread_safe (~> 0.3, >= 0.3.4)
|
16
16
|
tzinfo (~> 1.1)
|
17
17
|
diff-lcs (1.2.5)
|
18
|
-
|
19
|
-
json (~> 1.8)
|
20
|
-
multi_xml (>= 0.5.2)
|
18
|
+
httpclient (2.7.0.1)
|
21
19
|
i18n (0.7.0)
|
22
20
|
json (1.8.3)
|
23
|
-
minitest (5.8.
|
24
|
-
multi_xml (0.5.5)
|
21
|
+
minitest (5.8.3)
|
25
22
|
rake (10.4.2)
|
26
23
|
rspec (3.3.0)
|
27
24
|
rspec-core (~> 3.3.0)
|
data/README.md
CHANGED
data/imwukong.gemspec
CHANGED
@@ -30,6 +30,6 @@ Gem::Specification.new do |spec|
|
|
30
30
|
spec.add_development_dependency "bundler", "~> 1.10"
|
31
31
|
spec.add_development_dependency "rake", "~> 10.0"
|
32
32
|
spec.add_development_dependency "rspec"
|
33
|
-
spec.add_dependency "
|
33
|
+
spec.add_dependency "httpclient", "~> 2.7.0.1"
|
34
34
|
spec.add_dependency "activesupport", "~> 4.2.0"
|
35
35
|
end
|
data/lib/imwukong/api.rb
CHANGED
@@ -5,6 +5,14 @@ module Imwukong
|
|
5
5
|
STATUS_FOLLOW_BY = 1 # 被关注
|
6
6
|
STATUS_BI_FOLLOW = 2 # 双向关系
|
7
7
|
|
8
|
+
# api description
|
9
|
+
# method_group: string, 接口分组名
|
10
|
+
# method_pluralize: boolean, 接口名是否为复数形式, 默认为false
|
11
|
+
# method_name: 接口名
|
12
|
+
# prefix: url前缀, 默认是'v1/im',
|
13
|
+
# url: 接口url
|
14
|
+
# args: 参数列表, symbol array
|
15
|
+
# default: 可选参数的默认值, 调用时可以不用传
|
8
16
|
API_LIST = [
|
9
17
|
# 用户
|
10
18
|
{
|
@@ -46,7 +54,12 @@ module Imwukong
|
|
46
54
|
method_name: 'create',
|
47
55
|
method_pluralize: false,
|
48
56
|
http_method: :post,
|
49
|
-
url: 'create'
|
57
|
+
url: 'create',
|
58
|
+
args: [:openId, :type, :icon, :title, :members],
|
59
|
+
default: {
|
60
|
+
icon: '',
|
61
|
+
title: ''
|
62
|
+
}
|
50
63
|
},
|
51
64
|
{
|
52
65
|
# 查询聊天会话的概要信息
|
@@ -452,6 +465,7 @@ module Imwukong
|
|
452
465
|
method_name = "wk_#{method_group}_#{api[:method_name]}"
|
453
466
|
fail "Method #{method_name} already defined" if respond_to?(method_name)
|
454
467
|
define_method method_name do |params|
|
468
|
+
params.merge!(api[:default]||{})
|
455
469
|
check_params(params, api[:args]||[])
|
456
470
|
self.send "wk_#{api[:http_method]}", method_group, api[:url], api[:prefix]||'v1/im', params
|
457
471
|
end
|
data/lib/imwukong/base.rb
CHANGED
@@ -1,63 +1,48 @@
|
|
1
|
-
require '
|
1
|
+
require 'httpclient'
|
2
2
|
require 'digest'
|
3
|
+
require 'json'
|
3
4
|
|
4
5
|
module Imwukong
|
5
6
|
class Base
|
6
|
-
include HTTParty
|
7
|
-
# include Api::User
|
8
|
-
# include Api::Conversation
|
9
|
-
# include Api::Message
|
10
|
-
# include Api::Follow
|
11
|
-
# include Api::Upload
|
12
|
-
# include Api::Push
|
13
7
|
|
14
|
-
DEFAULT_OPTIONS = { api_version: 'v1' }
|
15
8
|
DEV_HOST = 'https://sandbox-wkapi.laiwang.com'.freeze
|
16
9
|
PRODUCTION_HOST = "https://wkapi.laiwang.com"
|
17
10
|
|
18
11
|
def initialize(app_domain = Imwukong.config[:domain],
|
19
12
|
app_token = Imwukong.config[:server][:app_token])
|
20
13
|
fail 'app domain/token is invalid' unless app_domain.present? && app_token.present?
|
21
|
-
@app_domain
|
22
|
-
@app_token
|
23
|
-
@
|
14
|
+
@app_domain = app_domain.strip
|
15
|
+
@app_token = app_token.strip
|
16
|
+
@http_client = HTTPClient.new
|
24
17
|
end
|
25
18
|
|
26
19
|
def wk_post(type, method, prefix='v1/im', params)
|
27
|
-
|
28
|
-
|
29
|
-
headers: wukong_header
|
30
|
-
}
|
31
|
-
prefix ||= 'v1/im'
|
32
|
-
result = self.class.send(:post, get_request_url(type, method, prefix), options) rescue nil
|
20
|
+
prefix ||= 'v1/im'
|
21
|
+
result = @http_client.post(get_request_url(type, method, prefix), params.to_json, wukong_header) rescue nil
|
33
22
|
handle_response(result)
|
34
23
|
end
|
35
24
|
|
36
25
|
def wk_get(type, method, prefix='v1/im', params)
|
37
|
-
|
38
|
-
|
39
|
-
headers: wukong_header
|
40
|
-
}
|
41
|
-
prefix ||= 'v1/im'
|
42
|
-
result = self.class.send(:get, get_request_url(type, method, prefix), options) rescue nil
|
26
|
+
prefix ||= 'v1/im'
|
27
|
+
result = @http_client.get(get_request_url(type, method, prefix), params, wukong_header) rescue nil
|
43
28
|
handle_response(result)
|
44
29
|
end
|
45
30
|
|
46
|
-
# def safe_json_parse(data)
|
47
|
-
# warn data.inspect
|
48
|
-
# JSON.parse(data)
|
49
|
-
# # rescue TypeError which will cause 'no implicit conversion of HTTParty::Response into String'
|
50
|
-
# rescue JSON::ParserError, TypeError
|
51
|
-
# {}
|
52
|
-
# end
|
53
|
-
|
54
31
|
private
|
55
32
|
|
33
|
+
def safe_json_parse(data)
|
34
|
+
JSON.parse(data)
|
35
|
+
# rescue TypeError which will cause 'no implicit conversion of HTTParty::Response into String'
|
36
|
+
rescue JSON::ParserError, TypeError
|
37
|
+
warn data.inspect
|
38
|
+
{}
|
39
|
+
end
|
40
|
+
|
56
41
|
def handle_response(result)
|
42
|
+
# warn result.inspect
|
57
43
|
fail 'No respond from server' if result.nil?
|
58
|
-
|
59
|
-
r = result.
|
60
|
-
fail result.inspect unless result.code == 200
|
44
|
+
fail "Request fail, return code:#{result.code}" unless result.ok?
|
45
|
+
r = safe_json_parse(result.body)
|
61
46
|
fail "#{r['errorCode']}, #{r['errorMessage']}" if r['success'] == false
|
62
47
|
r['data']
|
63
48
|
end
|
@@ -67,7 +52,7 @@ module Imwukong
|
|
67
52
|
end
|
68
53
|
|
69
54
|
def get_request_url(type, method, prefix='v1/im')
|
70
|
-
warn "#{wukong_host}/#{prefix}/#{type}/#{method}"
|
55
|
+
# warn "#{wukong_host}/#{prefix}/#{type}/#{method}"
|
71
56
|
"#{wukong_host}/#{prefix}/#{type}/#{method}"
|
72
57
|
end
|
73
58
|
|
@@ -76,7 +61,6 @@ module Imwukong
|
|
76
61
|
@nonce = rand(100000..200000).to_s
|
77
62
|
array = [token, @timestamp, @nonce].sort
|
78
63
|
sign = Digest::SHA1.hexdigest(array.join)
|
79
|
-
warn "Sign: #{sign}"
|
80
64
|
sign
|
81
65
|
end
|
82
66
|
|
data/lib/imwukong/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: imwukong
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Danny Xu
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-12-
|
11
|
+
date: 2015-12-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -53,19 +53,19 @@ dependencies:
|
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: httpclient
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
61
|
+
version: 2.7.0.1
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
68
|
+
version: 2.7.0.1
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: activesupport
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|