From a2ae51e943d855748962f4738dd9f87b96ad00b0 Mon Sep 17 00:00:00 2001
From: Alexander Lantsev <aunsane@gmail.com>
Date: Wed, 24 Jun 2015 09:19:27 +0000
Subject: Steam: code cleanup

git-svn-id: http://svn.miranda-ng.org/main/trunk@14358 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
---
 protocols/Steam/src/request_queue.cpp  |  5 +--
 protocols/Steam/src/stdafx.h           |  1 +
 protocols/Steam/src/steam_contacts.cpp | 16 ++++----
 protocols/Steam/src/steam_login.cpp    |  2 +-
 protocols/Steam/src/steam_messages.cpp | 75 ++++++++++++++++++----------------
 protocols/Steam/src/steam_pooling.cpp  |  4 +-
 protocols/Steam/src/steam_proto.cpp    | 17 +-------
 protocols/Steam/src/steam_proto.h      | 30 +-------------
 protocols/Steam/src/steam_request.cpp  | 15 ++++---
 9 files changed, 66 insertions(+), 99 deletions(-)

(limited to 'protocols/Steam/src')

diff --git a/protocols/Steam/src/request_queue.cpp b/protocols/Steam/src/request_queue.cpp
index 4e343a5118..c419ffbd26 100644
--- a/protocols/Steam/src/request_queue.cpp
+++ b/protocols/Steam/src/request_queue.cpp
@@ -78,16 +78,15 @@ void RequestQueue::Execute(RequestQueueItem *item)
 	CallService(MS_NETLIB_FREEHTTPREQUESTSTRUCT, 0, (LPARAM)response);
 	if (item->finallyCallback != NULL)
 		item->finallyCallback(item->arg);
-	requests.remove(item);
 	delete item;
 }
 
 unsigned int RequestQueue::AsyncSendThread(void *owner, void *arg)
 {
-	RequestQueue *that = (RequestQueue*)owner;
+	RequestQueue *queue = (RequestQueue*)owner;
 	RequestQueueItem *item = (RequestQueueItem*)arg;
 
-	that->Execute(item);
+	queue->Execute(item);
 
 	return 0;
 }
diff --git a/protocols/Steam/src/stdafx.h b/protocols/Steam/src/stdafx.h
index 7aecea533b..e0a3b694a6 100644
--- a/protocols/Steam/src/stdafx.h
+++ b/protocols/Steam/src/stdafx.h
@@ -29,6 +29,7 @@
 #include <m_xstatus.h>
 #include <m_extraicons.h>
 #include <m_gui.h>
+#include <m_http.h>
 
 #include <map>
 #include <vector>
diff --git a/protocols/Steam/src/steam_contacts.cpp b/protocols/Steam/src/steam_contacts.cpp
index 4c87e79575..117ae8bbe4 100644
--- a/protocols/Steam/src/steam_contacts.cpp
+++ b/protocols/Steam/src/steam_contacts.cpp
@@ -524,7 +524,7 @@ void CSteamProto::OnGotAvatar(const NETLIBHTTPREQUEST *response, void *arg)
 	ai.hContact = (MCONTACT)arg;
 	GetDbAvatarInfo(ai);
 
