コード例 #1
0
ファイル: GaduUserList.cs プロジェクト: dominikcebula/dotgadu
        /// <summary>
        /// Przesyla cala liste na serwer
        /// </summary>
        public void sendAll()
        {
            try
            {
                GaduPacketHeader          gaduPacketHeader;
                GaduPacketUserListRequest gaduPacketUserlistRequest;
                for (int i = 0; i < this.Count; i++)
                {
                    gaduPacketHeader          = new GaduPacketHeader();
                    gaduPacketUserlistRequest = new GaduPacketUserListRequest();

                    gaduPacketHeader.Type = GaduPacketConstans.GG_USERLIST_REQUEST;

                    gaduPacketUserlistRequest.Type    = (i == 0 ? GaduPacketConstans.GG_USERLIST_PUT : GaduPacketConstans.GG_USERLIST_PUT_MORE);
                    gaduPacketUserlistRequest.Request = this[i].getUserListString();

                    gaduPacketHeader.Length = gaduPacketUserlistRequest.getSize();

                    gaduSender.sendPacket(gaduPacketHeader);
                    gaduSender.sendPacket(gaduPacketUserlistRequest);
                }
            }
            catch (Exception exp)
            {
                throw new GaduUserListException(exp.Message);
            }
        }
コード例 #2
0
ファイル: GaduNotifier.cs プロジェクト: dominikcebula/dotgadu
        /// <summary>
        /// Dodawanie numerku w czasie pracy
        /// </summary>
        /// <param name="gaduPacketNotify">Numer do dodania reprezentowany przez pakiet GaduPacketNotify</param>
        public void addNotify(GaduPacketNotify gaduPacketNotify)
        {
            GaduPacketHeader gaduPacketHeader = new GaduPacketHeader(); // naglowek

            gaduPacketHeader.Type   = GaduPacketConstans.GG_ADD_NOTIFY; // ustawiamy odpowiedni typ pakiety
            gaduPacketHeader.Length = gaduPacketNotify.getSize();       // rozmiar pakiety
            gaduSender.sendPacket(gaduPacketHeader);                    // wysylamy naglowek
            gaduSender.sendPacket(gaduPacketNotify);                    // wysylamy pakiet
        }
コード例 #3
0
 /// <summary>
 /// Funkcja dzialajaca na rzecz watku
 /// </summary>
 private void go()
 {
     try
     {
         while (true)
         {
             Thread.Sleep(2 * 60 * 1000);                      // odczekaj 2 min
             GaduPacketHeader header = new GaduPacketHeader(); // przesylamy tylko naglowek
             header.Type   = GaduPacketConstans.GG_PING;       // typu GG_PING
             header.Length = 0;                                // po naglowku nic nie idzie, rozmiar 0
             gaduSender.sendPacket(header);                    // wyslij pakiet
             if (OnPing != null)                               // jezeli ktos podstawil jakas delegacje pod event
             {
                 OnPing.BeginInvoke(null, null);               // to ja wywolaj
             }
         }
     }
     catch (ThreadAbortException)
     {   // nie zadreczajmy uzytkownika tym wyjatkiem, w 99% powodowany przez Thread.Abort();
     }
     catch (Exception e)
     {   // jezeli cokolwiek poszlo nie tak
         if (Gadu.GaduCriticalError() == false)
         {
             throw new GaduPingerException(e.Message);
         }
     }
 }
コード例 #4
0
 /// <summary>
 /// Logowanie do gg
 /// </summary>
 /// <param name="uin">Numer gg</param>
 /// <param name="pass">Haslo</param>
 public void login(int uin, String pass)
 {
     try
     {
         GaduPacketHeader header      = new GaduPacketHeader();         // naglowek
         GaduPacketLogin  loginPacket = new GaduPacketLogin();          // pakiet logowania
         header.Type      = GaduPacketConstans.GG_LOGIN70;              // bedziemy sie logowac
         header.Length    = loginPacket.getSize();                      // dlugosc pakietu
         loginPacket.Uin  = uin;                                        // nr. gg
         loginPacket.Hash = BitConverter.GetBytes(getHash(pass, seed)); // szyfrujemy haslo, potem konwertujemy na tablice bajtow
         gaduSender.sendPacket(header);                                 // najpierw wpisujemy naglowek
         gaduSender.sendPacket(loginPacket);                            // teraz wpiszemy wlasciwy pakiet
     }
     catch (Exception e)
     {
         throw new GaduLoginException(e.Message);
     }
 }
コード例 #5
0
ファイル: GaduStatus.cs プロジェクト: dominikcebula/dotgadu
 /// <summary>
 /// Zmienia status uzytkownika gg
 /// </summary>
 /// <param name="statusid">Numer statusu nalezy pobrac z tad GaduPacketConstans.GG_STATUS_*</param>
 /// <param name="descr">Opis, jezeli ustawilismy status, ktory nie jest typu *_DESCR, dajemy pusty string</param>
 public void changeStatus(int statusid, string descr)
 {
     try
     {
         GaduPacketHeader header = new GaduPacketHeader();      // naglowek
         GaduPacketStatus status = new GaduPacketStatus();      // pakiet zmieniajacy status
         header.Type        = GaduPacketConstans.GG_NEW_STATUS; // typ pakietu to zmiana status
         status.Status      = statusid;                         // przypisujemy status id
         status.Description = descr;                            // narazie nie mamy zadnego opisu
         header.Length      = status.getSize();                 // pobieramy rozmiar pakietu
         gaduSender.sendPacket(header);                         // wysylamy naglowek
         gaduSender.sendPacket(status);                         // wysylamy wlasciwiy pakiet
     }
     catch (Exception exp)
     {
         throw new GaduStatusException(exp.Message);
     }
 }
コード例 #6
0
ファイル: GaduMessage.cs プロジェクト: dominikcebula/dotgadu
 /// <summary>
 /// Wysyla wiadomosc pod dany numer
 /// </summary>
 /// <param name="uin">Numer odbiorcy</param>
 /// <param name="msg">Wiadomosc</param>
 public void sendMessage(int uin, string msg)
 {
     try
     {
         GaduPacketHeader  header  = new GaduPacketHeader();  // naglowek
         GaduPacketMessage message = new GaduPacketMessage(); //wiadomosc
         header.Type       = GaduPacketConstans.GG_SEND_MSG;  // bedziemy wysylac wiadomosc
         message.Recepient = uin;                             // numer odbiorcy
         message.Klasa     = GaduPacketConstans.GG_CLASS_MSG; // klasa wiadomosci
         message.Message   = msg;                             // wiadomosc, string zostanie zamieniony na ciag bajtow
         header.Length     = message.getSize();               // wpisujemy wielkosc pakietu
         gaduSender.sendPacket(header);                       // przesylamy najpierw naglowek
         gaduSender.sendPacket(message);                      // potem przesylamy wiadomosc
     }
     catch (Exception exp)
     {
         throw new GaduMessageException(exp.Message);
     }
 }
コード例 #7
0
        /// <summary>
        /// Czyta dane z katalogu publicznego dotyczace naszego konta, wystarczy ze w GaduUser
        /// wypelnimy tylko pole Uin
        /// </summary>
        /// <param name="gaduUser">Nasze dane</param>
        public void Read(GaduUser gaduUser)
        {
            GaduPacketHeader   gaduPacketHeader   = new GaduPacketHeader();
            GaduPacketPubDir50 gaduPacketPubDir50 = new GaduPacketPubDir50();

            gaduPacketHeader.Type   = GaduPacketConstans.GG_PUBDIR50_REQUEST;
            gaduPacketPubDir50.Type = GaduPacketConstans.GG_PUBDIR50_READ;
            gaduPacketPubDir50.Seq  = (int)DateTime.Now.Ticks;
            gaduPacketPubDir50.Data = gaduUser.getPubDirString();
            gaduPacketHeader.Length = gaduPacketPubDir50.getSize();
            gaduSender.sendPacket(gaduPacketHeader);
            gaduSender.sendPacket(gaduPacketPubDir50);
        }