gloox  1.1-svn
nonsaslauth.h
1 /*
2  Copyright (c) 2005-2009 by Jakob Schroeter <js@camaya.net>
3  This file is part of the gloox library. http://camaya.net/gloox
4 
5  This software is distributed under a license. The full license
6  agreement can be found in the file LICENSE in this distribution.
7  This software may not be copied, modified, sold or distributed
8  other than expressed in the named license agreement.
9 
10  This software is distributed without any warranty.
11 */
12 
13 
14 #ifndef NONSASLAUTH_H__
15 #define NONSASLAUTH_H__
16 
17 #include "iqhandler.h"
18 
19 #include <string>
20 
21 namespace gloox
22 {
23 
24  class Client;
25  class Stanza;
26  class Tag;
27 
39  class GLOOX_API NonSaslAuth : public IqHandler
40  {
41  public:
46  NonSaslAuth( Client* parent );
47 
51  virtual ~NonSaslAuth();
52 
58  void doAuth( const std::string& sid );
59 
60  // reimplemented from IqHandler
61  virtual bool handleIq( const IQ& iq ) { (void)iq; return false; }
62 
63  // reimplemented from IqHandler
64  virtual void handleIqID( const IQ& iq, int context );
65 
66  private:
67 #ifdef NONSASLAUTH_TEST
68  public:
69 #endif
70 
76  class Query : public StanzaExtension
77  {
78  public:
84  Query( const std::string& user );
85 
90  Query( const Tag* tag = 0 );
91 
100  Query* newInstance( const std::string& user, const std::string& sid,
101  const std::string& pwd, const std::string& resource ) const;
102 
106  virtual ~Query() {}
107 
108  // reimplemented from StanzaExtension
109  virtual const std::string& filterString() const;
110 
111  // reimplemented from StanzaExtension
112  virtual StanzaExtension* newInstance( const Tag* tag ) const
113  {
114  return new Query( tag );
115  }
116 
117  // reimplemented from StanzaExtension
118  virtual Tag* tag() const;
119 
120  // reimplemented from StanzaExtension
121  virtual StanzaExtension* clone() const
122  {
123  return new Query( *this );
124  }
125 
126  private:
127  std::string m_user;
128  std::string m_pwd;
129  std::string m_resource;
130  bool m_digest;
131 
132  };
133 
134  enum NonSaslAuthTrack
135  {
136  TrackRequestAuthFields,
137  TrackSendAuth
138  };
139 
140  Client* m_parent;
141  std::string m_sid;
142 
143  };
144 
145 }
146 
147 #endif // NONSASLAUTH_H__