void TeamWorkApi::RequestFinished(){
   QIODevice::OpenMode eOpen = pobjReply->openMode();
   bMultiPage = false;

   int iStatusCode = pobjReply->attribute( QNetworkRequest::HttpStatusCodeAttribute ).toInt();

   bool bPages = false;
   if( pobjReply->hasRawHeader( "X-Pages" ) )
      bPages = true;

   int iPages = 1;
   int iPage = 1;

   if( bPages ){
      iPages = pobjReply->rawHeader( "X-Pages" ).toInt();
      iPage = pobjReply->rawHeader( "X-Page" ).toInt();
      if( iPage < iPages )
         bMultiPage = true;
   }

   int iRemaining = 100;
   if( pobjReply->hasRawHeader( "X-RateLimit-Remaining" ) )
      iRemaining = pobjReply->rawHeader( "X-RateLimit-Remaining" ).toInt();
   emit TwpmRateLimit( iRemaining );
   if( 15 > iRemaining )
      emit ClosingToRateLimit( iRemaining );

   pobjReply->deleteLater();

   if( QIODevice::NotOpen == eOpen )
      return;

   switch( typeCurrentRequest ){
      case TypeOfRequest::TmpmGetProjects:
         ParseProjects();
         break;
      case TypeOfRequest::TmpmGetTaskLists:
         ParseTasks( iPage + 1 );
         break;
      case TypeOfRequest::TmpmGetCurrentUser:
         ParseUser();
         break;
      case TypeOfRequest::TmpmPostTime:
         ParsePostedTime( iStatusCode );
         break;
   }

   emit TwpmRequestFinished();
}
Beispiel #2
0
/**
**  ParseBuffer: Handler client/server interaction.
**
**  @param session  Current session.
*/
static void ParseBuffer(Session *session)
{
	char *buf;

	if (!session || session->Buffer[0] == '\0') {
		return;
	}

	buf = session->Buffer;

	if (!session->UserData.LoggedIn) {
		if (!strncmp(buf, "USER ", 5)) {
			ParseUser(session, buf + 5);
		} else if (!strncmp(buf, "REGISTER ", 9)) {
			ParseRegister(session, buf + 9);
		} else {
			fprintf(stderr, "Unknown command: %s\n", session->Buffer);
			Send(session, "ERR_BADCOMMAND\n");
		}
	} else {
		if (!strncmp(buf, "USER ", 5) || !strncmp(buf, "REGISTER ", 9)) {
			Send(session, "ERR_ALREADYLOGGEDIN\n");
		} else if (!strncmp(buf, "CREATEGAME ", 11)) {
			ParseCreateGame(session, buf + 11);
		} else if (!strcmp(buf, "CANCELGAME") || !strncmp(buf, "CANCELGAME ", 11)) {
			ParseCancelGame(session, buf + 10);
		} else if (!strcmp(buf, "STARTGAME") || !strncmp(buf, "STARTGAME ", 10)) {
			ParseStartGame(session, buf + 9);
		} else if (!strcmp(buf, "LISTGAMES") || !strncmp(buf, "LISTGAMES ", 10)) {
			ParseListGames(session, buf + 9);
		} else if (!strncmp(buf, "JOINGAME ", 9)) {
			ParseJoinGame(session, buf + 9);
		} else if (!strcmp(buf, "PARTGAME") || !strncmp(buf, "PARTGAME ", 9)) {
			ParsePartGame(session, buf + 8);
		} else if (!strncmp(buf, "ENDGAME ", 8)) {
			ParseEndGame(session, buf + 8);
		} else if (!strncmp(buf, "MSG ", 4)) {
			ParseMsg(session, buf + 4);
		} else {
			fprintf(stderr, "Unknown command: %s\n", session->Buffer);
			Send(session, "ERR_BADCOMMAND\n");
		}
	}
}