📄 shortuserinforequest.java
字号:
package openicq.net;import JOscarLib.*;import JOscarLib.Core.OscarConnection;import JOscarLib.Request.Event.RequestAnswerEvent;import JOscarLib.Request.Event.RequestListener;/** * The <code>ShortUserInfoRequest</code> class requests short user info from * the ICQ server. * @author Hansgeorg Schwibbe * @copyright 2004 */public abstract class ShortUserInfoRequest implements RequestListener{ private StringBuffer[] infoBuff; private String searchID; private int auth; /** * Initializes a new instance of the class <code>ShortUserInfoRequest</code>. * @param connection the connection to the ICQ server * @param ownID your own user ID * @param searchID the user ID of the user from which the short user info will * be requested */ public ShortUserInfoRequest(OscarConnection connection, int ownID, int searchID) { this.searchID = String.valueOf(searchID); // The data RawData reqSearchID = new RawData(searchID, RawData.DWORD_LENGHT); reqSearchID.invertIndianness(); RawData reqSubType = new RawData(0xBA04, 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() + reqSearchID.getForcedLenght(); RawData reqChunkSize = new RawData(chunkSize, RawData.WORD_LENGHT); reqChunkSize.invertIndianness(); // The TLV Tlv requestTlv = new Tlv(reqChunkSize, 0x01); requestTlv.appendRawDataToTlv(reqOwnerID); requestTlv.appendRawDataToTlv(reqDataType); requestTlv.appendRawDataToTlv(reqSeqNum); requestTlv.appendRawDataToTlv(reqSubType); requestTlv.appendRawDataToTlv(reqSearchID); // The Snac Snac requestSnac = new Snac(0x15, 0x02, 0x00, 0x00, ownID); requestSnac.addTlvToSnac(requestTlv); // The Flap Flap requestFlap = new Flap(0x02, requestSnac); connection.sendMonitoredFlap(requestFlap, this); } /** * Prototype to process the received short user info. * @param shortInfo the received short user info */ public abstract void onResponse(ShortUserInfo shortInfo); /** * Sets the received short user info and runs the <code>onResponse()</code> * method. * @param e answer event */ public void onRequestAnswer(RequestAnswerEvent e) { Flap flap = e.getRequestAnswerPacket(); byte[] data; int end, index; final int success; if (flap.getChannelId() != 0x02) { System.err.println("FLAP channel = " + String.valueOf(flap.getChannelId())); success = -1; return; } else if (flap.getSnac().getFamilyId() != 0x15 || flap.getSnac().getSubTypeId() != 0x03) { System.err.println("SNAC family = " + String.valueOf(flap.getSnac().getFamilyId()) + ", SNAC subtype = " + String.valueOf(flap.getSnac().getSubTypeId())); success = -1; return; } else { success = flap.getSnac().getDataFieldByteArray()[16]; } infoBuff = new StringBuffer[4]; // Save the short user info if (success == Flag.SUCCESS) { data = flap.getSnac().getDataFieldByteArray(); index = 16; for (int i = 0; i < infoBuff.length; i++) { index += 3; end = index + data[index - 1] * 10 + data[index - 2] - 1; infoBuff[i] = new StringBuffer(end - index); while (index < end) { infoBuff[i].append((char) data[index]); index++; } } auth = data[data.length - 5]; } else { for (int i = 0; i < infoBuff.length; i++) { infoBuff[i] = new StringBuffer(); } auth = -1; } this.onResponse(new ShortUserInfo() { public int getAuthFlag() { return auth; } public String getEmail() { return infoBuff[3].toString(); } public String getFirstName() { return infoBuff[1].toString(); } public String getLastName() { return infoBuff[2].toString(); } public String getNickName() { return infoBuff[0].toString(); } public int getSuccessByte() { return success; } public String getUserID() { return searchID; } }); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -