From 490599d097f65aab24701acc87e036d2d2f9fdda Mon Sep 17 00:00:00 2001 From: Martin Hong Date: Sat, 10 Mar 2018 18:11:56 +0800 Subject: [PATCH 01/21] update document links --- lib/rong_cloud/services/group.rb | 4 +++- lib/rong_cloud/services/history_message.rb | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/rong_cloud/services/group.rb b/lib/rong_cloud/services/group.rb index 4815ddb..5293863 100644 --- a/lib/rong_cloud/services/group.rb +++ b/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| diff --git a/lib/rong_cloud/services/history_message.rb b/lib/rong_cloud/services/history_message.rb index 58cd1ce..acef8bf 100644 --- a/lib/rong_cloud/services/history_message.rb +++ b/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 # From 56cc5fdf74b4edb553a3e7f3490f6aec289b9491 Mon Sep 17 00:00:00 2001 From: Martin Hong Date: Sat, 10 Mar 2018 21:02:28 +0800 Subject: [PATCH 02/21] send chatroom message and chatroom broadcast message --- lib/rong_cloud/services/message.rb | 8 ++++++++ .../services/message/message_channel.rb | 1 + test/rong_cloud/services/message_test.rb | 18 ++++++++++++++++++ 3 files changed, 27 insertions(+) diff --git a/lib/rong_cloud/services/message.rb b/lib/rong_cloud/services/message.rb index 898a96b..26c51dc 100644 --- a/lib/rong_cloud/services/message.rb +++ b/lib/rong_cloud/services/message.rb @@ -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 diff --git a/lib/rong_cloud/services/message/message_channel.rb b/lib/rong_cloud/services/message/message_channel.rb index ba8af00..a32e1d2 100644 --- a/lib/rong_cloud/services/message/message_channel.rb +++ b/lib/rong_cloud/services/message/message_channel.rb @@ -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 # 支持的消息渠道的列表 diff --git a/test/rong_cloud/services/message_test.rb b/test/rong_cloud/services/message_test.rb index d903634..592fa95 100644 --- a/test/rong_cloud/services/message_test.rb +++ b/test/rong_cloud/services/message_test.rb @@ -118,6 +118,24 @@ def test_send_discussion_message_with_options assert_equal 200, response["code"] end + def test_send_chatroom_message_with_single_to_chatroom_id + response = @service.send_chatroom_message(1, 2, "RC:TxtMsg", { content: "hello world", extra: "nothing" }) + assert_equal 200, response["code"] + end + + def test_send_chatroom_message_with_multiple_to_chatroom_ids + response = @service.send_chatroom_message(1, [2, 3, 4], "RC:TxtMsg", { content: "hello world", extra: "nothing" }) + assert_equal 200, response["code"] + end + + def test_send_chatroom_broadcast_message + error = assert_raises RongCloud::RequestError do + @service.send_chatroom_broadcast_message(1, "RC:TxtMsg", { content: "hello world", extra: "nothing" }) + end + # 未开通该服务,请到开发者管理后台开通或提交工单申请。 + assert_equal 1009, error.business_code + end + def test_send_broadcast_message response = @service.send_broadcast_message(1, "RC:TxtMsg", { content: "hello world", extra: "nothing" }) assert_equal 200, response["code"] From 2f850fdafb8eb2ede4b3a744bb875d25fa064285 Mon Sep 17 00:00:00 2001 From: Martin Hong Date: Sat, 10 Mar 2018 21:16:50 +0800 Subject: [PATCH 03/21] integrate message recall api --- lib/rong_cloud/service.rb | 2 ++ lib/rong_cloud/services/message_recall.rb | 18 +++++++++++++ .../services/message_recall_test.rb | 27 +++++++++++++++++++ 3 files changed, 47 insertions(+) create mode 100644 lib/rong_cloud/services/message_recall.rb create mode 100644 test/rong_cloud/services/message_recall_test.rb diff --git a/lib/rong_cloud/service.rb b/lib/rong_cloud/service.rb index bddc5ca..95f8695 100644 --- a/lib/rong_cloud/service.rb +++ b/lib/rong_cloud/service.rb @@ -1,6 +1,7 @@ require 'rong_cloud/request' require 'rong_cloud/services/user' require 'rong_cloud/services/message' +require 'rong_cloud/services/message_recall' require 'rong_cloud/services/wordfilter' require 'rong_cloud/services/group' require 'rong_cloud/services/chatroom' @@ -11,6 +12,7 @@ class Service include RongCloud::Request include RongCloud::Services::User include RongCloud::Services::Message + include RongCloud::Services::MessageRecall include RongCloud::Services::HistoryMessage include RongCloud::Services::Wordfilter include RongCloud::Services::Group diff --git a/lib/rong_cloud/services/message_recall.rb b/lib/rong_cloud/services/message_recall.rb new file mode 100644 index 0000000..816909a --- /dev/null +++ b/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 \ No newline at end of file diff --git a/test/rong_cloud/services/message_recall_test.rb b/test/rong_cloud/services/message_recall_test.rb new file mode 100644 index 0000000..3d61a47 --- /dev/null +++ b/test/rong_cloud/services/message_recall_test.rb @@ -0,0 +1,27 @@ +require 'rong_cloud/service_test_setup' + +module RongCloud + module Services + class MessageRecallTest < Minitest::Test + include RongCloud::ServiceTestSetup + + # conversationType = 1 + def test_message_recall_for_private_session + response = @service.message_recall(1, 1, 2, "MESSAGE_UUID", (Time.now.to_f * 1000).to_i) + assert_equal 200, response["code"] + end + + # conversationType = 2 + def test_message_recall_for_discussion_session + response = @service.message_recall(1, 2, 2, "MESSAGE_UUID", (Time.now.to_f * 1000).to_i) + assert_equal 200, response["code"] + end + + # conversationType = 3 + def test_message_recall_for_group_session + response = @service.message_recall(1, 3, 2, "MESSAGE_UUID", (Time.now.to_f * 1000).to_i) + assert_equal 200, response["code"] + end + end + end +end \ No newline at end of file From 2d718d2741a9075e626fa6ccd84210cbddc31197 Mon Sep 17 00:00:00 2001 From: Martin Hong Date: Sat, 10 Mar 2018 21:26:22 +0800 Subject: [PATCH 04/21] rename wordfilter to sensitive_word --- lib/rong_cloud/service.rb | 4 +- lib/rong_cloud/services/sensitive_word.rb | 26 +++++++++++++ lib/rong_cloud/services/wordfilter.rb | 18 --------- .../services/sensitive_word_test.rb | 39 +++++++++++++++++++ test/rong_cloud/services/wordfilter_test.rb | 34 ---------------- 5 files changed, 67 insertions(+), 54 deletions(-) create mode 100644 lib/rong_cloud/services/sensitive_word.rb delete mode 100644 lib/rong_cloud/services/wordfilter.rb create mode 100644 test/rong_cloud/services/sensitive_word_test.rb delete mode 100644 test/rong_cloud/services/wordfilter_test.rb diff --git a/lib/rong_cloud/service.rb b/lib/rong_cloud/service.rb index 95f8695..33c3547 100644 --- a/lib/rong_cloud/service.rb +++ b/lib/rong_cloud/service.rb @@ -2,7 +2,7 @@ require 'rong_cloud/services/user' require 'rong_cloud/services/message' require 'rong_cloud/services/message_recall' -require 'rong_cloud/services/wordfilter' +require 'rong_cloud/services/sensitive_word' require 'rong_cloud/services/group' require 'rong_cloud/services/chatroom' require 'rong_cloud/services/history_message' @@ -14,7 +14,7 @@ class Service include RongCloud::Services::Message include RongCloud::Services::MessageRecall include RongCloud::Services::HistoryMessage - include RongCloud::Services::Wordfilter + include RongCloud::Services::SensitiveWord include RongCloud::Services::Group include RongCloud::Services::Chatroom end diff --git a/lib/rong_cloud/services/sensitive_word.rb b/lib/rong_cloud/services/sensitive_word.rb new file mode 100644 index 0000000..338aef8 --- /dev/null +++ b/lib/rong_cloud/services/sensitive_word.rb @@ -0,0 +1,26 @@ +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 sensitive_word_list + request("/sensitiveword/list") + end + alias_method :wordfilter_list, :sensitive_word_list + end + end +end \ No newline at end of file diff --git a/lib/rong_cloud/services/wordfilter.rb b/lib/rong_cloud/services/wordfilter.rb deleted file mode 100644 index 9ead095..0000000 --- a/lib/rong_cloud/services/wordfilter.rb +++ /dev/null @@ -1,18 +0,0 @@ -module RongCloud - module Services - # http://www.rongcloud.cn/docs/server.html#敏感词服务 - module Wordfilter - def add_wordfilter(word) - request("/wordfilter/add", { word: word }) - end - - def delete_wordfilter(word) - request("/wordfilter/delete", { word: word }) - end - - def wordfilter_list - request("/wordfilter/list") - end - end - end -end \ No newline at end of file diff --git a/test/rong_cloud/services/sensitive_word_test.rb b/test/rong_cloud/services/sensitive_word_test.rb new file mode 100644 index 0000000..0c139fe --- /dev/null +++ b/test/rong_cloud/services/sensitive_word_test.rb @@ -0,0 +1,39 @@ +require 'rong_cloud/service_test_setup' + +module RongCloud + module Services + class SensitiveWordTest < Minitest::Test + include RongCloud::ServiceTestSetup + + def test_add_sensitive_word_with_single_word + response = @service.add_sensitive_word("敏感词") + assert_equal 200, response["code"] + end + + def test_add_sensitive_word_with_single_word_and_replace_word + response = @service.add_sensitive_word("敏感词", "***") + assert_equal 200, response["code"] + end + + def test_delete_exist_sensitive_word + @service.add_sensitive_word("hello") + response = @service.delete_sensitive_word("hello") + assert_equal 200, response["code"] + end + + def test_delete_unexist_sensitive_word + response = @service.delete_sensitive_word("unexistedWord") + assert_equal 200, response["code"] + end + + def test_sensitive_word_list + @service.add_sensitive_word("乱") + response = @service.sensitive_word_list + words = response["words"].map{|word| word["word"]} + assert_includes words, "乱" + + @service.delete_sensitive_word("乱") + end + end + end +end \ No newline at end of file diff --git a/test/rong_cloud/services/wordfilter_test.rb b/test/rong_cloud/services/wordfilter_test.rb deleted file mode 100644 index 437e8e0..0000000 --- a/test/rong_cloud/services/wordfilter_test.rb +++ /dev/null @@ -1,34 +0,0 @@ -require 'rong_cloud/service_test_setup' - -module RongCloud - module Services - class WordfilterTest < Minitest::Test - include RongCloud::ServiceTestSetup - - def test_add_wordfilter_with_single_word - response = @service.add_wordfilter("敏感词") - assert_equal 200, response["code"] - end - - def test_delete_exist_wordfilter - @service.add_wordfilter("hello") - response = @service.delete_wordfilter("hello") - assert_equal 200, response["code"] - end - - def test_delete_unexist_wordfilter - response = @service.delete_wordfilter("unexistedWord") - assert_equal 200, response["code"] - end - - def test_wordfilter_list - @service.add_wordfilter("乱") - response = @service.wordfilter_list - words = response["words"].map{|word| word["word"]} - assert_includes words, "乱" - - @service.delete_wordfilter("乱") - end - end - end -end \ No newline at end of file From 47225c14cc874fa6a56128f1209e32baa541030d Mon Sep 17 00:00:00 2001 From: Martin Hong Date: Sat, 10 Mar 2018 21:29:51 +0800 Subject: [PATCH 05/21] integrate batch delete sensitive words api --- lib/rong_cloud/services/sensitive_word.rb | 4 ++++ test/rong_cloud/services/sensitive_word_test.rb | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/lib/rong_cloud/services/sensitive_word.rb b/lib/rong_cloud/services/sensitive_word.rb index 338aef8..12c6a37 100644 --- a/lib/rong_cloud/services/sensitive_word.rb +++ b/lib/rong_cloud/services/sensitive_word.rb @@ -17,6 +17,10 @@ def delete_sensitive_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 diff --git a/test/rong_cloud/services/sensitive_word_test.rb b/test/rong_cloud/services/sensitive_word_test.rb index 0c139fe..4ed114e 100644 --- a/test/rong_cloud/services/sensitive_word_test.rb +++ b/test/rong_cloud/services/sensitive_word_test.rb @@ -26,6 +26,11 @@ def test_delete_unexist_sensitive_word assert_equal 200, response["code"] end + def test_batch_delete_sensitive_word + response = @service.batch_delete_sensitive_word(["hello", "敏感词"]) + assert_equal 200, response["code"] + end + def test_sensitive_word_list @service.add_sensitive_word("乱") response = @service.sensitive_word_list From 4d6a1cf9036e1a7b4bf6a992e1e4e2dcf77a60b9 Mon Sep 17 00:00:00 2001 From: Martin Hong Date: Sat, 10 Mar 2018 21:43:06 +0800 Subject: [PATCH 06/21] integrate batch query chatroom users existence api --- lib/rong_cloud/services/chatroom.rb | 8 ++++++ test/rong_cloud/services/chatroom_test.rb | 30 +++++++++++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/lib/rong_cloud/services/chatroom.rb b/lib/rong_cloud/services/chatroom.rb index 91efaa5..2f8e8e3 100644 --- a/lib/rong_cloud/services/chatroom.rb +++ b/lib/rong_cloud/services/chatroom.rb @@ -39,6 +39,14 @@ def query_chatroom(chatroom_ids) request("/chatroom/query", chatroomId: chatroom_ids) end + 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#添加禁言聊天室成员_方法 # def block_chatroom_user(chatroom_id, user_id, minute) diff --git a/test/rong_cloud/services/chatroom_test.rb b/test/rong_cloud/services/chatroom_test.rb index 0820f90..8e8dc08 100644 --- a/test/rong_cloud/services/chatroom_test.rb +++ b/test/rong_cloud/services/chatroom_test.rb @@ -86,6 +86,36 @@ def test_query_chatroom_users_with_count_2 assert_equal 2, users.count end + def test_query_chatroom_user_existence_for_existed_user + create_chatrooms({10009 => "room9"}) + @service.join_chatroom("user3", 10009) + + response = @service.query_chatroom_user_existence("10009", "user3") + assert response["isInChrm"] + end + + def test_query_chatroom_user_existence_for_unexisted_user + create_chatrooms({10009 => "room9"}) + @service.join_chatroom("user3", 10009) + + response = @service.query_chatroom_user_existence("10009", "unexisted_user_id") + refute response["isInChrm"] + end + + def test_query_chatroom_users_existence + create_chatrooms({10009 => "room9"}) + @service.join_chatroom("user3", 10009) + + response = @service.query_chatroom_users_existence("10009", ["user3", "unexisted_user_id"]) + result = response["result"] + + user3_result = result.detect{ |r| r["userId"] == "user3" } + assert_equal 1, user3_result["isInChrm"] + + unexisted_user_result = result.detect{ |r| r["userId"] == "unexisted_user_id" } + assert_equal 0, unexisted_user_result["isInChrm"] + end + def test_block_chatroom_user_flow create_chatrooms({10010 => "room10"}) @service.join_chatroom("user5", 10010) From d95c950f7d52ecab05132e7ae508ec66cd15ac8b Mon Sep 17 00:00:00 2001 From: Martin Hong Date: Sat, 10 Mar 2018 21:52:30 +0800 Subject: [PATCH 07/21] integrate chatroom user ban apis --- lib/rong_cloud/services/chatroom.rb | 15 +++++++++++++ test/rong_cloud/services/chatroom_test.rb | 27 +++++++++++++++++++++++ 2 files changed, 42 insertions(+) diff --git a/lib/rong_cloud/services/chatroom.rb b/lib/rong_cloud/services/chatroom.rb index 2f8e8e3..cc424ef 100644 --- a/lib/rong_cloud/services/chatroom.rb +++ b/lib/rong_cloud/services/chatroom.rb @@ -103,6 +103,21 @@ 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 end end end \ No newline at end of file diff --git a/test/rong_cloud/services/chatroom_test.rb b/test/rong_cloud/services/chatroom_test.rb index 8e8dc08..ae0411f 100644 --- a/test/rong_cloud/services/chatroom_test.rb +++ b/test/rong_cloud/services/chatroom_test.rb @@ -160,6 +160,33 @@ def test_chatroom_whitelist_flow assert_equal 200, response["code"] end + def test_ban_chatroom_user + error = assert_raises RongCloud::RequestError do + @service.ban_chatroom_user(1, 60) + end + + # 聊天室全局禁言功能未开通。 + assert_equal 1009, error.business_code + end + + def test_unban_chatroom_user + error = assert_raises RongCloud::RequestError do + @service.unban_chatroom_user(1) + end + + # 聊天室全局禁言功能未开通。 + assert_equal 1009, error.business_code + end + + def test_banned_chatroom_users + error = assert_raises RongCloud::RequestError do + @service.banned_chatroom_users + end + + # 聊天室全局禁言功能未开通。 + assert_equal 1009, error.business_code + end + private def create_chatrooms(chatrooms = { 10000001 => "super chatroom"}) @service.create_chatroom(chatrooms) From 7744dd90ec14ede382ed62a6a084b7144753ce1e Mon Sep 17 00:00:00 2001 From: Martin Hong Date: Sat, 10 Mar 2018 21:58:50 +0800 Subject: [PATCH 08/21] fix incorrect api path for block/unblock chatroom user --- lib/rong_cloud/services/chatroom.rb | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/rong_cloud/services/chatroom.rb b/lib/rong_cloud/services/chatroom.rb index cc424ef..cb737a8 100644 --- a/lib/rong_cloud/services/chatroom.rb +++ b/lib/rong_cloud/services/chatroom.rb @@ -47,22 +47,22 @@ 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#添加禁言聊天室成员_方法 + # http://www.rongcloud.cn/docs/server.html#chatroom_user_gag_add # def block_chatroom_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) + 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) + request("/chatroom/user/gag/list", chatroomId: chatroom_id) end # Fetch members list in a specified chatroom From cede400e76099dc3d61308c07c3086d2e08b0145 Mon Sep 17 00:00:00 2001 From: Martin Hong Date: Sat, 10 Mar 2018 22:04:07 +0800 Subject: [PATCH 09/21] keep chatroom gag naming --- lib/rong_cloud/services/chatroom.rb | 6 +++--- test/rong_cloud/services/chatroom_test.rb | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/lib/rong_cloud/services/chatroom.rb b/lib/rong_cloud/services/chatroom.rb index cb737a8..f95ec66 100644 --- a/lib/rong_cloud/services/chatroom.rb +++ b/lib/rong_cloud/services/chatroom.rb @@ -49,19 +49,19 @@ def query_chatroom_users_existence(chatroom_id, user_id) # 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#chatroom_user_gag_rollback # - def unblock_chatroom_user(chatroom_id, 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#chatroom_user_gag_list # - def blocked_chatroom_users(chatroom_id) + def chatroom_gag_users(chatroom_id) request("/chatroom/user/gag/list", chatroomId: chatroom_id) end diff --git a/test/rong_cloud/services/chatroom_test.rb b/test/rong_cloud/services/chatroom_test.rb index ae0411f..6a2b6f4 100644 --- a/test/rong_cloud/services/chatroom_test.rb +++ b/test/rong_cloud/services/chatroom_test.rb @@ -116,18 +116,18 @@ def test_query_chatroom_users_existence assert_equal 0, unexisted_user_result["isInChrm"] end - def test_block_chatroom_user_flow + def test_gag_chatroom_user_flow create_chatrooms({10010 => "room10"}) @service.join_chatroom("user5", 10010) - response = @service.block_chatroom_user(10010, "user5", 60) + response = @service.add_chatroom_gag_user(10010, "user5", 60) assert_equal 200, response["code"] - response = @service.blocked_chatroom_users(10010) + response = @service.chatroom_gag_users(10010) assert_equal 200, response["code"] assert response["users"] - response = @service.unblock_chatroom_user(10010, "user5") + response = @service.rollback_chatroom_gag_user(10010, "user5") assert_equal 200, response["code"] end From 031eb43a2d87599b44831f3cd5f46a2eff96fbf8 Mon Sep 17 00:00:00 2001 From: Martin Hong Date: Sat, 10 Mar 2018 22:10:46 +0800 Subject: [PATCH 10/21] integrate chatroom user block/unblock apis --- lib/rong_cloud/services/chatroom.rb | 18 ++++++++++++++++++ test/rong_cloud/services/chatroom_test.rb | 17 +++++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/lib/rong_cloud/services/chatroom.rb b/lib/rong_cloud/services/chatroom.rb index f95ec66..b2b9781 100644 --- a/lib/rong_cloud/services/chatroom.rb +++ b/lib/rong_cloud/services/chatroom.rb @@ -118,6 +118,24 @@ def unban_chatroom_user(user_id) 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 end end end \ No newline at end of file diff --git a/test/rong_cloud/services/chatroom_test.rb b/test/rong_cloud/services/chatroom_test.rb index 6a2b6f4..2834df4 100644 --- a/test/rong_cloud/services/chatroom_test.rb +++ b/test/rong_cloud/services/chatroom_test.rb @@ -187,6 +187,23 @@ def test_banned_chatroom_users assert_equal 1009, error.business_code end + def test_block_chatroom_user_flow + create_chatrooms({10010 => "room10"}) + @service.join_chatroom("user5", 10010) + + response = @service.block_chatroom_user(10010, "user5", 60) + assert_equal 200, response["code"] + + response = @service.blocked_chatroom_users(10010) + assert response["users"].detect{ |u| u["userId"] == "user5" } + + response = @service.unblock_chatroom_user(10010, "user5") + assert_equal 200, response["code"] + + response = @service.blocked_chatroom_users(10010) + refute response["users"].detect{ |u| u["userId"] == "user5" } + end + private def create_chatrooms(chatrooms = { 10000001 => "super chatroom"}) @service.create_chatroom(chatrooms) From 868d175efde25c7184e1204702dd9ab5860c1c37 Mon Sep 17 00:00:00 2001 From: Martin Hong Date: Sat, 10 Mar 2018 22:18:51 +0800 Subject: [PATCH 11/21] integrate chatroom message priority api --- lib/rong_cloud/service.rb | 2 ++ lib/rong_cloud/services/message_priority.rb | 12 ++++++++++++ .../services/message_priority_test.rb | 19 +++++++++++++++++++ 3 files changed, 33 insertions(+) create mode 100644 lib/rong_cloud/services/message_priority.rb create mode 100644 test/rong_cloud/services/message_priority_test.rb diff --git a/lib/rong_cloud/service.rb b/lib/rong_cloud/service.rb index 33c3547..5f122c9 100644 --- a/lib/rong_cloud/service.rb +++ b/lib/rong_cloud/service.rb @@ -2,6 +2,7 @@ require 'rong_cloud/services/user' require 'rong_cloud/services/message' 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' @@ -13,6 +14,7 @@ class Service include RongCloud::Services::User include RongCloud::Services::Message include RongCloud::Services::MessageRecall + include RongCloud::Services::MessagePriority include RongCloud::Services::HistoryMessage include RongCloud::Services::SensitiveWord include RongCloud::Services::Group diff --git a/lib/rong_cloud/services/message_priority.rb b/lib/rong_cloud/services/message_priority.rb new file mode 100644 index 0000000..2748311 --- /dev/null +++ b/lib/rong_cloud/services/message_priority.rb @@ -0,0 +1,12 @@ +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_priority_message(object_name) + request("/chatroom/message/priority/add", objectName: object_name) + end + end + end +end \ No newline at end of file diff --git a/test/rong_cloud/services/message_priority_test.rb b/test/rong_cloud/services/message_priority_test.rb new file mode 100644 index 0000000..1510d24 --- /dev/null +++ b/test/rong_cloud/services/message_priority_test.rb @@ -0,0 +1,19 @@ +require 'rong_cloud/service_test_setup' + +module RongCloud + module Services + class MessagePriorityTest < Minitest::Test + include RongCloud::ServiceTestSetup + + def test_add_priority_message_with_single_object_name + response = @service.add_priority_message("RC:CmdMsg") + assert_equal 200, response["code"] + end + + def test_add_priority_message_with_multiple_object_names + response = @service.add_priority_message(["RC:CmdMsg", "RC:CmdNtf"]) + assert_equal 200, response["code"] + end + end + end +end \ No newline at end of file From 7d206cc45ae4cac3d8c15e19cb2f19a037778085 Mon Sep 17 00:00:00 2001 From: Martin Hong Date: Sat, 10 Mar 2018 22:24:11 +0800 Subject: [PATCH 12/21] integrate whole chatroom priority message apis --- lib/rong_cloud/services/message_priority.rb | 10 +++++++++- .../services/message_priority_test.rb | 20 ++++++++++++++----- 2 files changed, 24 insertions(+), 6 deletions(-) diff --git a/lib/rong_cloud/services/message_priority.rb b/lib/rong_cloud/services/message_priority.rb index 2748311..38ca466 100644 --- a/lib/rong_cloud/services/message_priority.rb +++ b/lib/rong_cloud/services/message_priority.rb @@ -4,9 +4,17 @@ module RongCloud module Services # http://www.rongcloud.cn/docs/server.html#chatroom_message_priority module MessagePriority - def add_priority_message(object_name) + def add_chatroom_priority_message(object_name) request("/chatroom/message/priority/add", objectName: object_name) end + + def remove_chatroom_priority_message(object_name) + request("/chatroom/message/priority/remove", objectName: object_name) + end + + def chatroom_priority_messages + request("/chatroom/message/priority/query") + end end end end \ No newline at end of file diff --git a/test/rong_cloud/services/message_priority_test.rb b/test/rong_cloud/services/message_priority_test.rb index 1510d24..7cea086 100644 --- a/test/rong_cloud/services/message_priority_test.rb +++ b/test/rong_cloud/services/message_priority_test.rb @@ -5,14 +5,24 @@ module Services class MessagePriorityTest < Minitest::Test include RongCloud::ServiceTestSetup - def test_add_priority_message_with_single_object_name - response = @service.add_priority_message("RC:CmdMsg") + def test_add_priority_message_flow + response = @service.add_chatroom_priority_message("RC:CmdMsg") assert_equal 200, response["code"] - end - def test_add_priority_message_with_multiple_object_names - response = @service.add_priority_message(["RC:CmdMsg", "RC:CmdNtf"]) + response = @service.add_chatroom_priority_message(["RC:DizNtf", "RC:CmdNtf"]) + assert_equal 200, response["code"] + + response = @service.chatroom_priority_messages + assert_equal ["RC:CmdMsg", "RC:DizNtf", "RC:CmdNtf"].sort, response["objectNames"].sort + + response = @service.remove_chatroom_priority_message(["RC:DizNtf", "RC:CmdNtf"]) assert_equal 200, response["code"] + + response = @service.remove_chatroom_priority_message("RC:CmdMsg") + assert_equal 200, response["code"] + + response = @service.chatroom_priority_messages + assert_empty response["objectNames"] end end end From 4caf8da6d7ab67737a6934f06e3e6e2aace5b2f4 Mon Sep 17 00:00:00 2001 From: Martin Hong Date: Sat, 10 Mar 2018 22:25:36 +0800 Subject: [PATCH 13/21] rename methods --- lib/rong_cloud/services/message_priority.rb | 6 +++--- test/rong_cloud/services/message_priority_test.rb | 14 +++++++------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/lib/rong_cloud/services/message_priority.rb b/lib/rong_cloud/services/message_priority.rb index 38ca466..7889eb8 100644 --- a/lib/rong_cloud/services/message_priority.rb +++ b/lib/rong_cloud/services/message_priority.rb @@ -4,15 +4,15 @@ module RongCloud module Services # http://www.rongcloud.cn/docs/server.html#chatroom_message_priority module MessagePriority - def add_chatroom_priority_message(object_name) + def add_chatroom_message_priority(object_name) request("/chatroom/message/priority/add", objectName: object_name) end - def remove_chatroom_priority_message(object_name) + def remove_chatroom_message_priority(object_name) request("/chatroom/message/priority/remove", objectName: object_name) end - def chatroom_priority_messages + def chatroom_message_priorities request("/chatroom/message/priority/query") end end diff --git a/test/rong_cloud/services/message_priority_test.rb b/test/rong_cloud/services/message_priority_test.rb index 7cea086..bcd0aff 100644 --- a/test/rong_cloud/services/message_priority_test.rb +++ b/test/rong_cloud/services/message_priority_test.rb @@ -5,23 +5,23 @@ module Services class MessagePriorityTest < Minitest::Test include RongCloud::ServiceTestSetup - def test_add_priority_message_flow - response = @service.add_chatroom_priority_message("RC:CmdMsg") + def test_add_message_priority_flow + response = @service.add_chatroom_message_priority("RC:CmdMsg") assert_equal 200, response["code"] - response = @service.add_chatroom_priority_message(["RC:DizNtf", "RC:CmdNtf"]) + response = @service.add_chatroom_message_priority(["RC:DizNtf", "RC:CmdNtf"]) assert_equal 200, response["code"] - response = @service.chatroom_priority_messages + response = @service.chatroom_message_priorities assert_equal ["RC:CmdMsg", "RC:DizNtf", "RC:CmdNtf"].sort, response["objectNames"].sort - response = @service.remove_chatroom_priority_message(["RC:DizNtf", "RC:CmdNtf"]) + response = @service.remove_chatroom_message_priority(["RC:DizNtf", "RC:CmdNtf"]) assert_equal 200, response["code"] - response = @service.remove_chatroom_priority_message("RC:CmdMsg") + response = @service.remove_chatroom_message_priority("RC:CmdMsg") assert_equal 200, response["code"] - response = @service.chatroom_priority_messages + response = @service.chatroom_message_priorities assert_empty response["objectNames"] end end From 1de42b5f49a673d651134b52b1e00e6e904f964b Mon Sep 17 00:00:00 2001 From: Martin Hong Date: Sat, 10 Mar 2018 22:31:48 +0800 Subject: [PATCH 14/21] integrate chatroom whitelist api --- lib/rong_cloud/services/message_priority.rb | 12 ++++++++++ .../services/message_priority_test.rb | 22 ++++++++++++++++++- 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/lib/rong_cloud/services/message_priority.rb b/lib/rong_cloud/services/message_priority.rb index 7889eb8..29e2a1a 100644 --- a/lib/rong_cloud/services/message_priority.rb +++ b/lib/rong_cloud/services/message_priority.rb @@ -15,6 +15,18 @@ def remove_chatroom_message_priority(object_name) 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 \ No newline at end of file diff --git a/test/rong_cloud/services/message_priority_test.rb b/test/rong_cloud/services/message_priority_test.rb index bcd0aff..ce72db9 100644 --- a/test/rong_cloud/services/message_priority_test.rb +++ b/test/rong_cloud/services/message_priority_test.rb @@ -5,7 +5,7 @@ module Services class MessagePriorityTest < Minitest::Test include RongCloud::ServiceTestSetup - def test_add_message_priority_flow + def test_chatroom_message_priority_flow response = @service.add_chatroom_message_priority("RC:CmdMsg") assert_equal 200, response["code"] @@ -24,6 +24,26 @@ def test_add_message_priority_flow response = @service.chatroom_message_priorities assert_empty response["objectNames"] end + + def test_chatroom_message_whitelist_flow + response = @service.add_chatroom_message_whitelist("RC:TxtMsg") + assert_equal 200, response["code"] + + response = @service.add_chatroom_message_whitelist(["RC:ImgMsg", "RC:LBSMsg"]) + assert_equal 200, response["code"] + + response = @service.chatroom_message_whitelist + assert_equal ["RC:TxtMsg", "RC:ImgMsg", "RC:LBSMsg"].sort, response["whitlistMsgType"].sort + + response = @service.remove_chatroom_message_whitelist(["RC:ImgMsg", "RC:LBSMsg"]) + assert_equal 200, response["code"] + + response = @service.remove_chatroom_message_whitelist("RC:TxtMsg") + assert_equal 200, response["code"] + + response = @service.chatroom_message_whitelist + assert_equal [""], response["whitlistMsgType"] + end end end end \ No newline at end of file From bcc7aa31c05f94166fda18e69e99cd6274c75831 Mon Sep 17 00:00:00 2001 From: Martin Hong Date: Sat, 10 Mar 2018 22:42:28 +0800 Subject: [PATCH 15/21] integrate keepalive chatroom apis --- lib/rong_cloud/services/chatroom.rb | 15 +++++++++++++ test/rong_cloud/services/chatroom_test.rb | 27 +++++++++++++++++++++++ 2 files changed, 42 insertions(+) diff --git a/lib/rong_cloud/services/chatroom.rb b/lib/rong_cloud/services/chatroom.rb index b2b9781..02708b8 100644 --- a/lib/rong_cloud/services/chatroom.rb +++ b/lib/rong_cloud/services/chatroom.rb @@ -136,6 +136,21 @@ def unblock_chatroom_user(chatroom_id, user_id) 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 \ No newline at end of file diff --git a/test/rong_cloud/services/chatroom_test.rb b/test/rong_cloud/services/chatroom_test.rb index 2834df4..c3f0c3b 100644 --- a/test/rong_cloud/services/chatroom_test.rb +++ b/test/rong_cloud/services/chatroom_test.rb @@ -204,6 +204,33 @@ def test_block_chatroom_user_flow refute response["users"].detect{ |u| u["userId"] == "user5" } end + def test_add_keepalive_chatroom + error = assert_raises RongCloud::RequestError do + @service.add_keepalive_chatroom(10011) + end + + assert_equal "聊天室保活服务未开通。", error.message + assert_equal 1009, error.business_code + end + + def test_remove_keepalive_chatroom + error = assert_raises RongCloud::RequestError do + @service.remove_keepalive_chatroom(10011) + end + + assert_equal "聊天室保活服务未开通。", error.message + assert_equal 1009, error.business_code + end + + def test_keepalive_chatrooms + error = assert_raises RongCloud::RequestError do + @service.keepalive_chatrooms + end + + assert_equal "聊天室保活服务未开通。", error.message + assert_equal 1009, error.business_code + end + private def create_chatrooms(chatrooms = { 10000001 => "super chatroom"}) @service.create_chatroom(chatrooms) From eb45e5b44f08e20afb21160bc2213a6ebc38ce71 Mon Sep 17 00:00:00 2001 From: Martin Hong Date: Sat, 10 Mar 2018 22:51:52 +0800 Subject: [PATCH 16/21] integrate conversation notification set/get apis --- lib/rong_cloud/service.rb | 2 ++ .../services/conversation_notification.rb | 23 ++++++++++++++++ .../conversation_notification_test.rb | 27 +++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 lib/rong_cloud/services/conversation_notification.rb create mode 100644 test/rong_cloud/services/conversation_notification_test.rb diff --git a/lib/rong_cloud/service.rb b/lib/rong_cloud/service.rb index 5f122c9..7617ea4 100644 --- a/lib/rong_cloud/service.rb +++ b/lib/rong_cloud/service.rb @@ -1,5 +1,6 @@ require 'rong_cloud/request' require 'rong_cloud/services/user' +require 'rong_cloud/services/conversation_notification' require 'rong_cloud/services/message' require 'rong_cloud/services/message_recall' require 'rong_cloud/services/message_priority' @@ -12,6 +13,7 @@ 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 diff --git a/lib/rong_cloud/services/conversation_notification.rb b/lib/rong_cloud/services/conversation_notification.rb new file mode 100644 index 0000000..19748d5 --- /dev/null +++ b/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 \ No newline at end of file diff --git a/test/rong_cloud/services/conversation_notification_test.rb b/test/rong_cloud/services/conversation_notification_test.rb new file mode 100644 index 0000000..d51efe6 --- /dev/null +++ b/test/rong_cloud/services/conversation_notification_test.rb @@ -0,0 +1,27 @@ +require 'rong_cloud/service_test_setup' + +module RongCloud + module Services + class ConversationNotificationTest < Minitest::Test + include RongCloud::ServiceTestSetup + + def test_set_conversation_notification + response = @service.set_conversation_notification(1, 2, 99, 1) + assert_equal 200, response["code"] + end + + def test_get_conversation_notification + @service.set_conversation_notification(1, 2, 99, 1) + response = @service.get_conversation_notification(1, 2, 99) + assert_equal 1, response["isMuted"] + + @service.set_conversation_notification(1, 2, 99, 0) + response = @service.get_conversation_notification(1, 2, 99) + assert_equal 0, response["isMuted"] + + response = @service.get_conversation_notification(1, 2, "unexisted_id") + assert_equal 0, response["isMuted"] + end + end + end +end \ No newline at end of file From d8eb88251190d9e46fb140a10ed8c35637d64f6a Mon Sep 17 00:00:00 2001 From: Martin Hong Date: Sat, 10 Mar 2018 22:55:08 +0800 Subject: [PATCH 17/21] fix failed test case --- test/rong_cloud/services/message/message_channel_test.rb | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/test/rong_cloud/services/message/message_channel_test.rb b/test/rong_cloud/services/message/message_channel_test.rb index 6b446b4..642b634 100644 --- a/test/rong_cloud/services/message/message_channel_test.rb +++ b/test/rong_cloud/services/message/message_channel_test.rb @@ -13,8 +13,7 @@ def test_initialize_with_unsupported_channel_name error = assert_raises RongCloud::UnsupportedMessageChannelName do RongCloud::Services::Message::MessageChannel.new(:nothing) end - expected_error = "support only channels: [\"private\", \"private_template\", \"system\", \"system_template\", \"group\", \"discussion\", \"chatroom\", \"broadcast\"]" - assert_equal expected_error, error.message + assert error.message =~ /^support\sonly\schannels:/ end def test_target_param_name_for_private From ddcdb89c3daea06e87394b3240a8663d1a5ab56b Mon Sep 17 00:00:00 2001 From: Martin Hong Date: Sat, 10 Mar 2018 22:55:32 +0800 Subject: [PATCH 18/21] update version to v0.2.0 --- rong_cloud.gemspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rong_cloud.gemspec b/rong_cloud.gemspec index 64d6e08..7768986 100644 --- a/rong_cloud.gemspec +++ b/rong_cloud.gemspec @@ -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' From 6d6b269c960ba9d38b38b50ed52bb76e16bfc5d7 Mon Sep 17 00:00:00 2001 From: Martin Hong Date: Sat, 10 Mar 2018 23:19:15 +0800 Subject: [PATCH 19/21] set timeout for http requests --- lib/rong_cloud/configuration.rb | 7 ++++++- lib/rong_cloud/request.rb | 6 +++++- test/rong_cloud/request_test.rb | 12 ++++++++++++ 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/lib/rong_cloud/configuration.rb b/lib/rong_cloud/configuration.rb index b4702d9..fd5acb8 100644 --- a/lib/rong_cloud/configuration.rb +++ b/lib/rong_cloud/configuration.rb @@ -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 diff --git a/lib/rong_cloud/request.rb b/lib/rong_cloud/request.rb index cc2eeb3..06f0552 100644 --- a/lib/rong_cloud/request.rb +++ b/lib/rong_cloud/request.rb @@ -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 diff --git a/test/rong_cloud/request_test.rb b/test/rong_cloud/request_test.rb index 67527bc..9be79f7 100644 --- a/test/rong_cloud/request_test.rb +++ b/test/rong_cloud/request_test.rb @@ -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 \ No newline at end of file From bf64883a36b2b65c6ad2aa9c3070d9b7ef29d368 Mon Sep 17 00:00:00 2001 From: Martin Hong Date: Sat, 10 Mar 2018 23:28:57 +0800 Subject: [PATCH 20/21] fix failed test case --- test/rong_cloud/services/message_priority_test.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/test/rong_cloud/services/message_priority_test.rb b/test/rong_cloud/services/message_priority_test.rb index ce72db9..e6e44ae 100644 --- a/test/rong_cloud/services/message_priority_test.rb +++ b/test/rong_cloud/services/message_priority_test.rb @@ -33,7 +33,8 @@ def test_chatroom_message_whitelist_flow assert_equal 200, response["code"] response = @service.chatroom_message_whitelist - assert_equal ["RC:TxtMsg", "RC:ImgMsg", "RC:LBSMsg"].sort, response["whitlistMsgType"].sort + whitelist = response["whitlistMsgType"].sort.select{ |i| !i.empty? } + assert_equal ["RC:TxtMsg", "RC:ImgMsg", "RC:LBSMsg"].sort, whitelist response = @service.remove_chatroom_message_whitelist(["RC:ImgMsg", "RC:LBSMsg"]) assert_equal 200, response["code"] From 661d7d0e9454f261694fbea024e1f96b1728de45 Mon Sep 17 00:00:00 2001 From: Martin Hong Date: Sat, 10 Mar 2018 23:36:56 +0800 Subject: [PATCH 21/21] set timeout to 10 seconds in test case --- test/test_helper.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/test/test_helper.rb b/test/test_helper.rb index 7a2cc38..301a955 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -20,5 +20,6 @@ def rong_cloud_configure_with_settings config.app_key = ENV["RONGCLOUD_APP_KEY"] config.app_secret = ENV["RONGCLOUD_APP_SECRET"] config.host = ENV["RONGCLOUD_API_HOST"] || "https://api.cn.ronghub.com" + config.timeout = 10 end end \ No newline at end of file