📄 setbasicuserinforequest.java
字号:
package openicq.net;
import JOscarLib.*;
import JOscarLib.Core.OscarConnection;
import JOscarLib.Request.Event.RequestAnswerEvent;
import JOscarLib.Request.Event.RequestListener;
/**
* The <code>SetBasicUserInfoRequest</code> class updates your own user
* details on the ICQ server.
* @author Hansgeorg Schwibbe
* @copyright 2004
*/
public abstract class SetBasicUserInfoRequest implements RequestListener
{
/**
* Initializes a new instance of the class
* <code>SetBasicUserInfoRequest</code>.
* @param connection the connection to the ICQ server
* @param ownID your own user ID
* @param nickName your new nickname
* @param firstName your new first name
* @param lastName your new last name
* @param email your new email
* @param homeCity your new home city
* @param homeState your new state
* @param homePhone your new phone number
* @param homeFax your new fax number
* @param homeAddress your new address
* @param cellPhone your new cellular number
* @param homeZip your new zip code
* @param homeCountry your new country
* @param gmtOffset the offset to GMT
* @param publishEmail the visibility of your email
*/
public SetBasicUserInfoRequest(OscarConnection connection, int ownID,
char[] nickName, char[] firstName,
char[] lastName, char[] email,
char[] homeCity, char[] homeState,
char[] homePhone, char[] homeFax,
char[] homeAddress, char[] cellPhone,
char[] homeZip, int homeCountry,
char gmtOffset, char publishEmail)
{
RawData reqNicknameLen = new RawData(nickName.length + 1,
RawData.WORD_LENGHT);
reqNicknameLen.invertIndianness();
RawData reqFirstNameLen = new RawData(firstName.length + 1,
RawData.WORD_LENGHT);
reqFirstNameLen.invertIndianness();
RawData reqLastNameLen = new RawData(lastName.length + 1,
RawData.WORD_LENGHT);
reqLastNameLen.invertIndianness();
RawData reqEmailLen = new RawData(email.length + 1, RawData.WORD_LENGHT);
reqEmailLen.invertIndianness();
RawData reqHomeCityLen = new RawData(homeCity.length + 1,
RawData.WORD_LENGHT);
reqHomeCityLen.invertIndianness();
RawData reqHomeStateLen = new RawData(homeState.length + 1,
RawData.WORD_LENGHT);
reqHomeStateLen.invertIndianness();
RawData reqHomePhoneLen = new RawData(homePhone.length + 1,
RawData.WORD_LENGHT);
reqHomePhoneLen.invertIndianness();
RawData reqHomeFaxLen = new RawData(homeFax.length + 1, RawData.WORD_LENGHT);
reqHomeFaxLen.invertIndianness();
RawData reqHomeAddressLen = new RawData(homeAddress.length + 1,
RawData.WORD_LENGHT);
reqHomeAddressLen.invertIndianness();
RawData reqCellPhoneLen = new RawData(cellPhone.length + 1,
RawData.WORD_LENGHT);
reqCellPhoneLen.invertIndianness();
RawData reqHomeZipLen = new RawData(homeZip.length + 1, RawData.WORD_LENGHT);
reqHomeZipLen.invertIndianness();
RawData reqHomeCountry = new RawData(homeCountry, RawData.WORD_LENGHT);
reqHomeCountry.invertIndianness();
RawData reqSubType = new RawData(0xEA03, RawData.WORD_LENGHT);
RawData reqSeqNum = new RawData(0x0200, RawData.WORD_LENGHT);
RawData reqDataType = new RawData(0xD007, RawData.WORD_LENGHT);
RawData reqOwnerID = new RawData(ownID, RawData.DWORD_LENGHT);
reqOwnerID.invertIndianness();
int chunkSize = reqOwnerID.getForcedLenght()
+ reqDataType.getForcedLenght()
+ reqSeqNum.getForcedLenght()
+ reqSubType.getForcedLenght()
+ reqNicknameLen.getForcedLenght() + nickName.length + 1
+ reqFirstNameLen.getForcedLenght() + firstName.length + 1
+ reqLastNameLen.getForcedLenght() + lastName.length + 1
+ reqEmailLen.getForcedLenght() + email.length + 1
+ reqHomeCityLen.getForcedLenght() + homeCity.length + 1
+ reqHomeStateLen.getForcedLenght() + homeState.length + 1
+ reqHomePhoneLen.getForcedLenght() + homePhone.length + 1
+ reqHomeFaxLen.getForcedLenght() + homeFax.length + 1
+ reqHomeAddressLen.getForcedLenght() + homeAddress.length
+ 1 + reqCellPhoneLen.getForcedLenght() + cellPhone.length
+ 1 + reqHomeZipLen.getForcedLenght() + homeZip.length + 5;
RawData reqChunkSize = new RawData(chunkSize, RawData.WORD_LENGHT);
reqChunkSize.invertIndianness();
// TLV
Tlv requestTlv = new Tlv(reqChunkSize, 0x01);
requestTlv.appendRawDataToTlv(reqOwnerID);
requestTlv.appendRawDataToTlv(reqDataType);
requestTlv.appendRawDataToTlv(reqSeqNum);
requestTlv.appendRawDataToTlv(reqSubType);
requestTlv.appendRawDataToTlv(reqNicknameLen);
for (int i = 0; i < nickName.length; i++)
{
requestTlv.appendRawDataToTlv(new RawData(nickName[i],
RawData.BYTE_LENGHT));
}
requestTlv.appendRawDataToTlv(new RawData(0x00, RawData.BYTE_LENGHT));
requestTlv.appendRawDataToTlv(reqFirstNameLen);
for (int i = 0; i < firstName.length; i++)
{
requestTlv.appendRawDataToTlv(new RawData(firstName[i],
RawData.BYTE_LENGHT));
}
requestTlv.appendRawDataToTlv(new RawData(0x00, RawData.BYTE_LENGHT));
requestTlv.appendRawDataToTlv(reqLastNameLen);
for (int i = 0; i < lastName.length; i++)
{
requestTlv.appendRawDataToTlv(new RawData(lastName[i],
RawData.BYTE_LENGHT));
}
requestTlv.appendRawDataToTlv(new RawData(0x00, RawData.BYTE_LENGHT));
requestTlv.appendRawDataToTlv(reqEmailLen);
for (int i = 0; i < email.length; i++)
{
requestTlv.appendRawDataToTlv(new RawData(email[i], RawData.BYTE_LENGHT));
}
requestTlv.appendRawDataToTlv(new RawData(0x00, RawData.BYTE_LENGHT));
requestTlv.appendRawDataToTlv(reqHomeCityLen);
for (int i = 0; i < homeCity.length; i++)
{
requestTlv.appendRawDataToTlv(new RawData(homeCity[i],
RawData.BYTE_LENGHT));
}
requestTlv.appendRawDataToTlv(new RawData(0x00, RawData.BYTE_LENGHT));
requestTlv.appendRawDataToTlv(reqHomeStateLen);
for (int i = 0; i < homeState.length; i++)
{
requestTlv.appendRawDataToTlv(new RawData(homeState[i],
RawData.BYTE_LENGHT));
}
requestTlv.appendRawDataToTlv(new RawData(0x00, RawData.BYTE_LENGHT));
requestTlv.appendRawDataToTlv(reqHomePhoneLen);
for (int i = 0; i < homePhone.length; i++)
{
requestTlv.appendRawDataToTlv(new RawData(homePhone[i],
RawData.BYTE_LENGHT));
}
requestTlv.appendRawDataToTlv(new RawData(0x00, RawData.BYTE_LENGHT));
requestTlv.appendRawDataToTlv(reqHomeFaxLen);
for (int i = 0; i < homeFax.length; i++)
{
requestTlv.appendRawDataToTlv(new RawData(homeFax[i], RawData.BYTE_LENGHT));
}
requestTlv.appendRawDataToTlv(new RawData(0x00, RawData.BYTE_LENGHT));
requestTlv.appendRawDataToTlv(reqHomeAddressLen);
for (int i = 0; i < homeAddress.length; i++)
{
requestTlv.appendRawDataToTlv(new RawData(homeAddress[i],
RawData.BYTE_LENGHT));
}
requestTlv.appendRawDataToTlv(new RawData(0x00, RawData.BYTE_LENGHT));
requestTlv.appendRawDataToTlv(reqCellPhoneLen);
for (int i = 0; i < cellPhone.length; i++)
{
requestTlv.appendRawDataToTlv(new RawData(cellPhone[i],
RawData.BYTE_LENGHT));
}
requestTlv.appendRawDataToTlv(new RawData(0x00, RawData.BYTE_LENGHT));
requestTlv.appendRawDataToTlv(reqHomeZipLen);
for (int i = 0; i < homeZip.length; i++)
{
requestTlv.appendRawDataToTlv(new RawData(homeZip[i], RawData.BYTE_LENGHT));
}
requestTlv.appendRawDataToTlv(new RawData(0x00, RawData.BYTE_LENGHT));
requestTlv.appendRawDataToTlv(reqHomeCountry);
requestTlv.appendRawDataToTlv(new RawData(gmtOffset, RawData.BYTE_LENGHT));
requestTlv.appendRawDataToTlv(new RawData(publishEmail, RawData.BYTE_LENGHT));
// Snac
Snac requestSnac = new Snac(0x15, 0x02, 0x00, 0x00, ownID);
requestSnac.addTlvToSnac(requestTlv);
// Flap
Flap requestFlap = new Flap(0x02, requestSnac);
connection.sendMonitoredFlap(requestFlap, this);
}
/**
* Prototype for processing the success byte.
* @param success the success byte
*/
public abstract void onResponse(int success);
/**
* Sets the success byte and runs the <code>onResponse()</code> method.
* @param e answer event
*/
public void onRequestAnswer(RequestAnswerEvent e)
{
Flap flap = e.getRequestAnswerPacket();
int success;
if (flap.getChannelId() != 0x02)
{
success = -1;
}
else if (flap.getSnac().getFamilyId() != 0x15
|| flap.getSnac().getSubTypeId() != 0x03)
{
success = -1;
}
else
{
success = flap.getSnac().getDataFieldByteArray()[16];
}
this.onResponse(success);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -