Beispiel #1
0
void PingTask::onGo()
{
	kDebug(YAHOO_RAW_DEBUG) ;

	YMSGTransfer *t = new YMSGTransfer(Yahoo::ServicePing);
	t->setId( client()->sessionID() );
	send( t );
	
	setSuccess();
}
void ClientStreamTest::slotConnected()
{
	kDebug(14180) << " connection is up";
	connected = true;
	YMSGTransfer *t = new YMSGTransfer(Yahoo::ServiceLogon);
	t->setParam( 1, "kopetetest");
	
	myTestObject->write(t);
	while(1);
}
void ConferenceTask::addInvite( const QString &room, const QStringList &who, const QStringList &members, const QString &msg )
{
	kdDebug(YAHOO_RAW_DEBUG) ;

	YMSGTransfer *t = new YMSGTransfer(Yahoo::ServiceConfAddInvite);
	t->setId( client()->sessionID() );
	t->setParam( 1, client()->userId().local8Bit() );

	QString whoList = who.first();
	for( int i = 1; i < who.size(); i++ )
		whoList += QString(",%1").arg( who[i] );
	t->setParam( 51, whoList.local8Bit() );

	t->setParam( 57, room.local8Bit() );
	t->setParam( 58, msg.local8Bit() );
	t->setParam( 97, 1 );
	for( QStringList::const_iterator it = members.begin(); it != members.end(); ++it )
	{
		t->setParam( 52, (*it).local8Bit() );
		t->setParam( 53, (*it).local8Bit() );	// Note: this field should only be set if the buddy has already joined the conference, but no harm is done this way
	}
	t->setParam( 13, "0" );

	send( t );
}
void RequestPictureTask::onGo()
{
	YMSGTransfer *t = new YMSGTransfer(Yahoo::ServicePicture);
	t->setId( client()->sessionID() );
	t->setParam( 1, client()->userId().toLocal8Bit());
	t->setParam( 5, m_target.toLocal8Bit() );
	t->setParam( 13, "1" );
	send( t );
	
	setSuccess();
}
void WebcamTask::registerWebcam()
{	
	kDebug(YAHOO_RAW_DEBUG) ;
	
	YMSGTransfer *t = new YMSGTransfer(Yahoo::ServiceWebcam);
	t->setId( client()->sessionID() );
	t->setParam( 1, client()->userId().toLocal8Bit());
	keysPending.append(client()->userId());

	send( t );
}
void ConferenceTask::leaveConference( const QString &room, const QStringList &members )
{
	kdDebug(YAHOO_RAW_DEBUG) ;

	YMSGTransfer *t = new YMSGTransfer(Yahoo::ServiceConfLogoff);
	t->setId( client()->sessionID() );
	t->setParam( 1, client()->userId().local8Bit() );
	for( QStringList::const_iterator it = members.begin(); it != members.end(); ++it )
		t->setParam( 3, (*it).local8Bit() );
	t->setParam( 57, room.local8Bit() );

	send( t );
}
Beispiel #7
0
bool YABTask::forMe( Transfer* transfer ) const
{
// 	kdDebug(YAHOO_RAW_DEBUG) << k_funcinfo << endl;
	
	YMSGTransfer *t = 0L;
	t = dynamic_cast<YMSGTransfer*>(transfer);
	if (!t)
		return false;

	if ( t->service() == Yahoo::ServiceContactDetails )	
		return true;
	else
		return false;
}
Beispiel #8
0
bool YABTask::take( Transfer* transfer )
{
	kdDebug(YAHOO_RAW_DEBUG) << k_funcinfo << endl;
	
	if ( !forMe( transfer ) )
		return false;

	YMSGTransfer *t = static_cast<YMSGTransfer*>(transfer);
	
	if( t->service() == Yahoo::ServiceContactDetails )
		parseContactDetails( t );
	
	return true;
}
void WebcamTask::requestWebcam( const QString &who )
{
	kDebug(YAHOO_RAW_DEBUG) ;
	
	YMSGTransfer *t = new YMSGTransfer(Yahoo::ServiceWebcam);
	t->setId( client()->sessionID() );
	t->setParam( 1, client()->userId().toLocal8Bit());

	if (!who.isEmpty())
		t->setParam( 5, who.toLocal8Bit() );
	keysPending.append(who);

	send( t );
}
void SendMessageTask::onGo()
{
	kDebug(YAHOO_RAW_DEBUG) ;

	if( m_text.isEmpty() )
	{
		kDebug(YAHOO_RAW_DEBUG) << "Text to send is empty.";
		client()->notifyError( i18n( "An error occurred while sending the message" ), i18n( "The message is empty." ), Client::Debug );
		return;
	}	
	int pos=0;
	
	// split messages that are longer than 800 chars. they get dropped otherwise
	while( pos < m_text.length() )
	{
		YMSGTransfer *t = new YMSGTransfer(Yahoo::ServiceMessage, Yahoo::StatusOffline);
		t->setId( client()->sessionID() );
		t->setParam( 1, client()->userId().toLocal8Bit() );
		t->setParam( 5, m_target.toLocal8Bit() );
		t->setParam( 14, m_text.mid( pos, 700).toUtf8() );
		t->setParam( 63, ";0" );
		t->setParam( 64, "0"  );	
		t->setParam( 97, 1 );	// UTF-8
		t->setParam( 206, client()->pictureFlag() );	
		send( t );

		pos += 700;
	}
	
	setSuccess();
}
bool WebcamTask::take( Transfer* transfer )
{
	if ( !forMe( transfer ) )
		return false;

	YMSGTransfer *t = static_cast<YMSGTransfer*>(transfer);
	
 	if( t->service() == Yahoo::ServiceWebcam )
 		parseWebcamInformation( t );
// 	else
// 		parseMessage( transfer );

	return true;
}
bool MessageReceiverTask::take( Transfer* transfer )
{
	if ( !forMe( transfer ) )
		return false;

	YMSGTransfer *t = 0L;
	t = dynamic_cast<YMSGTransfer*>(transfer);
	if (!t)
		return false;

	if( t->service() == Yahoo::ServiceNotify )
		parseNotify( t );
	else
		parseMessage( t );

	return true;
}
Beispiel #13
0
bool ConferenceTask::forMe( Transfer* transfer ) const
{
	kdDebug(YAHOO_RAW_DEBUG) << k_funcinfo << endl;
	
	YMSGTransfer *t = 0L;
	t = dynamic_cast<YMSGTransfer*>(transfer);
	if (!t)
		return false;

	if ( t->service() == Yahoo::ServiceConfInvite ||
		t->service() == Yahoo::ServiceConfLogon ||
		t->service() == Yahoo::ServiceConfDecline ||
		t->service() == Yahoo::ServiceConfLogoff ||
		t->service() == Yahoo::ServiceConfAddInvite ||
		t->service() == Yahoo::ServiceConfMsg )	
		return true;
	else
		return false;
}
void CoreProtocol::outgoingTransfer( Transfer* outgoing )
{
	kDebug(YAHOO_RAW_DEBUG) ;
	if ( outgoing->type() == Transfer::YMSGTransfer )
	{
		kDebug(YAHOO_RAW_DEBUG) << " got YMSGTransfer";
		YMSGTransfer *yt = (YMSGTransfer *) outgoing;
		QByteArray bytesOut = yt->serialize();
		
		//QTextStream dout( bytesOut, QIODevice::WriteOnly );
		//dout.setEncoding( QTextStream::Latin1 );
		//dout.setByteOrder( QDataStream::LittleEndian );
		//dout << bytesOut;
		//kDebug(YAHOO_RAW_DEBUG) << " " << bytesOut;
		emit outgoingData( bytesOut );
		// now convert 
		//fieldsToWire( fields );
	}
	delete outgoing;
}
void ConferenceTask::inviteConference( const QString &room, const QStringList &members, const QString &msg )
{
	kdDebug(YAHOO_RAW_DEBUG) ;

	YMSGTransfer *t = new YMSGTransfer(Yahoo::ServiceConfInvite);
	t->setId( client()->sessionID() );
	t->setParam( 1, client()->userId().local8Bit() );
	t->setParam( 50, client()->userId().local8Bit() );
	t->setParam( 57, room.local8Bit() );
	t->setParam( 58, msg.local8Bit() );
	t->setParam( 97, 1 );
	for( QStringList::const_iterator it = members.begin(); it != members.end(); ++it )
		t->setParam( 52, (*it).local8Bit() );
	t->setParam( 13, "0" );

	send( t );
}
Beispiel #16
0
void ConferenceTask::declineConference( const QString &room, const QStringList &members, const QString &msg )
{
    kDebug(YAHOO_RAW_DEBUG) ;

    YMSGTransfer *t = new YMSGTransfer(Yahoo::ServiceConfDecline);
    t->setId( client()->sessionID() );
    t->setParam( 1, client()->userId().toLocal8Bit() );
    for( QStringList::const_iterator it = members.begin(); it != members.end(); ++it )
        t->setParam( 3, (*it).toLocal8Bit() );
    t->setParam( 57, room.toLocal8Bit() );
    t->setParam( 14, msg.toUtf8() );
    t->setParam( 97, 1 );

    send( t );
}
Beispiel #17
0
void ConferenceTask::sendMessage( const QString &room, const QStringList &members, const QString &msg )
{
	kdDebug(YAHOO_RAW_DEBUG) << k_funcinfo << endl;

	YMSGTransfer *t = new YMSGTransfer(Yahoo::ServiceConfMsg);
	t->setId( client()->sessionID() );
	t->setParam( 1, client()->userId().local8Bit() );
	for( QStringList::const_iterator it = members.begin(); it != members.end(); it++ )
		t->setParam( 53, (*it).local8Bit() );
	t->setParam( 57, room.local8Bit() );
	t->setParam( 14, msg.utf8() );
	t->setParam( 97, 1 );

	send( t );
}
Beispiel #18
0
void SendAuthRespTask::onGo()
{
    YMSGTransfer *t = new YMSGTransfer(Yahoo::ServiceAuthorization);
    t->setId( client()->sessionID() );
    t->setParam( 1, client()->userId().local8Bit() );
    t->setParam( 5, m_target.local8Bit() );
    if( m_granted )
    {
        t->setParam( 13, 1 );
    }
    else
    {
        t->setParam( 13, 2 );
        t->setParam( 97, 1 );	// UTF
        t->setParam( 14, m_msg.utf8() );

    }
    send( t );

    setSuccess( true );
}
bool ConferenceTask::take( Transfer* transfer )
{
	if ( !forMe( transfer ) )
		return false;

	YMSGTransfer *t = 0L;
	t = static_cast<YMSGTransfer*>(transfer);

 	if( t->service() == Yahoo::ServiceConfInvite ||
		t->service() == Yahoo::ServiceConfAddInvite)
 		parseInvitation( t );
	else if( t->service() == Yahoo::ServiceConfMsg )
		parseMessage( t );
	else if( t->service() == Yahoo::ServiceConfLogon )
		parseUserJoined( t );
	else if( t->service() == Yahoo::ServiceConfLogoff )
		parseUserLeft( t );
	else if( t->service() == Yahoo::ServiceConfDecline )
		parseUserDeclined( t );

	return true;
}
void SendNotifyTask::onGo()
{
	YMSGTransfer *t = new YMSGTransfer(Yahoo::ServiceNotify);
	t->setId( client()->sessionID() );
	t->setStatus( Yahoo::StatusNotify );

	switch( m_type )
	{
	case NotifyTyping:
		t->setParam( 4, client()->userId().local8Bit() );
		t->setParam( 5, m_target.local8Bit() );
		t->setParam( 13, m_state );
		t->setParam( 14, " " );
		t->setParam( 49, "TYPING" );
	break;
	case NotifyWebcamInvite:

		kdDebug(YAHOO_RAW_DEBUG) << "send invitation set Param" << endl;
		t->setParam( 1, client()->userId().local8Bit() );
		t->setParam( 5, m_target.local8Bit() );
		t->setParam( 13, 0 );
		t->setParam( 14, " " );
		t->setParam( 49, "WEBCAMINVITE" );
	break;
	case NotifyGame:
	default:
		setError();
		delete t;
		return;
	break;
	}
	send( t );

	setSuccess();
}
int CoreProtocol::wireToTransfer( const QByteArray& wire )
{
	kDebug(YAHOO_RAW_DEBUG) ;
	// processing incoming data and reassembling it into transfers
	// may be an event or a response
	
	uint bytesParsed = 0;
			
	if ( wire.size() < 20 ) // minimal value of a YMSG header
	{
		m_state = NeedMore;
		return bytesParsed;
	}
	
	QByteArray tempWire = wire;
	QDataStream din( &tempWire, QIODevice::ReadOnly );
	
	// look at first four bytes and decide what to do with the chunk
	if ( okToProceed( din ) )
	{
		if ( (wire[0] == 'Y') && (wire[1] == 'M') && (wire[2] == 'S') && (wire[3] == 'G'))
		{
// 			kDebug(YAHOO_RAW_DEBUG) << " - looks like a valid YMSG packet";
			YMSGTransfer *t = static_cast<YMSGTransfer *>(m_YMSGProtocol->parse( wire, bytesParsed ));
// 			kDebug(YAHOO_RAW_DEBUG) << " - YMSG Protocol parsed " << bytesParsed << " bytes";
			if ( t )
			{
				if( wire.size() < t->packetLength() )
				{
					m_state = NeedMore;
					delete t;
					return 0;
				}
				m_inTransfer = t;
// 				kDebug(YAHOO_RAW_DEBUG) << " - got a valid packet ";
				
				m_state = Available;
				emit incomingData();
			}
			else
				bytesParsed = 0;
		}
		else 
		{ 
			kDebug(YAHOO_RAW_DEBUG) << " - not a valid YMSG packet. Trying to recover.";
			QTextStream s( wire, QIODevice::ReadOnly );
			QString remaining = s.readAll();
			int pos = remaining.indexOf( "YMSG", bytesParsed );
			if( pos >= 0 )
			{
				kDebug(YAHOO_RAW_DEBUG) << "Recover successful.";
				bytesParsed += pos;
			}
			else
			{
				kDebug(YAHOO_RAW_DEBUG) << "Recover failed. Dump it!";
				bytesParsed = wire.size();
			}
		}
	}
	return bytesParsed;
}