-	if (response == NULL || response->resultCode != HTTP_STATUS_OK)
+	if (response == NULL || response->resultCode != HTTP_CODE_OK)
 	{
 		ptrA steamId(getStringA(ai.hContact, "SteamID"));
 		debugLogA("CSteamProto::OnGotAvatar: failed to get avatar %s", steamId);
@@ -551,7 +551,7 @@ void CSteamProto::OnFriendAdded(const NETLIBHTTPREQUEST *response, void *arg)
 {
 	SendAuthParam *param = (SendAuthParam*)arg;
 
-	if (response == NULL || response->resultCode != HTTP_STATUS_OK || lstrcmpiA(response->pData, "true"))
+	if (response == NULL || response->resultCode != HTTP_CODE_OK || lstrcmpiA(response->pData, "true"))
 	{
 		ptrA steamId(getStringA(param->hContact, "SteamID"));
 		debugLogA("CSteamProto::OnFriendAdded: failed to add friend %s", steamId);
@@ -570,7 +570,7 @@ void CSteamProto::OnFriendAdded(const NETLIBHTTPREQUEST *response, void *arg)
 
 void CSteamProto::OnFriendBlocked(const NETLIBHTTPREQUEST *response, void *arg)
 {
-	if (response == NULL || response->resultCode != HTTP_STATUS_OK || lstrcmpiA(response->pData, "true"))
+	if (response == NULL || response->resultCode != HTTP_CODE_OK || lstrcmpiA(response->pData, "true"))
 	{
 		debugLogA("CSteamProto::OnFriendIgnored: failed to ignore friend %s", (char*)arg);
 		return;
@@ -579,7 +579,7 @@ void CSteamProto::OnFriendBlocked(const NETLIBHTTPREQUEST *response, void *arg)
 
 void CSteamProto::OnFriendRemoved(const NETLIBHTTPREQUEST *response, void *arg)
 {
-	if (response == NULL || response->resultCode != HTTP_STATUS_OK || lstrcmpiA(response->pData, "true"))
+	if (response == NULL || response->resultCode != HTTP_CODE_OK || lstrcmpiA(response->pData, "true"))
 	{
 		MCONTACT hContact = (MCONTACT)arg;
 		ptrA who(getStringA(hContact, "SteamID"));
@@ -591,7 +591,7 @@ void CSteamProto::OnFriendRemoved(const NETLIBHTTPREQUEST *response, void *arg)
 
 void CSteamProto::OnAuthRequested(const NETLIBHTTPREQUEST *response, void *arg)
 {
-	if (response == NULL || response->resultCode != HTTP_STATUS_OK)
+	if (response == NULL || response->resultCode != HTTP_CODE_OK)
 	{
 		debugLogA("CSteamProto::OnAuthRequested: failed to request info for %s", (char*)arg);
 		return;
@@ -655,7 +655,7 @@ void CSteamProto::OnAuthRequested(const NETLIBHTTPREQUEST *response, void *arg)
 
 void CSteamProto::OnPendingApproved(const NETLIBHTTPREQUEST *response, void *arg)
 {
-	if (response == NULL || response->resultCode != HTTP_STATUS_OK)
+	if (response == NULL || response->resultCode != HTTP_CODE_OK)
 	{
 		debugLogA("CSteamProto::OnPendingApproved: failed to approve pending from %s", (char*)arg);
 		return;
@@ -675,7 +675,7 @@ void CSteamProto::OnPendingApproved(const NETLIBHTTPREQUEST *response, void *arg
 
 void CSteamProto::OnPendingIgnoreded(const NETLIBHTTPREQUEST *response, void *arg)
 {
-	if (response == NULL || response->resultCode != HTTP_STATUS_OK)
+	if (response == NULL || response->resultCode != HTTP_CODE_OK)
 	{
 		debugLogA("CSteamProto::OnPendingApproved: failed to ignore pending from %s", (char*)arg);
 		return;
@@ -695,7 +695,7 @@ void CSteamProto::OnPendingIgnoreded(const NETLIBHTTPREQUEST *response, void *ar
 
 void CSteamProto::OnSearchByIdEnded(const NETLIBHTTPREQUEST *response, void *arg)
 {
-	if (response == NULL || response->resultCode != HTTP_STATUS_OK)
+	if (response == NULL || response->resultCode != HTTP_CODE_OK)
 	{
 		ProtoBroadcastAck(NULL, ACKTYPE_SEARCH, ACKRESULT_FAILED, (HANDLE)STEAM_SEARCH_BYID, 0);
 		debugLogA("CSteamProto::OnSearchByIdEnded: failed to get summaries for %s", (char*)arg);
diff --git a/protocols/Steam/src/steam_login.cpp b/protocols/Steam/src/steam_login.cpp
index 6128428dbe..e52455a4d5 100644
--- a/protocols/Steam/src/steam_login.cpp
+++ b/protocols/Steam/src/steam_login.cpp
@@ -271,7 +271,7 @@ void CSteamProto::OnLoggedOn(const NETLIBHTTPREQUEST *response)
 
 	JSONNode *node = json_get(root, "error");
 	ptrT error(json_as_string(node));
-	if (mir_tstrcmpi(error, _T("OK")) || response->resultCode == HTTP_STATUS_UNAUTHORIZED)
+	if (mir_tstrcmpi(error, _T("OK")) || response->resultCode == HTTP_CODE_UNAUTHORIZED)
 	{
 		// Probably expired TokenSecret
 		HandleTokenExpired();
diff --git a/protocols/Steam/src/steam_messages.cpp b/protocols/Steam/src/steam_messages.cpp
index 563923c919..fc49c7b0e8 100644
--- a/protocols/Steam/src/steam_messages.cpp
+++ b/protocols/Steam/src/steam_messages.cpp
@@ -1,17 +1,38 @@
 #include "stdafx.h"
 
-//void CSteamProto::SendTypingThread(void *arg)
-//{
-//	MCONTACT hContact = (MCONTACT)arg;
-//
-//	ptrA token(getStringA("TokenSecret"));
-//	ptrA umqId(getStringA("UMQID"));
-//	ptrA steamId(getStringA(hContact, "SteamID"));
-//
-//	MessageApi::SendResult sendResult;
-//	debugLogA("CSteamProto::SendTypingThread: call PollApi::MessageApi::SendMessage");
-//	MessageApi::SendTyping(m_hNetlibUser, token, umqId, steamId, &sendResult);
-//}
+struct SendMessageParam
+{
+	MCONTACT hContact;
+	HANDLE hMessage;
+	char *message;
+};
+
+void MessageParamFree(void *arg)
+{
+	SendMessageParam *param = (SendMessageParam*)arg;
+	mir_free(param->message);
+	mir_free(param);
+}
+
+int CSteamProto::OnSendMessage(MCONTACT hContact, const char* message)
+{
+	UINT hMessage = InterlockedIncrement(&hMessageProcess);
+
+	SendMessageParam *param = (SendMessageParam*)mir_calloc(sizeof(SendMessageParam));
+	param->hContact = hContact;
+	param->hMessage = (HANDLE)hMessage;
+	param->message = mir_strdup(message);
+
+	ptrA token(getStringA("TokenSecret"));
+	ptrA umqid(getStringA("UMQID"));
+	ptrA steamId(getStringA(hContact, "SteamID"));
+	PushRequest(
+		new SendMessageRequest(token, umqid, steamId, message),
+		&CSteamProto::OnMessageSent,
+		param, MessageParamFree);
+
+	return hMessage;
+}
 
 void CSteamProto::OnMessageSent(const NETLIBHTTPREQUEST *response, void *arg)
 {
@@ -20,7 +41,7 @@ void CSteamProto::OnMessageSent(const NETLIBHTTPREQUEST *response, void *arg)
 	ptrT error(mir_tstrdup(TranslateT("Unknown error")));
 	ptrT steamId(getTStringA(param->hContact, "SteamID"));
 
-	if (response != NULL && response->resultCode == HTTP_STATUS_OK)
+	if (response != NULL && response->resultCode == HTTP_CODE_OK)
 	{
 		JSONROOT root(response->pData);
 		JSONNode *node = json_get(root, "error");
@@ -28,29 +49,13 @@ void CSteamProto::OnMessageSent(const NETLIBHTTPREQUEST *response, void *arg)
 			error = json_as_string(node);
 	}
 
-	int status = ACKRESULT_FAILED;
-
-	if (!mir_tstrcmpi(error, _T("OK")))
+	if (mir_tstrcmpi(error, _T("OK")) != 0)
 	{
-		status = ACKRESULT_SUCCESS;
-		error = NULL;
+		ptrA errorA(mir_t2a(error));
+		debugLogA("CSteamProto::OnMessageSent: failed to send message for %s (%s)", steamId, errorA);
+		ProtoBroadcastAck(param->hContact, ACKTYPE_MESSAGE, ACKRESULT_FAILED, param->hMessage, (LPARAM)errorA);
+		return;
 	}
-	else
-		debugLog(_T("CSteamProto::OnMessageSent: failed to send message for %s (%s)"), steamId, error);
-
-	ptrA errorA(mir_t2a(error));
-
-	ProtoBroadcastAck(
-		param->hContact,
-		ACKTYPE_MESSAGE,
-		status,
-		param->hMessage,
-		(LPARAM) errorA);
-}
 
-void CSteamProto::MessageParamFree(void *arg)
-{
-	SendMessageParam *param = (SendMessageParam*)arg;
-	mir_free(param->message);
-	mir_free(param);
+	ProtoBroadcastAck(param->hContact, ACKTYPE_MESSAGE, ACKRESULT_SUCCESS, param->hMessage, 0);
 }
\ No newline at end of file
diff --git a/protocols/Steam/src/steam_pooling.cpp b/protocols/Steam/src/steam_pooling.cpp
index 71d1b20f0e..1233c9a7a0 100644
--- a/protocols/Steam/src/steam_pooling.cpp
+++ b/protocols/Steam/src/steam_pooling.cpp
@@ -180,7 +180,7 @@ void CSteamProto::PollingThread(void*)
 		NETLIBHTTPREQUEST *response = request->Send(m_hNetlibUser);
 		delete request;
 
-		if (response == NULL || response->resultCode != HTTP_STATUS_OK)
+		if (response == NULL || response->resultCode != HTTP_CODE_OK)
 		{
 			if (response != NULL)
 				CallService(MS_NETLIB_FREEHTTPREQUESTSTRUCT, 0, (LPARAM)response);
@@ -233,7 +233,7 @@ void CSteamProto::PollingThread(void*)
 			debugLog(_T("CSteamProto::PollingThread: %s (%d)"), error, response->resultCode);
 
 			// token has expired
-			if (response->resultCode == HTTP_STATUS_UNAUTHORIZED)
+			if (response->resultCode == HTTP_CODE_UNAUTHORIZED)
 				delSetting("TokenSecret");
 
 			// too low timeout?
diff --git a/protocols/Steam/src/steam_proto.cpp b/protocols/Steam/src/steam_proto.cpp
index c2e342e53f..2a626f5020 100644
--- a/protocols/Steam/src/steam_proto.cpp
+++ b/protocols/Steam/src/steam_proto.cpp
@@ -254,22 +254,7 @@ int CSteamProto::SendMsg(MCONTACT hContact, int, const char *message)
 		return 0;
 	}
 
-	UINT hMessage = InterlockedIncrement(&hMessageProcess);
-
-	SendMessageParam *param = (SendMessageParam*)mir_calloc(sizeof(SendMessageParam));
-	param->hContact = hContact;
-	param->hMessage = (HANDLE)hMessage;
-	param->message = mir_strdup(message);
-
-	ptrA token(getStringA("TokenSecret"));
-	ptrA umqid(getStringA("UMQID"));
-	ptrA steamId(getStringA(hContact, "SteamID"));
-	PushRequest(
-		new SendMessageRequest(token, umqid, steamId, message),
-		&CSteamProto::OnMessageSent,
-		param, MessageParamFree);
-
-	return hMessage;
+	return OnSendMessage(hContact, message);
 }
 
 int CSteamProto::SetStatus(int new_status)
diff --git a/protocols/Steam/src/steam_proto.h b/protocols/Steam/src/steam_proto.h
index 4b4dcaa40a..eed74c5c42 100644
--- a/protocols/Steam/src/steam_proto.h
+++ b/protocols/Steam/src/steam_proto.h
@@ -5,25 +5,12 @@
 #define STEAM_SEARCH_BYNAME 1002
 #define STEAM_TYPING_TIME 10
 
-struct PasswordParam
-{
-	char password[513];
-	char timestamp[16];
-};
-
 struct SendAuthParam
 {
 	MCONTACT hContact;
 	HANDLE hAuth;
 };
 
-struct SendMessageParam
-{
-	MCONTACT hContact;
-	HANDLE hMessage;
-	char *message;
-};
-
 struct STEAM_SEARCH_RESULT
 {
 	PROTOSEARCHRESULT hdr;
@@ -41,21 +28,6 @@ enum
 	CMI_MAX   // this item shall be the last one
 };
 
-enum HTTP_STATUS
-{
-	HTTP_STATUS_NONE = 0,
-	HTTP_STATUS_OK = 200,
-	HTTP_STATUS_FOUND = 302,
-	HTTP_STATUS_BAD_REQUEST = 400,
-	HTTP_STATUS_UNAUTHORIZED = 401,
-	HTTP_STATUS_FORBIDDEN = 403,
-	HTTP_STATUS_NOT_FOUND = 404,
-	HTTP_STATUS_METHOD_NOT_ALLOWED = 405,
-	HTTP_STATUS_TOO_MANY_REQUESTS = 429,
-	HTTP_STATUS_SERVICE_UNAVAILABLE = 503,
-	HTTP_STATUS_INSUFICIENTE_STORAGE = 507
-};
-
 typedef void(CSteamProto::*SteamResponseCallback)(const NETLIBHTTPREQUEST *response);
 typedef void(CSteamProto::*SteamResponseWithArgCallback)(const NETLIBHTTPREQUEST *response, void *arg);
 
@@ -183,8 +155,8 @@ protected:
 	void OnSearchByNameFinished(const NETLIBHTTPREQUEST *response, void *arg);
 
 	// messages
+	int OnSendMessage(MCONTACT hContact, const char* message);
 	void OnMessageSent(const NETLIBHTTPREQUEST *response, void *arg);
-	static void MessageParamFree(void *arg);
 
 	// menus
 	HGENMENU m_hMenuRoot;
diff --git a/protocols/Steam/src/steam_request.cpp b/protocols/Steam/src/steam_request.cpp
index 05a7b235b1..c480628151 100644
--- a/protocols/Steam/src/steam_request.cpp
+++ b/protocols/Steam/src/steam_request.cpp
@@ -35,6 +35,11 @@ static void SteamHttpResponse(const NETLIBHTTPREQUEST *response, void *arg)
 {
 	SteamResponseDelegate *delegate = (SteamResponseDelegate*)arg;
 	delegate->Invoke(response);
+}
+
+void SteamResponseDelegateFree(void *arg)
+{
+	SteamResponseDelegate *delegate = (SteamResponseDelegate*)arg;
 	delete delegate;
 }
 
@@ -46,28 +51,28 @@ void CSteamProto::PushRequest(HttpRequest *request)
 void CSteamProto::PushRequest(HttpRequest *request, SteamResponseCallback response)
 {
 	SteamResponseDelegate *delegate = new SteamResponseDelegate(this, response);
-	requestQueue->Push(request, SteamHttpResponse, delegate);
+	requestQueue->Push(request, SteamHttpResponse, delegate, SteamResponseDelegateFree);
 }
 
 void CSteamProto::PushRequest(HttpRequest *request, SteamResponseWithArgCallback response, void *arg, HttpFinallyCallback last)
 {
 	SteamResponseDelegate *delegate = new SteamResponseDelegate(this, response, arg, last);
-	requestQueue->Push(request, SteamHttpResponse, delegate);
+	requestQueue->Push(request, SteamHttpResponse, delegate, SteamResponseDelegateFree);
 }
 
 void CSteamProto::SendRequest(HttpRequest *request)
 {
-	requestQueue->Send(request, NULL, NULL);
+	requestQueue->Send(request);
 }
 
 void CSteamProto::SendRequest(HttpRequest *request, SteamResponseCallback response)
 {
 	SteamResponseDelegate *delegate = new SteamResponseDelegate(this, response);
-	requestQueue->Send(request, SteamHttpResponse, delegate);
+	requestQueue->Send(request, SteamHttpResponse, delegate, SteamResponseDelegateFree);
 }
 
 void CSteamProto::SendRequest(HttpRequest *request, SteamResponseWithArgCallback response, void *arg, HttpFinallyCallback last)
 {
 	SteamResponseDelegate *delegate = new SteamResponseDelegate(this, response, arg, last);
-	requestQueue->Send(request, SteamHttpResponse, delegate);
+	requestQueue->Send(request, SteamHttpResponse, delegate, SteamResponseDelegateFree);
 }
-- 
cgit v1.2.3