/* */ #ifndef D_NETRC_H #define D_NETRC_H #include "common.h" #include #include #include namespace aria2 { class Authenticatable { public: virtual ~Authenticatable() {} virtual bool match(const std::string& hostname) const = 0; }; class Authenticator : public Authenticatable { private: std::string machine_; std::string login_; std::string password_; std::string account_; public: Authenticator(); Authenticator(std::string machine, std::string login, std::string password, std::string account); virtual ~Authenticator(); virtual bool match(const std::string& hostname) const CXX11_OVERRIDE; const std::string& getMachine() const { return machine_; } void setMachine(std::string machine); const std::string& getLogin() const { return login_; } void setLogin(std::string login); const std::string& getPassword() const { return password_; } void setPassword(std::string password); const std::string& getAccount() const { return account_; } void setAccount(std::string account); }; class DefaultAuthenticator : public Authenticator { public: DefaultAuthenticator(); DefaultAuthenticator(std::string login, std::string password, std::string account); virtual ~DefaultAuthenticator(); virtual bool match(const std::string& hostname) const CXX11_OVERRIDE; }; class Netrc { private: std::vector> authenticators_; void storeAuthenticator(std::unique_ptr authenticator); public: Netrc(); ~Netrc(); void parse(const std::string& path); const Authenticator* findAuthenticator(const std::string& hostname) const; const std::vector>& getAuthenticators() const; void addAuthenticator(std::unique_ptr authenticator); }; } // namespace aria2 #endif // D_NETRC_H