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 ); }
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; }
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; }
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 ); }
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 ); }
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 ); }
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; }