Skip to content

Commit

Permalink
Merge pull request #5 from Martin91/v0.2.0
Browse files Browse the repository at this point in the history
V0.2.0
  • Loading branch information
Martin91 committed Mar 10, 2018
2 parents c46b3fd + 661d7d0 commit 8148dce
Show file tree
Hide file tree
Showing 24 changed files with 485 additions and 73 deletions.
7 changes: 6 additions & 1 deletion lib/rong_cloud/configuration.rb
Expand Up @@ -6,16 +6,21 @@ module RongCloud
module Configuration
# The default host to accept connections, use a https protocol
DEFAULT_HOST = "https://api.cn.ronghub.com".freeze
DEFAULT_TIMEOUT = 2

module ModuleMethods
attr_accessor :app_key, :app_secret
attr_writer :host
attr_writer :host, :timeout

# Fetch the api host, the default is: https://api.cn.ronghub.com
#
def host
@host || DEFAULT_HOST
end

def timeout
@timeout || DEFAULT_TIMEOUT
end
end
extend ModuleMethods
end
Expand Down
6 changes: 5 additions & 1 deletion lib/rong_cloud/request.rb
Expand Up @@ -17,8 +17,12 @@ module Request
def request(path, params = nil, content_type = :form_data)
uri = get_uri(path)
req = initialize_request(uri, params, content_type)

use_ssl = uri.scheme == 'https'
res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: use_ssl) do |http|
timeout = RongCloud::Configuration.timeout
request_options = { use_ssl: use_ssl, open_timeout: timeout, read_timeout: timeout }

res = Net::HTTP.start(uri.hostname, uri.port, request_options) do |http|
http.request(req)
end

Expand Down
10 changes: 8 additions & 2 deletions lib/rong_cloud/service.rb
@@ -1,7 +1,10 @@
require 'rong_cloud/request'
require 'rong_cloud/services/user'
require 'rong_cloud/services/conversation_notification'
require 'rong_cloud/services/message'
require 'rong_cloud/services/wordfilter'
require 'rong_cloud/services/message_recall'
require 'rong_cloud/services/message_priority'
require 'rong_cloud/services/sensitive_word'
require 'rong_cloud/services/group'
require 'rong_cloud/services/chatroom'
require 'rong_cloud/services/history_message'
Expand All @@ -10,9 +13,12 @@ module RongCloud
class Service
include RongCloud::Request
include RongCloud::Services::User
include RongCloud::Services::ConversationNotification
include RongCloud::Services::Message
include RongCloud::Services::MessageRecall
include RongCloud::Services::MessagePriority
include RongCloud::Services::HistoryMessage
include RongCloud::Services::Wordfilter
include RongCloud::Services::SensitiveWord
include RongCloud::Services::Group
include RongCloud::Services::Chatroom
end
Expand Down
72 changes: 64 additions & 8 deletions lib/rong_cloud/services/chatroom.rb
Expand Up @@ -39,22 +39,30 @@ def query_chatroom(chatroom_ids)
request("/chatroom/query", chatroomId: chatroom_ids)
end

# http://www.rongcloud.cn/docs/server.html#添加禁言聊天室成员_方法
def query_chatroom_user_existence(chatroom_id, user_id)
request("/chatroom/user/exist", chatroomId: chatroom_id, userId: user_id)
end

def query_chatroom_users_existence(chatroom_id, user_id)
request("/chatroom/users/exist", chatroomId: chatroom_id, userId: user_id)
end

# http://www.rongcloud.cn/docs/server.html#chatroom_user_gag_add
#
def block_chatroom_user(chatroom_id, user_id, minute)
def add_chatroom_gag_user(chatroom_id, user_id, minute)
request("/chatroom/user/gag/add", chatroomId: chatroom_id, userId: user_id, minute: minute)
end

# http://www.rongcloud.cn/docs/server.html#移除封禁聊天室成员_方法
# http://www.rongcloud.cn/docs/server.html#chatroom_user_gag_rollback
#
def unblock_chatroom_user(chatroom_id, user_id)
request("/chatroom/user/block/rollback", chatroomId: chatroom_id, userId: user_id)
def rollback_chatroom_gag_user(chatroom_id, user_id)
request("/chatroom/user/gag/rollback", chatroomId: chatroom_id, userId: user_id)
end

# http://www.rongcloud.cn/docs/server.html#查询被封禁聊天室成员_方法
# http://www.rongcloud.cn/docs/server.html#chatroom_user_gag_list
#
def blocked_chatroom_users(chatroom_id)
request("/chatroom/user/block/list", chatroomId: chatroom_id)
def chatroom_gag_users(chatroom_id)
request("/chatroom/user/gag/list", chatroomId: chatroom_id)
end

# Fetch members list in a specified chatroom
Expand Down Expand Up @@ -95,6 +103,54 @@ def remove_chatroom_whitelist(chatroom_id, user_id)
def whitelisted_chatroom_users(chatroom_id)
request("/chatroom/user/whitelist/query", chatroomId: chatroom_id)
end

# http://www.rongcloud.cn/docs/server.html#chatroom_user_ban
def ban_chatroom_user(user_id, minute)
request("/chatroom/user/ban/add", userId: user_id, minute: minute)
end

# http://www.rongcloud.cn/docs/server.html#chatroom_user_ban_remove
def unban_chatroom_user(user_id)
request("/chatroom/user/ban/remove", userId: user_id)
end

# http://www.rongcloud.cn/docs/server.html#chatroom_user_ban_query
def banned_chatroom_users
request("/chatroom/user/ban/query")
end

# http://www.rongcloud.cn/docs/server.html#chatroom_user_block_add
#
def block_chatroom_user(chatroom_id, user_id, minute)
request("/chatroom/user/block/add", chatroomId: chatroom_id, userId: user_id, minute: minute)
end

# http://www.rongcloud.cn/docs/server.html#chatroom_user_block_rollback
#
def unblock_chatroom_user(chatroom_id, user_id)
request("/chatroom/user/block/rollback", chatroomId: chatroom_id, userId: user_id)
end

# http://www.rongcloud.cn/docs/server.html#chatroom_user_block_list
#
def blocked_chatroom_users(chatroom_id)
request("/chatroom/user/block/list", chatroomId: chatroom_id)
end

# http://www.rongcloud.cn/docs/server.html#chatroom_keepalive_add
def add_keepalive_chatroom(chatroom_id)
request("/chatroom/keepalive/add", chatroomId: chatroom_id)
end

# http://www.rongcloud.cn/docs/server.html#chatroom_keepalive_remove
def remove_keepalive_chatroom(chatroom_id)
request("/chatroom/keepalive/remove", chatroomId: chatroom_id)
end

# http://www.rongcloud.cn/docs/server.html#chatroom_keepalive_query
def keepalive_chatrooms
request("/chatroom/keepalive/query")
end
end
end
end
23 changes: 23 additions & 0 deletions lib/rong_cloud/services/conversation_notification.rb
@@ -0,0 +1,23 @@
module RongCloud
module Services
# http://www.rongcloud.cn/docs/server.html#conversation_notification
module ConversationNotification
def set_conversation_notification(conversation_type, request_id, target_id, is_muted)
request("/conversation/notification/set", {
conversationType: conversation_type,
requestId: request_id,
targetId: target_id,
isMuted: is_muted
})
end

def get_conversation_notification(conversation_type, request_id, target_id)
request("/conversation/notification/get", {
conversationType: conversation_type,
requestId: request_id,
targetId: target_id
})
end
end
end
end
4 changes: 3 additions & 1 deletion lib/rong_cloud/services/group.rb
@@ -1,7 +1,9 @@
module RongCloud
module Services
# http://www.rongcloud.cn/docs/server.html#群组服务
# http://www.rongcloud.cn/docs/server.html#group
module Group
# @param user_id [String] user id
# @param groups [Hash] store group id as hash key, while group name as value, e.g. { 132 => "欢天喜地一家亲" }
def sync_group(user_id, groups)
params = {userId: user_id}
groups.each do |id, name|
Expand Down
2 changes: 1 addition & 1 deletion lib/rong_cloud/services/history_message.rb
@@ -1,6 +1,6 @@
module RongCloud
module Services
# http://www.rongcloud.cn/docs/server.html#消息历史记录服务
# http://www.rongcloud.cn/docs/server.html#history_message
module HistoryMessage
# Get the download url for history messages within specified hour
#
Expand Down
8 changes: 8 additions & 0 deletions lib/rong_cloud/services/message.rb
Expand Up @@ -70,6 +70,14 @@ def send_discussion_message(from_user_id, to_discussion_id, object_name, content
send_message(from_user_id, to_discussion_id, :discussion, object_name, content, options)
end

def send_chatroom_message(from_user_id, to_chatroom_id, object_name, content, options = {})
send_message(from_user_id, to_chatroom_id, :chatroom, object_name, content, options)
end

def send_chatroom_broadcast_message(from_user_id, object_name, content, options = {})
send_message(from_user_id, nil, :chatroom_broadcast, object_name, content, options)
end

def send_broadcast_message(from_user_id, object_name, content, options = {})
send_message(from_user_id, nil, :broadcast, object_name, content, options)
end
Expand Down
1 change: 1 addition & 0 deletions lib/rong_cloud/services/message/message_channel.rb
Expand Up @@ -13,6 +13,7 @@ class MessageChannel
group: { target_param_name: 'toGroupId', api_path: "/message/group/publish" },
discussion: { target_param_name: "toDiscussionId", api_path: "/message/discussion/publish" },
chatroom: { target_param_name: "toChatroomId", api_path: "/message/chatroom/publish" },
chatroom_broadcast: { api_path: "/message/chatroom/broadcast" },
broadcast: { api_path: "/message/broadcast" }
}.freeze
# 支持的消息渠道的列表
Expand Down
32 changes: 32 additions & 0 deletions lib/rong_cloud/services/message_priority.rb
@@ -0,0 +1,32 @@
require 'rong_cloud/services/message/message_channel'

