diff options
| -rw-r--r-- | protocols/SkypeWeb/src/requests/chatrooms.h | 18 | ||||
| -rw-r--r-- | protocols/SkypeWeb/src/skype_chatrooms.cpp | 14 | ||||
| -rw-r--r-- | protocols/SkypeWeb/src/skype_proto.h | 1 | 
3 files changed, 33 insertions, 0 deletions
diff --git a/protocols/SkypeWeb/src/requests/chatrooms.h b/protocols/SkypeWeb/src/requests/chatrooms.h index b78053f7f1..1062b9f4b7 100644 --- a/protocols/SkypeWeb/src/requests/chatrooms.h +++ b/protocols/SkypeWeb/src/requests/chatrooms.h @@ -158,4 +158,22 @@ public:  	}
  };
 +class SetChatPropertiesRequest : public HttpRequest
 +{
 +public:
 +	SetChatPropertiesRequest(const char *regToken, const char *chatId, const char *propname, const char *value, const char *server = SKYPE_ENDPOINTS_HOST) :
 +		HttpRequest(REQUEST_PUT, FORMAT, "%s/v1/threads/19:%s/properties?name=%s", server, chatId, propname)
 +	{
 +		Headers
 +			<< CHAR_VALUE("Accept", "application/json, text/javascript")
 +			<< CHAR_VALUE("Content-Type", "application/json; charset=UTF-8")
 +			<< FORMAT_VALUE("RegistrationToken", "registrationToken=%s", regToken);
 +
 +		JSONNode node(JSON_NODE);
 +		node.push_back(JSONNode(propname, value));
 +
 +		Body << VALUE(node.write().c_str());
 +	}
 +};
 +
  #endif //_SKYPE_REQUEST_CHATS_H_
\ No newline at end of file diff --git a/protocols/SkypeWeb/src/skype_chatrooms.cpp b/protocols/SkypeWeb/src/skype_chatrooms.cpp index 2f9a6658d6..70b31e4447 100644 --- a/protocols/SkypeWeb/src/skype_chatrooms.cpp +++ b/protocols/SkypeWeb/src/skype_chatrooms.cpp @@ -190,6 +190,9 @@ int CSkypeProto::OnGroupChatEventHook(WPARAM, LPARAM lParam)  			OnLeaveChatRoom(FindChatRoom(chat_id), NULL);
  			break;
  		case 30:
 +			CMString newTopic = ChangeTopicForm();
 +			if (!newTopic.IsEmpty())
 +				SendRequest(new SetChatPropertiesRequest(m_szRegToken, chat_id, "topic", ptrA(mir_utf8encodeT(newTopic.GetBuffer())), m_szServer));
  			break;
  		}
  		break;
 @@ -718,4 +721,15 @@ void CSkypeProto::ResetOptions(HWND hwndDlg)  	HWND hwndClist = GetDlgItem(hwndDlg, IDC_CLIST);
  	SendMessage(hwndClist, CLM_SETHIDEEMPTYGROUPS, 1, 0);
  	SendMessage(hwndClist, CLM_GETHIDEOFFLINEROOT, 1, 0);
 +}
 +
 +CMString CSkypeProto::ChangeTopicForm()
 +{
 +	CMString caption(FORMAT, _T("[%s] %s"), _A2T(m_szModuleName), TranslateT("Enter new chatroom topic"));
 +	ENTER_STRING pForm = { sizeof(pForm) };
 +	pForm.type = ESF_PASSWORD;
 +	pForm.caption = caption;
 +	pForm.ptszInitVal = NULL;
 +	pForm.szModuleName = m_szModuleName;
 +	return (!EnterString(&pForm)) ? CMString() : CMString(ptrT(pForm.ptszResult));
  }
\ No newline at end of file diff --git a/protocols/SkypeWeb/src/skype_proto.h b/protocols/SkypeWeb/src/skype_proto.h index db136cd963..cbc434bc43 100644 --- a/protocols/SkypeWeb/src/skype_proto.h +++ b/protocols/SkypeWeb/src/skype_proto.h @@ -337,6 +337,7 @@ private:  	time_t GetLastMessageTime(MCONTACT hContact);
  	CMString RunConfirmationCode();
 +	CMString ChangeTopicForm();
  	//events
  	void InitDBEvents();
  	int __cdecl ProcessSrmmEvent(WPARAM, LPARAM);
  | 
