Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package ru.caffeineim.protocols.icq;
- /**
- * User: Terminator
- * Date: 19.09.2011
- * Time: 15:10:37
- */
- import ru.caffeineim.protocols.icq.core.OscarConnection;
- import ru.caffeineim.protocols.icq.exceptions.ContactListOperationException;
- import ru.caffeineim.protocols.icq.exceptions.ConvertStringException;
- import ru.caffeineim.protocols.icq.integration.events.*;
- import ru.caffeineim.protocols.icq.integration.listeners.MessagingListener;
- import ru.caffeineim.protocols.icq.integration.listeners.XStatusListener;
- import ru.caffeineim.protocols.icq.setting.enumerations.StatusModeEnum;
- import ru.caffeineim.protocols.icq.setting.enumerations.XStatusModeEnum;
- import ru.caffeineim.protocols.icq.setting.enumerations.ClientModeEnum;
- import ru.caffeineim.protocols.icq.integration.OscarInterface;
- import ru.caffeineim.protocols.icq.integration.listeners.OurStatusListener;
- import ru.caffeineim.protocols.icq.integration.listeners.MetaInfoListener;
- import ru.caffeineim.protocols.icq.setting.enumerations.PrivateStatus;
- import ru.caffeineim.protocols.icq.setting.enumerations.StatusFlagEnum;
- /**
- * @author Prolubnikov Dmitry
- * private status , meta info change - rehscm
- */
- public class ICQProtocol implements OurStatusListener, MessagingListener, XStatusListener, MetaInfoListener {
- private OscarConnection con = null;
- private MetaAckResults metas= null;
- //private AbstractProps props;
- private boolean connecting = false;
- public String server= "login.icq.com";
- public int port = 5190;
- public String screenName = "9430777";
- public String password = "пароль";
- @Override
- public void onShortUserInfo(MetaShortUserInfoEvent e) {
- System.out.println(e);
- }
- @Override
- public void IncomingUserEvent(IncomingUserEvent e) {
- //To change body of implemented methods use File | Settings | File Templates.
- }
- @Override
- public void onRegisterNewUINFailed(UINRegistrationFailedEvent e) {
- //To change body of implemented methods use File | Settings | File Templates.
- }
- @Override
- public void onRegisterNewUINSuccess(UINRegistrationSuccessEvent e) {
- //To change body of implemented methods use File | Settings | File Templates.
- }
- @Override
- public void onAffilationsUserInfo(MetaAffilationsUserInfoEvent e) {
- if(metas != null) metas.addMetaResult(e);
- // System.out.println(e);
- if(metas != null)
- sendMsg(metas.getOwnerUIN(), metas.getTextResult());
- }
- @Override
- public void onNotesUserInfo(MetaNoteUserInfoEvent e) {
- if(metas != null) metas.addMetaResult(e);
- // System.out.println(e);
- }
- @Override
- public void onMoreUserInfo(MetaMoreUserInfoEvent e) {
- if(metas != null) metas.addMetaResult(e);
- //System.out.println(e);
- }
- @Override
- public void onInterestsUserInfo(MetaInterestsUserInfoEvent e) {
- if(metas != null) metas.addMetaResult(e);
- //System.out.println(e);
- }
- @Override
- public void onWorkUserInfo(MetaWorkUserInfoEvent e) {
- if(metas != null) metas.addMetaResult(e);
- //System.out.println(e);
- }
- @Override
- public void onEmailUserInfo(MetaEmailUserInfoEvent e) {
- //System.out.println(e);
- }
- @Override
- public void onBasicUserInfo(MetaBasicUserInfoEvent e) {
- if(metas != null) metas.addMetaResult(e);
- //System.out.println(e);
- }
- public ICQProtocol() { }
- public void reConnect() {
- Disconnect();
- Connect();
- }
- public void Connect() {
- try {
- con = new OscarConnection(server, port, screenName, password, true, false);
- con.addMessagingListener(this);
- con.addXStatusListener(this);
- con.addOurStatusListener(this);
- con.addMetaInfoListener(this);
- con.connect();
- } catch (Exception ex) {
- connecting=false;
- }
- }
- @SuppressWarnings("CallToThreadDumpStack")
- public void Disconnect() {
- if(con == null) return;
- connecting=false;
- try {
- try {
- con.close();
- } catch (Exception ex ) {
- ex.printStackTrace();
- }
- con.removeMessagingListener(this);
- con.removeXStatusListener(this);
- con.removeOurStatusListener(this);
- con = null;
- } catch (Exception ex ) {
- ex.printStackTrace();
- }
- }
- public boolean isOnLine() {
- return connecting;
- }
- @SuppressWarnings("CallToThreadDumpStack")
- public synchronized void sendMsg(String sn, String msg) {//отправка сообщения
- try {
- OscarInterface.sendBasicMessage(con, sn, msg);
- } catch (ConvertStringException e) {
- System.out.println(msg);
- e.printStackTrace();
- }
- }
- @SuppressWarnings("CallToThreadDumpStack")
- public void authRequest(String uin, String msg){//запрос авторизации
- try {
- con.getContactList().sendAuthRequestMessage(uin, msg);
- } catch (ContactListOperationException ex) {
- ex.printStackTrace();
- }
- }
- @Override
- public void onIncomingMessage(IncomingMessageEvent e) {//прием сообщение
- System.out.println("BaseUin:" + screenName + " UIN:" + e.getSenderID() + " MSG: " + e.getMessage());
- try {
- int i = Integer.parseInt(e.getMessage());
- OscarInterface.changePrivateStatus(con, PrivateStatus.VIS_LIST);
- if(i == 1) OscarInterface.changeClient(con, new ClientModeEnum(ClientModeEnum.CAP_QIP)); //установка клиента
- if(i == 2) OscarInterface.changeFlagStatus(con, new StatusFlagEnum(StatusFlagEnum.WEBAWARE)); //установка флаг статуса
- if(i == 3) sendMsg(e.getSenderID(), "сообщение из ботика)");
- //if((i < 0) || (i > 5)) {
- ////sendMsg(e.getSenderID(), "нет такого статуса");
- //requestUserInfo(e.getSenderID(), Integer.toString(i));
- //}else {
- //PrivateStatus ps = PrivateStatus.UNVIS_ALL;
- //switch (i) {
- //case 1 : ps = PrivateStatus.VIS_ALL; break;
- //case 2 : ps = PrivateStatus.UNVIS_ALL; break;
- //case 3 : ps = PrivateStatus.VIS_LIST; break;
- //case 4 : ps = PrivateStatus.UNVIS_LIST; break;
- //case 5 : ps = PrivateStatus.CONTACT_LIST; break;
- //}
- //OscarInterface.changePrivateStatus(con, ps);
- //OscarInterface.changeXStatus(con, new XStatusModeEnum(XStatusModeEnum.DRINKING_BEER), new ClientModeEnum(ClientModeEnum.CAP_QIP));
- //sendMsg(e.getSenderID(), "установлен новый приватный статус: "+ps.getDescription());
- //}
- } catch (Exception e2) {
- System.out.println(e2.getMessage());
- //String text = e.getMessage().trim();
- //if(text.length() > 3) {
- //FullUserInfo info = new FullUserInfo();
- //// если имя короче шести шести символов, то пол Ж. если длиннее то пол М
- //info.setLastName(text);
- //int gender = text.length() > 6 ? 2 : 1;
- //info.setGender(gender);
- //OscarInterface.changeOwnInfo(con, screenName, info);
- //}
- }
- }
- @Override
- public void onOfflineMessage(OfflineMessageEvent e) {
- System.out.println("OFFLINE BaseUin:" + screenName + " UIN:" + e.getSenderUin() + " MSG: " + e.getMessage());
- }
- public void requestUserInfo(String oUIN, String tUIN) {
- metas = new MetaAckResults(oUIN, tUIN);
- OscarInterface.requestFullUserInfo(con, tUIN);
- }
- @Override
- public void onLogout(Exception exception) {
- connecting=false;
- System.out.println("UIN: " + screenName + " отключён ("+exception+").");
- }
- @Override
- public void onLogin() {
- connecting = true;
- OscarInterface.changeStatus(con, new StatusModeEnum(StatusModeEnum.HOME));
- OscarInterface.changeXStatus(con, new XStatusModeEnum(XStatusModeEnum.ANGRY), new ClientModeEnum(ClientModeEnum.CAP_QIP));
- System.out.println("UIN - " + screenName + " online");
- //
- con.getContactList();
- //
- OscarInterface.requestOfflineMessages(con);
- }
- @Override
- public void onAuthorizationFailed(LoginErrorEvent e) {
- connecting=false;
- System.out.println("Ошибка авторизации UIN: "+screenName+" ("+e.getErrorMessage()+").");
- }
- @Override
- public void onXStatusRequest(XStatusRequestEvent e) {
- try {
- OscarInterface.sendXStatus(con, new XStatusModeEnum(XStatusModeEnum.ANGRY),"тема","сообщение",
- e.getTime(), e.getMsgID(), e.getSenderID(), e.getSenderTcpVersion());
- //System.out.println("e.getTime() ="+ e.getTime());
- //System.out.println("e.getMsgID() ="+ e.getMsgID());
- //System.out.println("e.getSenderID() ="+ e.getSenderID());
- //System.out.println("e.getSenderTcpVersion() ="+ e.getSenderTcpVersion());
- }catch(ConvertStringException ex) {
- System.err.println(ex.getMessage());
- }
- }
- @Override
- public void onStatusResponse(StatusEvent e) { }//читаем статус пользователя
- @Override
- public void onXStatusResponse(XStatusResponseEvent e) { }//читаем хстатус пользователя
- @Override
- public void onIncomingUrl(IncomingUrlEvent e) {}
- @Override
- public void onMessageAck(MessageAckEvent e) {}
- @Override
- public void onMessageError(MessageErrorEvent e) {}
- @Override
- public void onMessageMissed(MessageMissedEvent e) {}
- public static void main(String[] args) {
- ICQProtocol prot = new ICQProtocol();
- prot.Connect();
- }
- }
Add Comment
Please, Sign In to add comment