summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--protocols/Steam/src/request_queue.cpp5
-rw-r--r--protocols/Steam/src/stdafx.h1
-rw-r--r--protocols/Steam/src/steam_contacts.cpp16
-rw-r--r--protocols/Steam/src/steam_login.cpp2
-rw-r--r--protocols/Steam/src/steam_messages.cpp75
-rw-r--r--protocols/Steam/src/steam_pooling.cpp4
-rw-r--r--protocols/Steam/src/steam_proto.cpp17
-rw-r--r--protocols/Steam/src/steam_proto.h30
-rw-r--r--protocols/Steam/src/steam_request.cpp15
9 files changed, 66 insertions, 99 deletions
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);
}