url_config.h 1.03 KB
#ifndef ETRADECLIENT_UTILITY_URL_CONFIG_H_INCLUDED
#define ETRADECLIENT_UTILITY_URL_CONFIG_H_INCLUDED

/*A "singleton" class to provide a universal interface to access the configuration about URLs.*/

#include <string>
#include <cstdint>

extern CString GetModulePath();

class URLConfig
{
public:
	/*Exception will be thrown if config file path not correct.*/
	static URLConfig& Instance();

	// Some interfaces followed as below return string object,
	// don't worry about the cost because we have RVO & move semantics.
	std::string Host() const; // xxx.com
	uint16_t Port() const; // 443 or 80 or user configured port.
	std::string FullHost() const; // Helper function to get the full host path: protocol + host + port.
	std::string DownloadUrl() const;
	std::string DownloadFileUrl() const;

private:
	URLConfig();
	URLConfig(const URLConfig&);
	URLConfig& operator=(const URLConfig&);

	std::string m_host;
	uint16_t	m_port;
	std::string m_download_url;
	std::string m_download_file_url;

};
#endif // ETRADECLIENT_UTILITY_URL_CONFIG_H_INCLUDED