rong_cloud_server 0.0.2 → 0.1.0

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
  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