module RongCloud
module Services
# http://www.rongcloud.cn/docs/server.html#chatroom_message_priority
module MessagePriority
def add_chatroom_message_priority(object_name)
request("/chatroom/message/priority/add", objectName: object_name)
end

def remove_chatroom_message_priority(object_name)
request("/chatroom/message/priority/remove", objectName: object_name)
end

def chatroom_message_priorities
request("/chatroom/message/priority/query")
end

def add_chatroom_message_whitelist(object_names)
request("/chatroom/whitelist/add", objectnames: object_names)
end

def remove_chatroom_message_whitelist(object_names)
request("/chatroom/whitelist/delete", objectnames: object_names)
end

def chatroom_message_whitelist
request("/chatroom/whitelist/query")
end
end
end
end
18 changes: 18 additions & 0 deletions lib/rong_cloud/services/message_recall.rb
@@ -0,0 +1,18 @@
require 'rong_cloud/services/message/message_channel'

module RongCloud
module Services
# http://www.rongcloud.cn/docs/server.html#message_recall
module MessageRecall
def message_recall(from_user_id, conversation_type, target_id, message_uid, sent_time)
request("/message/recall", {
fromUserId: from_user_id,
conversationType: conversation_type,
targetId: target_id,
messageUID: message_uid,
sentTime: sent_time
})
end
end
end
end
30 changes: 30 additions & 0 deletions lib/rong_cloud/services/sensitive_word.rb
@@ -0,0 +1,30 @@
module RongCloud
module Services
# http://www.rongcloud.cn/docs/server.html#sensitiveword
module SensitiveWord
def add_sensitive_word(word, replace_word = nil)
arguments = { word: word }
if replace_word.is_a?(String) && replace_word.length > 0
arguments.merge!(replaceWord: replace_word)
end

request("/sensitiveword/add", arguments)
end
alias_method :add_wordfilter, :add_sensitive_word

def delete_sensitive_word(word)
request("/sensitiveword/delete", { word: word })
end
alias_method :delete_wordfilter, :delete_sensitive_word

def batch_delete_sensitive_word(words)
request("/sensitiveword/batch/delete", words: [*words])
end

def sensitive_word_list
request("/sensitiveword/list")
end
alias_method :wordfilter_list, :sensitive_word_list
end
end
end
18 changes: 0 additions & 18 deletions lib/rong_cloud/services/wordfilter.rb

This file was deleted.

2 changes: 1 addition & 1 deletion rong_cloud.gemspec
Expand Up @@ -4,7 +4,7 @@ Gem::Specification.new do |s|
s.require_path = 'lib'
s.summary = 'RongCloud Server API SDK'
s.description = 'RongCloud Server API in Ruby,http://www.rongcloud.cn/docs/server.html'
s.version = '0.1.1'
s.version = '0.2.0'
s.files = `git ls-files`.split("\n")
s.authors = ['Martin Hong']
s.email = 'hongzeqin@gmail.com'
Expand Down
12 changes: 12 additions & 0 deletions test/rong_cloud/request_test.rb
Expand Up @@ -52,5 +52,17 @@ def test_request_with_valid_params
assert_equal "user", response["userId"]
assert response["token"]
end

def test_request_with_timeout_set
original_timeout = RongCloud::Configuration.timeout
RongCloud::Configuration.timeout = 0.001

service = RongCloud::Service.new
assert_raises Net::OpenTimeout do
response = request("/user/getToken", { userId: 'user', name: "User", portraitUri: "uri" })
end

RongCloud::Configuration.timeout = original_timeout
end
end
end

0 comments on commit 8148dce

Please sign in to comment.