rong_cloud_server 0.0.2 → 0.1.0

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: 6f18dffa1673ff35d013c644ec931c44af2f5931
4
- data.tar.gz: 7d63b3bee76e8106091e92753f4ad8f2ec48ea05
3
+ metadata.gz: 82f88e70a08efe992ba2736c8db0ab8b4425589a
4
+ data.tar.gz: d9efa695a5402e686f0d942836dcd4d6c027874e
5
5
  SHA512:
6
- metadata.gz: 2366fd2761501b3e14a03b5c8e27c0f31c8086a749d5409bae58704f7d2c998578ed1759aed4ce45875e2a266ba3efebaa792a96959153bbb7dbcc440b41a700
7
- data.tar.gz: d6822867ea92aff168a5641df355deb9bc461d71c8f6af4280c7aacba4761742c837891b910b936774ec6576c0128d1e671dc889c09d0fc50405191f31dc2d6c
6
+ metadata.gz: 964d72d2a924d9e8b5c11328fd67fc4a90fae37cede3640c3b18ebd6bef3a241d5fece396b802aeb1c35fb82e10dad66c72ceff003595b95277723467ea4e888
7
+ data.tar.gz: 4ab2768d2e86928f927ef3b5da23bbe1d82aaf36240f73703599d9e0cb294b91ddbabc003ae2926e02cdbfd8e162e1d5a35bc709cf92f797c26646a02b22b9dd
data/README.md CHANGED
@@ -1,37 +1,50 @@
1
- 融云 Server SDK
1
+ [RongCloud](http://rongcloud.cn/) Server API SDK in Ruby
2
2
  ===
3
3
 
4
- gem 实现了[融云 Server API](http://www.rongcloud.cn/docs/server.html)的大部分接口的 Ruby 实现。
4
+ To view the README in Chinese, visit [README.zh-CN.md](./README.zh-CN.md)
5
+
6
+ This repository implements most essential apis for [RongCloud Server API](http://www.rongcloud.cn/docs/server.html) in Ruby programming language.
5
7
 
6
8
  ### Getting Started
7
- 1. 安装此 gem
8
- 2. 在项目中添加配置:
9
+ 1. Install the gem:
10
+
11
+ ```sh
12
+ $ gem install rong_cloud_server
13
+ ```
14
+
15
+ or, install it in Gemfile:
16
+
17
+ ```ruby
18
+ gem 'rong_cloud_server', '~> 0.0.2'
19
+ ```
20
+
21
+ 2. Append the following configurations in a initializer file:
9
22
 
10
23
  ```ruby
11
24
  RongCloud.configure do |config|
12
25
  config.app_key = "APP_KEY"
13
26
  config.secret_key = "SECRET_KEY"
14
- config.host = "http://api.cn.ronghub.com" # default: https://api.cn.ronghub.com, use http is convenient for debugging
27
+ config.host = "http://api.cn.ronghub.com" # default: https://api.cn.ronghub.com, use http here is just convenient for debugging
15
28
  end
16
29
  ```
17
- 3. 通过 service 对象使用:
30
+ 3. Use the instance of `RongCloud::Service` to talk to RongCloud Server:
18
31
 
19
32
  ```ruby
20
33
  service = RongCloud::Service.new
21
34
 
22
- # 更多方法,请查看测试用例 https://github.com/Martin91/rong_cloud/tree/master/test/rong_cloud/services
35
+ # Find more usage from test files under https://github.com/Martin91/rong_cloud/tree/master/test/rong_cloud/services
23
36
  service.get_token(..., ..., ...)
24
37
  ```
25
38
 
26
- ### 特点
27
- 1. **轻量**:无其他依赖;
28
- 2. **简洁**:不过分封装,仅做必要的请求实现,使用方自行处理响应的 JSON 解析后的 Hash 对象,各字段释义请自行查阅融云文档;
29
- 3. **丰富的异常类型**:针对不同的 HTTP 状态码,抛出相对应的异常类型,同时可以通过异常对象的 `business_code` 方法获取错误业务码,可以参考[request test 的代码](https://github.com/Martin91/rong_cloud/blob/master/test/rong_cloud/request_test.rb)
39
+ ### Features
40
+ 1. **Lightweight**:No other third-party gems dependences;
41
+ 2. **Straight and Simple**:Just wrap api connections in Ruby, no any DSL and so that you do not learn too many new syntax, no any process on response;
42
+ 3. **Detailed Exceptions**:Detailed and different exceptions according to the http status code,and you can get the [detailed error code](http://www.rongcloud.cn/docs/server.html#业务返回码), officially defined by RongCloud, through calling the extended method `business_code` on a exception, please refer to [request test](https://github.com/Martin91/rong_cloud/blob/master/test/rong_cloud/request_test.rb).
43
+
44
+ ### How to work with Realtime Message Forward or Online Status Subscription
45
+ Just include `RongCloud::Signature` in your codes to validate api signature and then parse params.
30
46
 
31
- ### TODOs for v0.1.0
32
- 1. 实时消息路由;
33
- 2. 消息历史记录;
34
- 3. 在线状态订阅。
47
+ More infos about parameters, refer to the [official documents](http://www.rongcloud.cn/docs/server.html#服务端实时消息路由).
35
48
 
36
49
  ### How to contribute
37
50
  1. Fork this repo;
data/README.zh-CN.md ADDED
@@ -0,0 +1,50 @@
1
+ 融云 Server SDK
2
+ ===
3
+
4
+ 此 gem 实现了[融云 Server API](http://www.rongcloud.cn/docs/server.html)的大部分接口的 Ruby 实现。
5
+
6
+ ### Getting Started
7
+ 1. 安装此 gem:
8
+
9
+ ```ruby
10
+ $ gem install rong_cloud_server
11
+ ```
12
+
13
+ or, install in Gemfile:
14
+
15
+ ```ruby
16
+ gem 'rong_cloud_server', '~> 0.0.2'
17
+ ```
18
+
19
+ 2. 在项目中添加配置:
20
+
21
+ ```ruby
22
+ RongCloud.configure do |config|
23
+ config.app_key = "APP_KEY"
24
+ config.app_secret = "SECRET_KEY"
25
+ config.host = "http://api.cn.ronghub.com" # default: https://api.cn.ronghub.com, use http is convenient for debugging
26
+ end
27
+ ```
28
+ 3. 通过 service 对象使用:
29
+
30
+ ```ruby
31
+ service = RongCloud::Service.new
32
+
33
+ # 更多方法,请查看测试用例 https://github.com/Martin91/rong_cloud/tree/master/test/rong_cloud/services
34
+ service.get_token(..., ..., ...)
35
+ ```
36
+
37
+ ### 特点
38
+ 1. **轻量**:无其他依赖;
39
+ 2. **简洁**:不过分封装,仅做必要的请求实现,使用方自行处理响应的 JSON 解析后的 Hash 对象,各字段释义请自行查阅融云文档;
40
+ 3. **丰富的异常类型**:针对不同的 HTTP 状态码,抛出相对应的异常类型,同时可以通过异常对象的 `business_code` 方法获取错误业务码,可以参考[request test 的代码](https://github.com/Martin91/rong_cloud/blob/master/test/rong_cloud/request_test.rb)。
41
+
42
+ ### TODOs for v0.1.0
43
+ 1. 实时消息路由;
44
+ 2. 消息历史记录;
45
+ 3. 在线状态订阅。
46
+
47
+ ### How to contribute
48
+ 1. Fork this repo;
49
+ 2. Write your code and test;
50
+ 3. Open a new Pull Request.
data/lib/rong_cloud.rb CHANGED
@@ -3,9 +3,9 @@ require 'rong_cloud/errors'
3
3
  require 'rong_cloud/service'
4
4
  require 'core_ext/array'
5
5
 
6
- # 融云 Ruby SDK 的全局命名空间
6
+ # global namespace for this SDK
7
7
  module RongCloud
8
- # 配置融云 Server 连接信息
8
+ # Use this method for connection settings
9
9
  #
10
10
  def self.configure(&block)
11
11
  yield RongCloud::Configuration
@@ -1,22 +1,22 @@
1
1
  require "logger"
2
2
 
3
3
  module RongCloud
4
- # 管理融云 SDK 连接配置信息
4
+ # The main class to maintain connection settings
5
5
  #
6
6
  module Configuration
7
- # 默认 API 服务器,使用 https
7
+ # The default host to accept connections, use a https protocol
8
8
  DEFAULT_HOST = "https://api.cn.ronghub.com".freeze
9
9
 
10
10
  module ModuleMethods
11
11
  attr_accessor :app_key, :app_secret, :host, :logger
12
12
 
13
- # 获取目标主机,默认为 https://api.cn.ronghub.com
13
+ # Fetch the api host, the default is: https://api.cn.ronghub.com
14
14
  #
15
15
  def host
16
16
  @host || DEFAULT_HOST
17
17
  end
18
18
 
19
- # 获取日志文件对象,默认日志文件为标准输出
19
+ # Fetch the logger, the default is STDOUT
20
20
  def logger
21
21
  @logger || default_logger
22
22
  end
@@ -1,33 +1,25 @@
1
1
  module RongCloud
2
- # 不支持的消息类型错误
3
2
  class UnsupportedMessageChannelName < ::StandardError;end
4
- # 缺少必传参数
3
+ # Missing required settings for setup this gem
5
4
  class MissingOptionError < ::StandardError;end
6
- # 与融云接口请求相关的基本错误类型,其他错误类型继承此类型
5
+ # The root exception for those related to RongCloud API
7
6
  class RequestError < ::StandardError
8
7
  # @!attribute [rw] business_code
9
- # 接口错误时的业务返回码,详见:http://www.rongcloud.cn/docs/server.html#API_方法返回值说明
8
+ # extended attribute, recording the return codes defined by RongCloud,
9
+ # View http://www.rongcloud.cn/docs/server.html#API_方法返回值说明
10
10
  attr_accessor :business_code
11
11
  end
12
12
 
13
- # 错误请求
14
13
  class BadRequest < RequestError;end
15
- # 验证错误
16
14
  class AuthenticationFailed < RequestError;end
17
- # 被拒绝
18
15
  class RequestForbidden < RequestError;end
19
- # 资源不存在
20
16
  class ResourceNotFound < RequestError;end
21
- # 群上限
17
+ # Exceed group members limit
22
18
  class ExceedLimit < RequestError;end
23
- # 过多的请求
24
19
  class TooManyRequests < RequestError;end
25
- # 内部服务器错误
26
20
  class InternalServerError < RequestError;end
27
- # 内部服务器响应超时
28
21
  class Timeout < RequestError;end
29
22
 
30
- # 融云服务器响应状态码到 Ruby 错误类型的映射
31
23
  HTTP_CODE_TO_ERRORS_MAP = {
32
24
  "400" => BadRequest,
33
25
  "401" => AuthenticationFailed,
@@ -3,17 +3,17 @@ require 'json'
3
3
  require 'rong_cloud/signature'
4
4
 
5
5
  module RongCloud
6
- # 请求封装类,所有请求基于 Net::HTTP,自动支持 http 或者 https
6
+ # Handle api request, based on Ruby's built-in Net::HTTP,
7
+ # support both HTTP and HTTPS
7
8
  #
8
9
  module Request
9
10
  include Signature
10
11
 
11
- # 执行请求
12
- # @param path [String] 请求 API 的相对路径
13
- # @param params [Hash] 请求的参数
14
- # @param content_type [Symbol] 请求数据编码格式,:form_data 或者 :json,默认 :form_data
15
- # @return [Hash] JSON 解析后的响应数据
16
- # @raise [RongCloud::BadRequest] 请求参数有误,缺失或者不正确等,详见官方文档
12
+ # @param path [String] The api endpoint
13
+ # @param params [Hash] api params
14
+ # @param content_type [Symbol] required formatting for request data, :form_data or :json
15
+ # @return [Hash] the parsed response represented by JSON
16
+ # @raise [RongCloud::BadRequest] when request params is invalid or other situations
17
17
  def request(path, params = nil, content_type = :form_data)
18
18
  uri = get_uri(path)
19
19
  req = initialize_request(uri, params, content_type)
@@ -26,22 +26,22 @@ module RongCloud
26
26
  end
27
27
 
28
28
  private
29
- # 拼接请求的接口的路径
29
+ # construct the api endpoint url
30
30
  #
31
- # @param path [String] 接口的相对路径,e.g. "/user/getToken" 或者 "user/getToken",代码中自动处理开头的斜杠
32
- # @return [URI] 请求全路径生成的 URI 对象,自动追加 .json 格式扩展名
31
+ # @param path [String] the relative path for api endpoint,e.g. "/user/getToken" or "user/getToken"
32
+ # @return [URI] full url for the endpoint
33
33
  #
34
34
  def get_uri(path)
35
35
  url = "#{RongCloud::Configuration.host}/#{path.gsub(/^\//, "")}"
36
36
  URI(url.end_with?(".json") ? url : "#{url}.json")
37
37
  end
38
38
 
39
- # 实例化请求对象
39
+ # construct a new request
40
40
  #
41
- # @param uri [URI] 请求路径对象
42
- # @param params [Hash] 请求的参数,所有参数通过 form encoded data 方式发送
43
- # @param content_type [Symbol] 请求数据编码格式,:form_data 或者 :json
44
- # @return [Net::HTTP::Post] 请求的实例
41
+ # @param uri [URI] the relative path for api endpoint
42
+ # @param params [Hash] the request params
43
+ # @param content_type [Symbol] required formatting for request data, :form_data or :json
44
+ # @return [Net::HTTP::Post] the request object
45
45
  #
46
46
  def initialize_request(uri, params, content_type)
47
47
  req = Net::HTTP::Post.new(uri)
@@ -58,11 +58,11 @@ module RongCloud
58
58
  req
59
59
  end
60
60
 
61
- # 解析响应数据,包含错误检测
61
+ # parse the raw response
62
62
  #
63
- # @param res [HTTPResponse] 响应结果的实例
64
- # @return [Hash] JSON 解析后的响应正文
65
- # @raise [RongCloud::BadRequest] 请求参数有误,缺失或者不正确等,详见官方文档
63
+ # @param res [HTTPResponse] the response
64
+ # @return [Hash] response data parsed as JSON
65
+ # @raise [RongCloud::BadRequest] when params are invalid or other situations
66
66
  #
67
67
  def handle_response(res)
68
68
  json = JSON.parse(res.body)
@@ -4,14 +4,14 @@ require 'rong_cloud/services/message'
4
4
  require 'rong_cloud/services/wordfilter'
5
5
  require 'rong_cloud/services/group'
6
6
  require 'rong_cloud/services/chatroom'
7
+ require 'rong_cloud/services/history_message'
7
8
 
8
9
  module RongCloud
9
- # 封装所有接口的 Service 类,所有业务接口通过 Service 的实例完成调用
10
- #
11
10
  class Service
12
11
  include RongCloud::Request
13
12
  include RongCloud::Services::User
14
13
  include RongCloud::Services::Message
14
+ include RongCloud::Services::HistoryMessage
15
15
  include RongCloud::Services::Wordfilter
16
16
  include RongCloud::Services::Group
17
17
  include RongCloud::Services::Chatroom
@@ -1,10 +1,11 @@
1
1
  module RongCloud
2
2
  module Services
3
- # 聊天室服务相关接口 http://www.rongcloud.cn/docs/server.html#聊天室服务
3
+ # apis for chatroom http://www.rongcloud.cn/docs/server.html#聊天室服务
4
4
  module Chatroom
5
- # 创建聊天室,支持同时创建多个聊天室 http://www.rongcloud.cn/docs/server.html#创建聊天室_方法
5
+ # create a new chatroom,support creating multiple ones
6
+ # http://www.rongcloud.cn/docs/server.html#创建聊天室_方法
6
7
  #
7
- # @param chatrooms [Hash] id 为 key,聊天室名称为 value 的 Hash 实例,多个 key-value 表示多个聊天室
8
+ # @param chatrooms [Hash] created chatrooms
8
9
  #
9
10
  def create_chatroom(chatrooms)
10
11
  params = {}
@@ -13,66 +14,67 @@ module RongCloud
13
14
  request("/chatroom/create", params)
14
15
  end
15
16
 
16
- # 加入聊天室 http://www.rongcloud.cn/docs/server.html#加入聊天室_方法
17
+ # join a chatroom http://www.rongcloud.cn/docs/server.html#加入聊天室_方法
17
18
  #
18
- # @param user_id [String, Array] 一个或多个用户 id
19
- # @param chatroom_id [String] 聊天室 id
19
+ # @param user_id [String, Array] one or more user ids
20
+ # @param chatroom_id [String] the id of the chatroom
20
21
  #
21
22
  def join_chatroom(user_id, chatroom_id)
22
23
  request("/chatroom/join", userId: user_id, chatroomId: chatroom_id)
23
24
  end
24
25
 
25
- # 销毁聊天室 http://www.rongcloud.cn/docs/server.html#销毁聊天室_方法
26
+ # dismiss a chatroom http://www.rongcloud.cn/docs/server.html#销毁聊天室_方法
26
27
  #
27
- # @param chatroom_ids [String, Array] 一个或多个聊天室 id
28
+ # @param chatroom_ids [String, Array] one or more chatroom ids
28
29
  #
29
30
  def destroy_chatroom(chatroom_ids)
30
31
  request("/chatroom/destroy", chatroomId: chatroom_ids)
31
32
  end
32
33
 
33
- # 查询聊天室信息 http://www.rongcloud.cn/docs/server.html#查询聊天室信息_方法
34
+ # Query one or more chatroom details http://www.rongcloud.cn/docs/server.html#查询聊天室信息_方法
34
35
  #
35
- # @param chatroom_ids [String, Array] 一个或多个聊天室 id
36
+ # @param chatroom_ids [String, Array] one or more chatroom ids
36
37
  #
37
38
  def query_chatroom(chatroom_ids)
38
39
  request("/chatroom/query", chatroomId: chatroom_ids)
39
40
  end
40
41
 
41
- # 添加禁言聊天室成员 http://www.rongcloud.cn/docs/server.html#添加禁言聊天室成员_方法
42
+ # http://www.rongcloud.cn/docs/server.html#添加禁言聊天室成员_方法
42
43
  #
43
44
  def block_chatroom_user(chatroom_id, user_id, minute)
44
45
  request("/chatroom/user/gag/add", chatroomId: chatroom_id, userId: user_id, minute: minute)
45
46
  end
46
47
 
47
- # 移除封禁聊天室成员 http://www.rongcloud.cn/docs/server.html#移除封禁聊天室成员_方法
48
+ # http://www.rongcloud.cn/docs/server.html#移除封禁聊天室成员_方法
48
49
  #
49
50
  def unblock_chatroom_user(chatroom_id, user_id)
50
51
  request("/chatroom/user/block/rollback", chatroomId: chatroom_id, userId: user_id)
51
52
  end
52
53
 
53
- # 查询被封禁聊天室成员 http://www.rongcloud.cn/docs/server.html#查询被封禁聊天室成员_方法
54
+ # http://www.rongcloud.cn/docs/server.html#查询被封禁聊天室成员_方法
54
55
  #
55
56
  def blocked_chatroom_users(chatroom_id)
56
57
  request("/chatroom/user/block/list", chatroomId: chatroom_id)
57
58
  end
58
59
 
59
- # 查询聊天室内用户
60
+ # Fetch members list in a specified chatroom
60
61
  #
61
- # @param chatroom_id [String] 聊天室 id
62
- # @param count [String, Fixnum] 要获取的聊天室成员数,上限为 500
63
- # @param order [String] 加入聊天室的先后顺序, 1 为加入时间正序, 2 为加入时间倒序
62
+ # @param chatroom_id [String] chatroom id
63
+ # @param count [String, Fixnum] the number of members to fetch, the maximum number is 500
64
+ # @param order [String] order direction based on the time when users join the chatroom,
65
+ # 1 for asc ordering, while 2 for desc ordering
64
66
  #
65
67
  def query_chatroom_users(chatroom_id, count, order = "1")
66
68
  request("chatroom/user/query", chatroomId: chatroom_id, count: count, order: order)
67
69
  end
68
70
 
69
- # 聊天室消息停止分发 http://www.rongcloud.cn/docs/server.html#聊天室消息停止分发_方法
71
+ # http://www.rongcloud.cn/docs/server.html#聊天室消息停止分发_方法
70
72
  #
71
73
  def stop_chatroom_distribution(chatroom_id)
72
74
  request("/chatroom/message/stopDistribution", chatroomId: chatroom_id)
73
75
  end
74
76
 
75
- # 聊天室消息恢复分发 http://www.rongcloud.cn/docs/server.html#聊天室消息恢复分发_方法
77
+ # http://www.rongcloud.cn/docs/server.html#聊天室消息恢复分发_方法
76
78
  #
77
79
  def resume_chatroom_distribution(chatroom_id)
78
80
  request("/chatroom/message/resumeDistribution", chatroomId: chatroom_id)
@@ -84,12 +86,12 @@ module RongCloud
84
86
  request("/chatroom/user/whitelist/add", chatroomId: chatroom_id, userId: user_id)
85
87
  end
86
88
 
87
- # 移除聊天室白名单成员 http://www.rongcloud.cn/docs/server.html#移除聊天室白名单成员_方法
89
+ # http://www.rongcloud.cn/docs/server.html#移除聊天室白名单成员_方法
88
90
  def remove_chatroom_whitelist(chatroom_id, user_id)
89
91
  request("/chatroom/user/whitelist/remove", chatroomId: chatroom_id, userId: user_id)
90
92
  end
91
93
 
92
- # 查询聊天室白名单成员 http://www.rongcloud.cn/docs/server.html#查询聊天室白名单成员_方法
94
+ # http://www.rongcloud.cn/docs/server.html#查询聊天室白名单成员_方法
93
95
  def whitelisted_chatroom_users(chatroom_id)
94
96
  request("/chatroom/user/whitelist/query", chatroomId: chatroom_id)
95
97
  end
@@ -1,12 +1,7 @@
1
1
  module RongCloud
2
2
  module Services
3
- # 群组服务相关接口 http://www.rongcloud.cn/docs/server.html#群组服务
3
+ # http://www.rongcloud.cn/docs/server.html#群组服务
4
4
  module Group
5
- # 同步用户所属群组
6
- #
7
- # @param user_id [String] 用户在融云的 id
8
- # @param groups [Hash] 用户需要同步的群组信息,以群组 id 为键,以群组名称为值
9
- #
10
5
  def sync_group(user_id, groups)
11
6
  params = {userId: user_id}
12
7
  groups.each do |id, name|
@@ -16,55 +11,38 @@ module RongCloud
16
11
  request("/group/sync", params)
17
12
  end
18
13
 
19
- # 创建群组
20
- #
21
14
  def create_group(user_id, group_id, group_name)
22
15
  request("/group/create", userId: user_id, groupId: group_id, groupName: group_name)
23
16
  end
24
17
 
25
- # 加入群组
26
- #
27
18
  def join_group(user_id, group_id, group_name)
28
19
  request("/group/join", userId: user_id, groupId: group_id, groupName: group_name)
29
20
  end
30
21
 
31
- # 退出群组
32
- #
33
22
  def quit_group(user_id, group_id)
34
23
  request("/group/quit", userId: user_id, groupId: group_id)
35
24
  end
36
25
 
37
- # 解散群组
38
- #
39
26
  def dismiss_group(user_id, group_id)
40
27
  request("/group/dismiss", userId: user_id, groupId: group_id)
41
28
  end
42
29
 
43
- # 刷新群组信息
44
30
  def refresh_group(group_id, group_name)
45
31
  request("/group/refresh", groupId: group_id, groupName: group_name)
46
32
  end
47
33
 
48
- # 查询群成员
49
- #
50
34
  def group_members(group_id)
51
35
  request("/group/user/query", groupId: group_id)
52
36
  end
53
37
 
54
- # 添加禁言群成员
55
- #
56
38
  def block_group_member(user_id, group_id, minute)
57
39
  request("/group/user/gag/add", userId: user_id, groupId: group_id, minute: minute)
58
40
  end
59
41
 
60
- # 移除禁言群成员
61
- #
62
42
  def unblock_group_member(user_id, group_id)
63
43
  request("/group/user/gag/rollback", userId: user_id, groupId: group_id)
64
44
  end
65
45
 
66
- # 查询被禁言群成员
67
- #
68
46
  def blocked_group_members(group_id)
69
47
  request("/group/user/gag/list", groupId: group_id)
70
48
  end
@@ -0,0 +1,22 @@
1
+ module RongCloud
2
+ module Services
3
+ # http://www.rongcloud.cn/docs/server.html#消息历史记录服务
4
+ module HistoryMessage
5
+ # Get the download url for history messages within specified hour
6
+ #
7
+ # @param date [String] the date and hour represented in format "YYYYmmddHH"
8
+ #
9
+ def get_history(date)
10
+ request "/message/history", { date: date }
11
+ end
12
+
13
+ # Delete all history message whithin specified date and hour
14
+ #
15
+ # @param date [String] the date and hour represented in format "YYYYmmddHH"
16
+ #
17
+ def delete_history(date)
18
+ request "/message/history/delete", { date: date }
19
+ end
20
+ end
21
+ end
22
+ end
@@ -2,20 +2,25 @@ require 'rong_cloud/services/message/message_channel'
2
2
 
3
3
  module RongCloud
4
4
  module Services
5
- # 消息发送相关接口 http://www.rongcloud.cn/docs/server.html#消息发送服务
5
+ # http://www.rongcloud.cn/docs/server.html#消息发送服务
6
6
  module Message
7
- # 通用的发送消息方法
8
- # @param from_user_id [String] 消息发起人 id
9
- # @param target_id [String, Integer] 消息接收方,用户 id、群组 id、讨论组 id、聊天室 id
10
- # @param channel_name [String] 消息通道,表示单聊、系统、群组、讨论组、聊天室或者广播消息
11
- # @param object_name [String] 消息类型名称,内置消息类型或者自定义消息类型名称
12
- # @param [Hash] content 消息体,更多消息请看 http://www.rongcloud.cn/docs/server.html#内置消息类型表
13
- # @option content [Object] :content 消息体中的正文,如果为自定义消息,由消息消费方自行解析
14
- # @option content [Object] :extra 消息体中的附加信息,传递时为字符串,由消息消费方自行解析
15
- # @param args [Array] 额外的 1 2 个参数,1 个参数时,表示 options 参数;2 个参数时,第一个参数表示模板消息的 values,第二个参数为 options 参数
16
- # @param [Hash] options 额外选项,包含 pushContent 以及 pushData 等配置,所有支持选项根据各消息类型确定
17
- # @option options [String] :pushContent 推送通知显示的 Push 内容
18
- # @option options [Hash] :pushData 推送 payload
7
+ # General method to send messages
8
+ # @param from_user_id [String] sender id
9
+ # @param target_id [String, Integer] receiver id,might be a user id,
10
+ # group id, discussion group id or chatroom id
11
+ # @param channel_name [String] the message channel
12
+ # @param object_name [String] message type name, could be built-in or custome names
13
+ # @param [Hash] content Message object,view http://www.rongcloud.cn/docs/server.html#内置消息类型表 to learn more
14
+ # @option content [Object] :content the body of message
15
+ # @option content [Object] :extra the extras of message,passed as a string
16
+ # and should be parsed by the message consumer
17
+ # @param args [Array] additional params,when it includes only one param,
18
+ # the args is a options; when 2 params, the first one is the `values` of
19
+ # a template message, the the last one is a options
20
+ # @param [Hash] options options includes pushContent and pushData and so on,
21
+ # total supported options determined by the message type
22
+ # @option options [String] :pushContent push content
23
+ # @option options [Hash] :pushData push data as payload
19
24
  #
20
25
  def send_message(from_user_id, target_id, channel_name, object_name, content, *args)
21
26
  options = args.extract_options!
@@ -38,38 +43,30 @@ module RongCloud
38
43
  request(message_channel.api_path, params, content_type)
39
44
  end
40
45
 
41
- # 发送单聊消息 http://www.rongcloud.cn/docs/server.html#发送单聊消息_方法
42
- #
43
46
  def send_private_message(from_user_id, to_user_id, object_name, content, options = {})
44
47
  send_message(from_user_id, to_user_id, :private, object_name, content, options)
45
48
  end
46
49
 
47
- # 发送单聊模板消息 http://www.rongcloud.cn/docs/server.html#发送单聊模板消息_方法
48
50
  def send_private_template_message(from_user_id, to_user_id, object_name, content, values, options = {})
49
51
  send_message(from_user_id, to_user_id, :private_template, object_name, content, values, options)
50
52
  end
51
53
 
52
- # 发送系统消息 http://www.rongcloud.cn/docs/server.html#发送系统消息_方法
53
54
  def send_system_message(from_user_id, to_user_id, object_name, content, options = {})
54
55
  send_message(from_user_id, to_user_id, :system, object_name, content, options)
55
56
  end
56
57
 
57
- # 发送系统模板消息 http://www.rongcloud.cn/docs/server.html#发送系统模板消息_方法
58
58
  def send_system_template_message(from_user_id, to_user_id, object_name, content, values, options = {})
59
59
  send_message(from_user_id, to_user_id, :system_template, object_name, content, values, options)
60
60
  end
61
61
 
62
- # 发送群组消息 http://www.rongcloud.cn/docs/server.html#发送群组消息_方法
63
62
  def send_group_message(from_user_id, to_group_id, object_name, content, options = {})
64
63
  send_message(from_user_id, to_group_id, :group, object_name, content, options)
65
64
  end
66
65
 
67
- # 发送讨论组消息 http://www.rongcloud.cn/docs/server.html#发送讨论组消息_方法
68
66
  def send_discussion_message(from_user_id, to_discussion_id, object_name, content, options = {})
69
67
  send_message(from_user_id, to_discussion_id, :discussion, object_name, content, options)
70
68
  end
71
69
 
72
- # 发送广播消息 http://www.rongcloud.cn/docs/server.html#发送广播消息_方法
73
70
  def send_broadcast_message(from_user_id, object_name, content, options = {})
74
71
  send_message(from_user_id, nil, :broadcast, object_name, content, options)
75
72
  end
@@ -1,20 +1,18 @@
1
1
  module RongCloud
2
2
  module Services
3
- # 用户相关接口 http://www.rongcloud.cn/docs/server.html#用户服务
3
+ # http://www.rongcloud.cn/docs/server.html#用户服务
4
4
  module User
5
- # 获取 Token,即创建融云用户
5
+ # Generate a new token to create a new RongCloud user
6
6
  #
7
- # @param user_id [String] 用户 Id,最大长度 64 字节。是用户在 App 中的唯一标识码,必须保证在同一个 App 内不重复,重复的用户 Id 将被当作是同一用户
8
- # @param name [String] 用户名称,最大长度 128 字节。用来在 Push 推送时显示用户的名称。
9
- # @param portrait_uri [String] 用户头像 URI,最大长度 1024 字节。用来在 Push 推送时显示用户的头像。
10
- # @return [Hash] 请求响应结果数据
7
+ # @param user_id [String] user id
8
+ # @param name [String] user name
9
+ # @param portrait_uri [String] the url of user's avatar
10
+ # @return [Hash] the response data
11
11
  #
12
12
  def get_token(user_id, name, portrait_uri)
13
13
  request("/user/getToken", {userId: user_id, name: name, portraitUri: portrait_uri})
14
14
  end
15
15
 
16
- # 刷新用户信息
17
- #
18
16
  def refresh_user(user_id, name = nil, portrait_uri = nil)
19
17
  params = { userId: user_id, name: name, portraitUri: portrait_uri }
20
18
  params.reject!{|key, value| value.nil?}
@@ -22,46 +20,30 @@ module RongCloud
22
20
  request("/user/refresh", params)
23
21
  end
24
22
 
25
- # 检查用户在线状态
26
- #
27
23
  def check_online(user_id)
28
24
  request("/user/checkOnline", { userId: user_id })
29
25
  end
30
26
 
31
- # 封禁用户
32
- # @param user_id [String] 用户在融云的用户 id
33
- # @param minute [Integer] 封禁时长
34
- #
35
27
  def block_user(user_id, minute)
36
28
  request("/user/block", { userId: user_id, minute: minute })
37
29
  end
38
30
 
39
- # 解除用户封禁
40
- #
41
31
  def unblock_user(user_id)
42
32
  request("/user/unblock", userId: user_id)
43
33
  end
44
34
 
45
- # 查询被封禁用户列表
46
- #
47
35
  def blocked_users
48
36
  request("/user/block/query")
49
37
  end
50
38
 
51
- # 添加用户到黑名单
52
- #
53
39
  def blacklist_add(user_id, black_user_id)
54
40
  request("/user/blacklist/add", userId: user_id, blackUserId: black_user_id)
55
41
  end
56
42
 
57
- # 从黑名单中移除用户
58
- #
59
43
  def blacklist_remove(user_id, black_user_id)
60
44
  request("/user/blacklist/remove", userId: user_id, blackUserId: black_user_id)
61
45
  end
62
46
 
63
- # 获取某用户的黑名单列表
64
- #
65
47
  def blacklisted_users(user_id)
66
48
  request("/user/blacklist/query", userId: user_id)
67
49
  end
@@ -1,23 +1,15 @@
1
1
  module RongCloud
2
2
  module Services
3
- # 敏感词相关接口 http://www.rongcloud.cn/docs/server.html#敏感词服务
3
+ # http://www.rongcloud.cn/docs/server.html#敏感词服务
4
4
  module Wordfilter
5
- # 添加敏感词
6
- #
7
- # @param word [String] 敏感词
8
- #
9
5
  def add_wordfilter(word)
10
6
  request("/wordfilter/add", { word: word })
11
7
  end
12
8
 
13
- # 移除敏感词
14
- #
15
9
  def delete_wordfilter(word)
16
10
  request("/wordfilter/delete", { word: word })
17
11
  end
18
12
 
19
- # 查询已有敏感词的列表
20
- #
21
13
  def wordfilter_list
22
14
  request("/wordfilter/list")
23
15
  end
@@ -1,28 +1,28 @@
1
1
  require 'digest/sha1'
2
2
 
3
3
  module RongCloud
4
- # 签名算法相关模块
4
+ # a seperate module to perform api signature
5
5
  # http://www.rongcloud.cn/docs/server.html#通用_API_接口签名规则
6
6
  #
7
7
  module Signature
8
- # 生成签名串
8
+ # generate the final signature
9
9
  #
10
- # @param nonce [String] 参与签名的随机字串,无长度限制
11
- # @param timestamp [String] 时间戳,从 1970 1 1 0 点 0 分 0 秒开始到现在的秒数
12
- # @return [String] 签名完成之后的结果字串
10
+ # @param nonce [String] a random string with a whatever length
11
+ # @param timestamp [String] timestamp, the elapsed seconds from 1970-01-01 00:00:00 UTC
12
+ # @return [String] the final signature
13
13
  #
14
14
  def signature(nonce, timestamp)
15
15
  str = "#{RongCloud::Configuration.app_secret}#{nonce}#{timestamp}"
16
16
  Digest::SHA1.hexdigest(str)
17
17
  end
18
18
 
19
- # API 调用签名所需的请求头,包含签名等
20
- # @note 包含以下请求头:
19
+ # get required request headers
20
+ # @note consist of the following request headers:
21
21
  # App-Key
22
22
  # Nonce
23
23
  # Timestamp
24
24
  # Signature
25
- # @return [Hash] 签名所需请求头
25
+ # @return [Hash] headers represented as a Ruby hash
26
26
  def signed_headers
27
27
  nonce = rand(10**6)
28
28
  timestamp = Time.now.to_i
data/rong_cloud.gemspec CHANGED
@@ -2,9 +2,9 @@ Gem::Specification.new do |s|
2
2
  s.name = 'rong_cloud_server'
3
3
  s.platform = Gem::Platform::RUBY
4
4
  s.require_path = 'lib'
5
- s.summary = '融云 Server API SDK'
6
- s.description = '融云服务器端接口 API,http://www.rongcloud.cn/docs/server.html'
7
- s.version = '0.0.2'
5
+ s.summary = 'RongCloud Server API SDK'
6
+ s.description = 'RongCloud Server API in Ruby,http://www.rongcloud.cn/docs/server.html'
7
+ s.version = '0.1.0'
8
8
  s.files = `git ls-files`.split("\n")
9
9
  s.authors = ['Martin Hong']
10
10
  s.email = 'hongzeqin@gmail.com'
@@ -0,0 +1,10 @@
1
+ require 'test_helper'
2
+
3
+ module RongCloud
4
+ module ServiceTestSetup
5
+ def setup
6
+ rong_cloud_configure_with_settings
7
+ @service = RongCloud::Service.new
8
+ end
9
+ end
10
+ end
@@ -1,6 +1,10 @@
1
+ require 'rong_cloud/service_test_setup'
2
+
1
3
  module RongCloud
2
4
  module Services
3
- module ChatroomTest
5
+ class ChatroomTest < Minitest::Test
6
+ include RongCloud::ServiceTestSetup
7
+
4
8
  def test_create_chatroom
5
9
  chatrooms = { 10001 => "name1", 10002 => "name2" }
6
10
  response = @service.create_chatroom(chatrooms)
@@ -1,6 +1,10 @@
1
+ require 'rong_cloud/service_test_setup'
2
+
1
3
  module RongCloud
2
4
  module Services
3
- module GroupTest
5
+ class GroupTest < Minitest::Test
6
+ include RongCloud::ServiceTestSetup
7
+
4
8
  def test_sync_group
5
9
  response = @service.sync_group('user1', '1' => 'group1', '2' => 'group2')
6
10
  assert_equal 200, response['code']
@@ -0,0 +1,23 @@
1
+ require 'rong_cloud/service_test_setup'
2
+
3
+ module RongCloud
4
+ module Services
5
+ class HistoryMessageTest < Minitest::Test
6
+ include RongCloud::ServiceTestSetup
7
+
8
+ def test_get_history
9
+ date = "2014010101"
10
+ response = @service.get_history(date)
11
+ assert_equal 200, response['code']
12
+ assert_equal date, response['date']
13
+ assert_includes response, 'url'
14
+ end
15
+
16
+ def test_delete_history
17
+ date = "2014010101"
18
+ response = @service.delete_history(date)
19
+ assert_equal 200, response['code']
20
+ end
21
+ end
22
+ end
23
+ end
@@ -1,6 +1,10 @@
1
+ require 'rong_cloud/service_test_setup'
2
+
1
3
  module RongCloud
2
4
  module Services
3
- module MessageTest
5
+ class MessageTest < Minitest::Test
6
+ include RongCloud::ServiceTestSetup
7
+
4
8
  def test_send_private_message_with_single_to_user_id
5
9
  response = @service.send_private_message(1, 2, "RC:TxtMsg", { content: "hello world", extra: "nothing" })
6
10
  assert_equal 200, response["code"]
@@ -1,6 +1,10 @@
1
+ require 'rong_cloud/service_test_setup'
2
+
1
3
  module RongCloud
2
4
  module Services
3
- module UserTest
5
+ class UserTest < Minitest::Test
6
+ include RongCloud::ServiceTestSetup
7
+
4
8
  def test_get_token_without_user_id
5
9
  error = assert_raises RongCloud::BadRequest do
6
10
  @service.get_token(nil, nil, nil)
@@ -1,6 +1,10 @@
1
+ require 'rong_cloud/service_test_setup'
2
+
1
3
  module RongCloud
2
4
  module Services
3
- module WordfilterTest
5
+ class WordfilterTest < Minitest::Test
6
+ include RongCloud::ServiceTestSetup
7
+
4
8
  def test_add_wordfilter_with_single_word
5
9
  response = @service.add_wordfilter("敏感词")
6
10
  assert_equal 200, response["code"]
metadata CHANGED
@@ -1,16 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rong_cloud_server
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Martin Hong
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-10-18 00:00:00.000000000 Z
11
+ date: 2017-02-25 00:00:00.000000000 Z
12
12
  dependencies: []
13
- description: 融云服务器端接口 API,http://www.rongcloud.cn/docs/server.html
13
+ description: RongCloud Server API in Ruby,http://www.rongcloud.cn/docs/server.html
14
14
  email: hongzeqin@gmail.com
15
15
  executables: []
16
16
  extensions: []
@@ -18,6 +18,7 @@ extra_rdoc_files: []
18
18
  files:
19
19
  - ".gitignore"
20
20
  - README.md
21
+ - README.zh-CN.md
21
22
  - config.example.yml
22
23
  - lib/core_ext/array.rb
23
24
  - lib/rong_cloud.rb
@@ -27,6 +28,7 @@ files:
27
28
  - lib/rong_cloud/service.rb
28
29
  - lib/rong_cloud/services/chatroom.rb
29
30
  - lib/rong_cloud/services/group.rb
31
+ - lib/rong_cloud/services/history_message.rb
30
32
  - lib/rong_cloud/services/message.rb
31
33
  - lib/rong_cloud/services/message/message_channel.rb
32
34
  - lib/rong_cloud/services/user.rb
@@ -36,9 +38,10 @@ files:
36
38
  - run_tests.sh
37
39
  - test/rong_cloud/configuration_test.rb
38
40
  - test/rong_cloud/request_test.rb
39
- - test/rong_cloud/service_test.rb
41
+ - test/rong_cloud/service_test_setup.rb
40
42
  - test/rong_cloud/services/chatroom_test.rb
41
43
  - test/rong_cloud/services/group_test.rb
44
+ - test/rong_cloud/services/history_message_test.rb
42
45
  - test/rong_cloud/services/message/message_channel_test.rb
43
46
  - test/rong_cloud/services/message_test.rb
44
47
  - test/rong_cloud/services/user_test.rb
@@ -69,5 +72,5 @@ rubyforge_project:
69
72
  rubygems_version: 2.6.6
70
73
  signing_key:
71
74
  specification_version: 4
72
- summary: 融云 Server API SDK
75
+ summary: RongCloud Server API SDK
73
76
  test_files: []
@@ -1,21 +0,0 @@
1
- require 'test_helper'
2
- require 'rong_cloud/services/user_test'
3
- require 'rong_cloud/services/message_test'
4
- require 'rong_cloud/services/wordfilter_test'
5
- require 'rong_cloud/services/group_test'
6
- require 'rong_cloud/services/chatroom_test'
7
-
8
- module RongCloud
9
- class ServiceTest < Minitest::Test
10
- include RongCloud::Services::UserTest
11
- include RongCloud::Services::MessageTest
12
- include RongCloud::Services::WordfilterTest
13
- include RongCloud::Services::GroupTest
14
- include RongCloud::Services::ChatroomTest
15
-
16
- def setup
17
- rong_cloud_configure_with_settings
18
- @service = RongCloud::Service.new
19
- end
20
- end
21
- end