MediaUserAuth.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00012 #ifndef ZYPP_MEDIA_USER_AUTH_H
00013 #define ZYPP_MEDIA_USER_AUTH_H
00014
00015 #include <curl/curl.h>
00016
00017 #include "zypp/base/Deprecated.h"
00018
00019 #include "zypp/Url.h"
00020 #include "zypp/base/PtrTypes.h"
00021
00022 namespace zypp {
00023 namespace media {
00024
00026
00027
00032 class AuthData
00033 {
00034 public:
00035 AuthData()
00036 {}
00037
00038 AuthData(const Url & url);
00039
00040 AuthData(const std::string & username, const std::string & password)
00041 : _username(username), _password(password)
00042 {}
00043
00044 virtual ~AuthData() {};
00045
00051 virtual bool valid() const;
00052
00053 void setUrl(const Url & url) { _url = url; }
00054 void setUsername(const std::string & username) { _username = username; }
00055 void setPassword(const std::string & password) { _password = password; }
00056
00057 Url url() const { return _url; }
00058 std::string username() const { return _username; }
00059 std::string password() const { return _password; }
00060
00061 virtual std::ostream & dumpOn( std::ostream & str ) const;
00062
00063 virtual std::ostream & dumpAsIniOn( std::ostream & str ) const;
00064
00065 private:
00066 Url _url;
00067 std::string _username;
00068 std::string _password;
00069 };
00070
00071 typedef shared_ptr<AuthData> AuthData_Ptr;
00072
00076 class CurlAuthData : public AuthData {
00077 public:
00082 CurlAuthData() : AuthData(), _auth_type_str(), _auth_type(CURLAUTH_NONE)
00083 {}
00084
00085 CurlAuthData(const AuthData & authData)
00086 : AuthData(authData)
00087 , _auth_type_str()
00088 , _auth_type(CURLAUTH_NONE)
00089 {}
00090
00091 CurlAuthData(std::string & username, std::string & password, std::string & auth_type)
00092 : AuthData(username,password), _auth_type_str(auth_type)
00093 {
00094 _auth_type = auth_type_str2long(auth_type);
00095 }
00096
00097 CurlAuthData(std::string & username, std::string & password, long auth_type)
00098 : AuthData(username,password), _auth_type(auth_type)
00099 {
00100 _auth_type_str = auth_type_long2str(auth_type);
00101 }
00102
00108 virtual bool valid() const;
00109
00114 void setAuthType(std::string auth_type)
00115 {
00116 _auth_type_str = auth_type; _auth_type = auth_type_str2long(auth_type);
00117 }
00118
00119
00120
00121
00122
00123
00124 void setAuthType(long auth_type)
00125 {
00126 _auth_type = auth_type;
00127 _auth_type_str = auth_type_long2str(auth_type);
00128 }
00129
00130 long authType() { return _auth_type; } const
00131 std::string authTypeAsString() { return _auth_type_str; } const
00132
00133 std::string getUserPwd() const { return username() + ":" + password(); }
00134
00135
00145 static long auth_type_str2long(std::string & auth_type_str);
00146
00151 static std::string auth_type_long2str(long auth_type);
00152
00153 virtual std::ostream & dumpOn( std::ostream & str ) const;
00154
00155 private:
00156 std::string _auth_type_str;
00157 long _auth_type;
00158 };
00159
00160 typedef shared_ptr<CurlAuthData> CurlAuthData_Ptr;
00161
00162 std::ostream & operator << (std::ostream & str, const AuthData & auth_data);
00163 std::ostream & operator << (std::ostream & str, const CurlAuthData & auth_data);
00164
00166
00167 }
00168 }
00169
00170 #endif // ZYPP_MEDIA_USER_AUTH_H