mirror of https://github.com/aria2/aria2
				
				
				
			Rewritten FeatureConfig into set of functions
							parent
							
								
									e2340efe27
								
							
						
					
					
						commit
						9d294741fd
					
				| 
						 | 
					@ -2,7 +2,7 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * aria2 - The high speed download utility
 | 
					 * aria2 - The high speed download utility
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Copyright (C) 2006 Tatsuhiro Tsujikawa
 | 
					 * Copyright (C) 2012 Tatsuhiro Tsujikawa
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * This program is free software; you can redistribute it and/or modify
 | 
					 * This program is free software; you can redistribute it and/or modify
 | 
				
			||||||
 * it under the terms of the GNU General Public License as published by
 | 
					 * it under the terms of the GNU General Public License as published by
 | 
				
			||||||
| 
						 | 
					@ -34,133 +34,106 @@
 | 
				
			||||||
/* copyright --> */
 | 
					/* copyright --> */
 | 
				
			||||||
#include "FeatureConfig.h"
 | 
					#include "FeatureConfig.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <numeric>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#include "array_fun.h"
 | 
					 | 
				
			||||||
#include "util.h"
 | 
					#include "util.h"
 | 
				
			||||||
#include "Request.h"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace aria2 {
 | 
					namespace aria2 {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
SharedHandle<FeatureConfig> FeatureConfig::featureConfig_;
 | 
					uint16_t getDefaultPort(const std::string& protocol)
 | 
				
			||||||
 | 
					 | 
				
			||||||
const std::string FeatureConfig::FEATURE_HTTPS("HTTPS");
 | 
					 | 
				
			||||||
const std::string FeatureConfig::FEATURE_BITTORRENT("BitTorrent");
 | 
					 | 
				
			||||||
const std::string FeatureConfig::FEATURE_METALINK("Metalink");
 | 
					 | 
				
			||||||
const std::string FeatureConfig::FEATURE_MESSAGE_DIGEST("Message Digest");
 | 
					 | 
				
			||||||
const std::string FeatureConfig::FEATURE_ASYNC_DNS("Async DNS");
 | 
					 | 
				
			||||||
const std::string FeatureConfig::FEATURE_XML_RPC("XML-RPC");
 | 
					 | 
				
			||||||
const std::string FeatureConfig::FEATURE_GZIP("GZip");
 | 
					 | 
				
			||||||
const std::string FeatureConfig::FEATURE_FIREFOX3_COOKIE("Firefox3 Cookie");
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#ifdef ENABLE_SSL
 | 
					 | 
				
			||||||
# define HTTPS_ENABLED true
 | 
					 | 
				
			||||||
#else // !ENABLE_SSL
 | 
					 | 
				
			||||||
# define HTTPS_ENABLED false
 | 
					 | 
				
			||||||
#endif // !ENABLE_SSL
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#ifdef ENABLE_BITTORRENT
 | 
					 | 
				
			||||||
# define BITTORRENT_ENABLED true
 | 
					 | 
				
			||||||
#else // !ENABLE_BITTORRENT
 | 
					 | 
				
			||||||
# define BITTORRENT_ENABLED false
 | 
					 | 
				
			||||||
#endif // !ENABLE_BITTORRENT
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#ifdef ENABLE_METALINK
 | 
					 | 
				
			||||||
# define METALINK_ENABLED true
 | 
					 | 
				
			||||||
#else // !ENABLE_METALINK
 | 
					 | 
				
			||||||
# define METALINK_ENABLED false
 | 
					 | 
				
			||||||
#endif // !ENABLE_METALINK
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#ifdef ENABLE_MESSAGE_DIGEST
 | 
					 | 
				
			||||||
# define MESSAGE_DIGEST_ENABLED true
 | 
					 | 
				
			||||||
#else // !ENABLE_MESSAGE_DIGEST
 | 
					 | 
				
			||||||
# define MESSAGE_DIGEST_ENABLED false
 | 
					 | 
				
			||||||
#endif // !ENABLE_MESSAGE_DIGEST
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#ifdef ENABLE_ASYNC_DNS
 | 
					 | 
				
			||||||
# define ASYNC_DNS_ENABLED true
 | 
					 | 
				
			||||||
#else // !ENABLE_ASYNC_DNS
 | 
					 | 
				
			||||||
# define ASYNC_DNS_ENABLED false
 | 
					 | 
				
			||||||
#endif // !ENABLE_ASYNC_DNS
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#ifdef ENABLE_XML_RPC
 | 
					 | 
				
			||||||
# define XML_RPC_ENABLED true
 | 
					 | 
				
			||||||
#else // !ENABLE_XML_RPC
 | 
					 | 
				
			||||||
# define XML_RPC_ENABLED false
 | 
					 | 
				
			||||||
#endif // !ENABLE_XML_RPC
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#ifdef HAVE_ZLIB
 | 
					 | 
				
			||||||
# define GZIP_ENABLED true
 | 
					 | 
				
			||||||
#else // !HAVE_ZLIB
 | 
					 | 
				
			||||||
# define GZIP_ENABLED false
 | 
					 | 
				
			||||||
#endif // !HAVE_ZLIB
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#ifdef HAVE_SQLITE3
 | 
					 | 
				
			||||||
# define FIREFOX3_COOKIE_ENABLED true
 | 
					 | 
				
			||||||
#else // !HAVE_SQLITE3
 | 
					 | 
				
			||||||
# define FIREFOX3_COOKIE_ENABLED false
 | 
					 | 
				
			||||||
#endif // !HAVE_SQLITE3
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
FeatureConfig::FeatureConfig() {
 | 
					 | 
				
			||||||
  defaultPorts_.insert(PortMap::value_type(Request::PROTO_HTTP, 80));
 | 
					 | 
				
			||||||
  defaultPorts_.insert(PortMap::value_type(Request::PROTO_HTTPS, 443));
 | 
					 | 
				
			||||||
  defaultPorts_.insert(PortMap::value_type(Request::PROTO_FTP, 21));
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  FeatureMap::value_type featureArray[] = {
 | 
					 | 
				
			||||||
    FeatureMap::value_type(FEATURE_HTTPS, HTTPS_ENABLED),
 | 
					 | 
				
			||||||
    FeatureMap::value_type(FEATURE_BITTORRENT, BITTORRENT_ENABLED),
 | 
					 | 
				
			||||||
    FeatureMap::value_type(FEATURE_METALINK, METALINK_ENABLED),
 | 
					 | 
				
			||||||
    FeatureMap::value_type(FEATURE_MESSAGE_DIGEST, MESSAGE_DIGEST_ENABLED),
 | 
					 | 
				
			||||||
    FeatureMap::value_type(FEATURE_ASYNC_DNS, ASYNC_DNS_ENABLED),
 | 
					 | 
				
			||||||
    FeatureMap::value_type(FEATURE_XML_RPC, XML_RPC_ENABLED),
 | 
					 | 
				
			||||||
    FeatureMap::value_type(FEATURE_GZIP, GZIP_ENABLED),
 | 
					 | 
				
			||||||
    FeatureMap::value_type(FEATURE_FIREFOX3_COOKIE, FIREFOX3_COOKIE_ENABLED),
 | 
					 | 
				
			||||||
  };
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  features_.insert(vbegin(featureArray), vend(featureArray));
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
FeatureConfig::~FeatureConfig() {}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const SharedHandle<FeatureConfig>& FeatureConfig::getInstance()
 | 
					 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  if(!featureConfig_) {
 | 
					  if(protocol == "http") {
 | 
				
			||||||
    featureConfig_.reset(new FeatureConfig());
 | 
					    return 80;
 | 
				
			||||||
  }
 | 
					  } else if(protocol == "https") {
 | 
				
			||||||
  return featureConfig_;
 | 
					    return 443;
 | 
				
			||||||
}
 | 
					  } else if(protocol == "ftp") {
 | 
				
			||||||
 | 
					    return 21;
 | 
				
			||||||
uint16_t FeatureConfig::getDefaultPort(const std::string& protocol) const
 | 
					  } else {
 | 
				
			||||||
{
 | 
					 | 
				
			||||||
  PortMap::const_iterator itr = defaultPorts_.find(protocol);
 | 
					 | 
				
			||||||
  if(itr == defaultPorts_.end()) {
 | 
					 | 
				
			||||||
    return 0;
 | 
					    return 0;
 | 
				
			||||||
  } else {
 | 
					 | 
				
			||||||
    return itr->second;
 | 
					 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
bool FeatureConfig::isSupported(const std::string& feature) const
 | 
					std::string featureSummary()
 | 
				
			||||||
{
 | 
					 | 
				
			||||||
  FeatureMap::const_iterator itr = features_.find(feature);
 | 
					 | 
				
			||||||
  if(itr == features_.end()) {
 | 
					 | 
				
			||||||
    return false;
 | 
					 | 
				
			||||||
  } else {
 | 
					 | 
				
			||||||
    return itr->second;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
std::string FeatureConfig::featureSummary() const
 | 
					 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  std::string s;
 | 
					  std::string s;
 | 
				
			||||||
  for(FeatureMap::const_iterator i = features_.begin(), eoi = features_.end();
 | 
					  for(int i = 0; i < MAX_FEATURE; ++i) {
 | 
				
			||||||
      i != eoi; ++i) {
 | 
					    const char* name = strSupportedFeature(i);
 | 
				
			||||||
    if((*i).second) {
 | 
					    if(name) {
 | 
				
			||||||
      s += (*i).first;
 | 
					      s += name;
 | 
				
			||||||
      s += ", ";
 | 
					      s += ", ";
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  return util::strip(s, ", ");
 | 
					  return util::strip(s, ", ");
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const char* strSupportedFeature(int feature)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  switch(feature) {
 | 
				
			||||||
 | 
					  case(FEATURE_ASYNC_DNS):
 | 
				
			||||||
 | 
					#ifdef ENABLE_ASYNC_DNS
 | 
				
			||||||
 | 
					    return "Async DNS";
 | 
				
			||||||
 | 
					#else // !ENABLE_ASYNC_DNS
 | 
				
			||||||
 | 
					    return 0;
 | 
				
			||||||
 | 
					#endif // !ENABLE_ASYNC_DNS
 | 
				
			||||||
 | 
					    break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  case(FEATURE_BITTORRENT):
 | 
				
			||||||
 | 
					#ifdef ENABLE_BITTORRENT
 | 
				
			||||||
 | 
					    return "BitTorrent";
 | 
				
			||||||
 | 
					#else // !ENABLE_BITTORRENT
 | 
				
			||||||
 | 
					    return 0;
 | 
				
			||||||
 | 
					#endif // !ENABLE_BITTORRENT
 | 
				
			||||||
 | 
					    break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  case(FEATURE_FF3_COOKIE):
 | 
				
			||||||
 | 
					#ifdef HAVE_SQLITE3
 | 
				
			||||||
 | 
					    return "Firefox3 Cookie";
 | 
				
			||||||
 | 
					#else // !HAVE_SQLITE3
 | 
				
			||||||
 | 
					    return 0;
 | 
				
			||||||
 | 
					#endif // !HAVE_SQLITE3
 | 
				
			||||||
 | 
					    break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  case(FEATURE_GZIP):
 | 
				
			||||||
 | 
					#ifdef HAVE_ZLIB
 | 
				
			||||||
 | 
					    return "GZip";
 | 
				
			||||||
 | 
					#else // !HAVE_ZLIB
 | 
				
			||||||
 | 
					    return 0;
 | 
				
			||||||
 | 
					#endif // !HAVE_ZLIB
 | 
				
			||||||
 | 
					    break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  case(FEATURE_HTTPS):
 | 
				
			||||||
 | 
					#ifdef ENABLE_SSL
 | 
				
			||||||
 | 
					    return "HTTPS";
 | 
				
			||||||
 | 
					#else // !ENABLE_SSL
 | 
				
			||||||
 | 
					    return 0;
 | 
				
			||||||
 | 
					#endif // !ENABLE_SSL
 | 
				
			||||||
 | 
					    break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  case(FEATURE_MESSAGE_DIGEST):
 | 
				
			||||||
 | 
					#ifdef ENABLE_MESSAGE_DIGEST
 | 
				
			||||||
 | 
					    return "Message Digest";
 | 
				
			||||||
 | 
					#else // !ENABLE_MESSAGE_DIGEST
 | 
				
			||||||
 | 
					    return 0;
 | 
				
			||||||
 | 
					#endif // !ENABLE_MESSAGE_DIGEST
 | 
				
			||||||
 | 
					    break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  case(FEATURE_METALINK):
 | 
				
			||||||
 | 
					#ifdef ENABLE_METALINK
 | 
				
			||||||
 | 
					    return "Metalink";
 | 
				
			||||||
 | 
					#else // !ENABLE_METALINK
 | 
				
			||||||
 | 
					    return 0;
 | 
				
			||||||
 | 
					#endif // !ENABLE_METALINK
 | 
				
			||||||
 | 
					    break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  case(FEATURE_XML_RPC):
 | 
				
			||||||
 | 
					#ifdef ENABLE_XML_RPC
 | 
				
			||||||
 | 
					    return "XML-RPC";
 | 
				
			||||||
 | 
					#else // !ENABLE_XML_RPC
 | 
				
			||||||
 | 
					    return 0;
 | 
				
			||||||
 | 
					#endif // !ENABLE_XML_RPC
 | 
				
			||||||
 | 
					    break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  default:
 | 
				
			||||||
 | 
					    return 0;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
} // namespace aria2
 | 
					} // namespace aria2
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2,7 +2,7 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * aria2 - The high speed download utility
 | 
					 * aria2 - The high speed download utility
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Copyright (C) 2006 Tatsuhiro Tsujikawa
 | 
					 * Copyright (C) 2012 Tatsuhiro Tsujikawa
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * This program is free software; you can redistribute it and/or modify
 | 
					 * This program is free software; you can redistribute it and/or modify
 | 
				
			||||||
 * it under the terms of the GNU General Public License as published by
 | 
					 * it under the terms of the GNU General Public License as published by
 | 
				
			||||||
| 
						 | 
					@ -37,50 +37,32 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "common.h"
 | 
					#include "common.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <map>
 | 
					 | 
				
			||||||
#include <string>
 | 
					#include <string>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "SharedHandle.h"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
namespace aria2 {
 | 
					namespace aria2 {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef std::map<std::string, uint16_t> PortMap;
 | 
					// Returns default port for the given |protocol|.
 | 
				
			||||||
typedef std::map<std::string, bool> FeatureMap;
 | 
					uint16_t getDefaultPort(const std::string& protocol);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class FeatureConfig {
 | 
					enum FeatureType {
 | 
				
			||||||
private:
 | 
					  FEATURE_ASYNC_DNS,
 | 
				
			||||||
  static SharedHandle<FeatureConfig> featureConfig_;
 | 
					  FEATURE_BITTORRENT,
 | 
				
			||||||
 | 
					  FEATURE_FF3_COOKIE,
 | 
				
			||||||
  PortMap defaultPorts_;
 | 
					  FEATURE_GZIP,
 | 
				
			||||||
  FeatureMap features_;
 | 
					  FEATURE_HTTPS,
 | 
				
			||||||
 | 
					  FEATURE_MESSAGE_DIGEST,
 | 
				
			||||||
  FeatureConfig();
 | 
					  FEATURE_METALINK,
 | 
				
			||||||
public:
 | 
					  FEATURE_XML_RPC,
 | 
				
			||||||
  ~FeatureConfig();
 | 
					  MAX_FEATURE
 | 
				
			||||||
 | 
					 | 
				
			||||||
  static const SharedHandle<FeatureConfig>& getInstance();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  uint16_t getDefaultPort(const std::string& protocol) const;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  bool isSupported(const std::string& feature) const;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  std::string featureSummary() const;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  const FeatureMap& getFeatures() const
 | 
					 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    return features_;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  static const std::string FEATURE_HTTPS;
 | 
					 | 
				
			||||||
  static const std::string FEATURE_BITTORRENT;
 | 
					 | 
				
			||||||
  static const std::string FEATURE_METALINK;
 | 
					 | 
				
			||||||
  static const std::string FEATURE_MESSAGE_DIGEST;
 | 
					 | 
				
			||||||
  static const std::string FEATURE_ASYNC_DNS;
 | 
					 | 
				
			||||||
  static const std::string FEATURE_XML_RPC;
 | 
					 | 
				
			||||||
  static const std::string FEATURE_GZIP;
 | 
					 | 
				
			||||||
  static const std::string FEATURE_FIREFOX3_COOKIE;
 | 
					 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Returns summary string of the available features.
 | 
				
			||||||
 | 
					std::string featureSummary();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Returns the string representation of the given |feature| if it is
 | 
				
			||||||
 | 
					// available in the build. If it is not available, returns NULL.
 | 
				
			||||||
 | 
					const char* strSupportedFeature(int feature);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
} // namespace aria2
 | 
					} // namespace aria2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif // D_FEATURE_CONFIG_H
 | 
					#endif // D_FEATURE_CONFIG_H
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1228,11 +1228,10 @@ SharedHandle<ValueBase> GetVersionRpcMethod::process
 | 
				
			||||||
  SharedHandle<Dict> result = Dict::g();
 | 
					  SharedHandle<Dict> result = Dict::g();
 | 
				
			||||||
  result->put(KEY_VERSION, PACKAGE_VERSION);
 | 
					  result->put(KEY_VERSION, PACKAGE_VERSION);
 | 
				
			||||||
  SharedHandle<List> featureList = List::g();
 | 
					  SharedHandle<List> featureList = List::g();
 | 
				
			||||||
  const FeatureMap& features = FeatureConfig::getInstance()->getFeatures();
 | 
					  for(int feat = 0; feat < MAX_FEATURE; ++feat) {
 | 
				
			||||||
  for(FeatureMap::const_iterator i = features.begin(), eoi = features.end();
 | 
					    const char* name = strSupportedFeature(feat);
 | 
				
			||||||
      i != eoi;++i){
 | 
					    if(name) {
 | 
				
			||||||
    if((*i).second) {
 | 
					      featureList->append(name);
 | 
				
			||||||
      featureList->append((*i).first);
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  result->put(KEY_ENABLED_FEATURES, featureList);
 | 
					  result->put(KEY_ENABLED_FEATURES, featureList);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -131,8 +131,7 @@ bool parse(UriStruct& result, const std::string& uri)
 | 
				
			||||||
  if(protocolOffset == std::string::npos) return false;
 | 
					  if(protocolOffset == std::string::npos) return false;
 | 
				
			||||||
  result.protocol.assign(uri.begin(), uri.begin()+protocolOffset);
 | 
					  result.protocol.assign(uri.begin(), uri.begin()+protocolOffset);
 | 
				
			||||||
  uint16_t defPort;
 | 
					  uint16_t defPort;
 | 
				
			||||||
  if((defPort = FeatureConfig::getInstance()->
 | 
					  if((defPort = getDefaultPort(result.protocol)) == 0) {
 | 
				
			||||||
      getDefaultPort(result.protocol)) == 0) {
 | 
					 | 
				
			||||||
    return false;
 | 
					    return false;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  // find authority
 | 
					  // find authority
 | 
				
			||||||
| 
						 | 
					@ -268,8 +267,7 @@ std::string construct(const UriStruct& us)
 | 
				
			||||||
  } else {
 | 
					  } else {
 | 
				
			||||||
    res += us.host;
 | 
					    res += us.host;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  uint16_t defPort= FeatureConfig::getInstance()->
 | 
					  uint16_t defPort= getDefaultPort(us.protocol);
 | 
				
			||||||
    getDefaultPort(us.protocol);
 | 
					 | 
				
			||||||
  if(us.port != 0 && defPort != us.port) {
 | 
					  if(us.port != 0 && defPort != us.port) {
 | 
				
			||||||
    res += fmt(":%u", us.port);
 | 
					    res += fmt(":%u", us.port);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -70,7 +70,7 @@ void showVersion() {
 | 
				
			||||||
            << "\n"
 | 
					            << "\n"
 | 
				
			||||||
            << _("** Configuration **") << "\n"
 | 
					            << _("** Configuration **") << "\n"
 | 
				
			||||||
            << _("Enabled Features") << ": "
 | 
					            << _("Enabled Features") << ": "
 | 
				
			||||||
            << FeatureConfig::getInstance()->featureSummary() << "\n"
 | 
					            << featureSummary() << "\n"
 | 
				
			||||||
#ifdef ENABLE_MESSAGE_DIGEST
 | 
					#ifdef ENABLE_MESSAGE_DIGEST
 | 
				
			||||||
            << _("Hash Algorithms") << ": "
 | 
					            << _("Hash Algorithms") << ": "
 | 
				
			||||||
            << MessageDigest::getSupportedHashTypeString() << "\n"
 | 
					            << MessageDigest::getSupportedHashTypeString() << "\n"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -14,13 +14,12 @@ class FeatureConfigTest:public CppUnit::TestFixture {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  CPPUNIT_TEST_SUITE(FeatureConfigTest);
 | 
					  CPPUNIT_TEST_SUITE(FeatureConfigTest);
 | 
				
			||||||
  CPPUNIT_TEST(testGetDefaultPort);
 | 
					  CPPUNIT_TEST(testGetDefaultPort);
 | 
				
			||||||
  CPPUNIT_TEST(testIsSupported);
 | 
					  CPPUNIT_TEST(testStrSupportedFeature);
 | 
				
			||||||
  CPPUNIT_TEST(testFeatureSummary);
 | 
					  CPPUNIT_TEST(testFeatureSummary);
 | 
				
			||||||
  CPPUNIT_TEST_SUITE_END();
 | 
					  CPPUNIT_TEST_SUITE_END();
 | 
				
			||||||
  
 | 
					 | 
				
			||||||
public:
 | 
					public:
 | 
				
			||||||
  void testGetDefaultPort();
 | 
					  void testGetDefaultPort();
 | 
				
			||||||
  void testIsSupported();
 | 
					  void testStrSupportedFeature();
 | 
				
			||||||
  void testFeatureSummary();
 | 
					  void testFeatureSummary();
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -28,26 +27,19 @@ public:
 | 
				
			||||||
CPPUNIT_TEST_SUITE_REGISTRATION(FeatureConfigTest);
 | 
					CPPUNIT_TEST_SUITE_REGISTRATION(FeatureConfigTest);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void FeatureConfigTest::testGetDefaultPort() {
 | 
					void FeatureConfigTest::testGetDefaultPort() {
 | 
				
			||||||
  CPPUNIT_ASSERT_EQUAL((uint16_t)80,
 | 
					  CPPUNIT_ASSERT_EQUAL((uint16_t)80, getDefaultPort("http"));
 | 
				
			||||||
                       FeatureConfig::getInstance()->getDefaultPort("http"));
 | 
					  CPPUNIT_ASSERT_EQUAL((uint16_t)443, getDefaultPort("https"));
 | 
				
			||||||
  CPPUNIT_ASSERT_EQUAL((uint16_t)443,
 | 
					  CPPUNIT_ASSERT_EQUAL((uint16_t)21, getDefaultPort("ftp"));
 | 
				
			||||||
                       FeatureConfig::getInstance()->getDefaultPort("https"));
 | 
					 | 
				
			||||||
  CPPUNIT_ASSERT_EQUAL((uint16_t)21,
 | 
					 | 
				
			||||||
                       FeatureConfig::getInstance()->getDefaultPort("ftp"));
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void FeatureConfigTest::testIsSupported() {
 | 
					void FeatureConfigTest::testStrSupportedFeature() {
 | 
				
			||||||
 | 
					  const char* https = strSupportedFeature(FEATURE_HTTPS);
 | 
				
			||||||
#ifdef ENABLE_SSL
 | 
					#ifdef ENABLE_SSL
 | 
				
			||||||
  CPPUNIT_ASSERT_EQUAL(true,
 | 
					  CPPUNIT_ASSERT(https);
 | 
				
			||||||
                       FeatureConfig::getInstance()->isSupported
 | 
					 | 
				
			||||||
                       (FeatureConfig::FEATURE_HTTPS));
 | 
					 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
  CPPUNIT_ASSERT_EQUAL(false,
 | 
					  CPPUNIT_ASSERT(!https);
 | 
				
			||||||
                       FeatureConfig::getInstance()->isSupported
 | 
					 | 
				
			||||||
                       (FeatureConfig::FEATURE_HTTPS));
 | 
					 | 
				
			||||||
#endif // ENABLE_SSL
 | 
					#endif // ENABLE_SSL
 | 
				
			||||||
  CPPUNIT_ASSERT_EQUAL(false,
 | 
					  CPPUNIT_ASSERT(!strSupportedFeature(MAX_FEATURE));
 | 
				
			||||||
                       FeatureConfig::getInstance()->isSupported("FTPS"));
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void FeatureConfigTest::testFeatureSummary() {
 | 
					void FeatureConfigTest::testFeatureSummary() {
 | 
				
			||||||
| 
						 | 
					@ -92,9 +84,8 @@ void FeatureConfigTest::testFeatureSummary() {
 | 
				
			||||||
  std::for_each(vbegin(features), vend(features),
 | 
					  std::for_each(vbegin(features), vend(features),
 | 
				
			||||||
                StringAppend(featuresString, delim));
 | 
					                StringAppend(featuresString, delim));
 | 
				
			||||||
  featuresString = util::strip(featuresString, delim);
 | 
					  featuresString = util::strip(featuresString, delim);
 | 
				
			||||||
  
 | 
					
 | 
				
			||||||
  CPPUNIT_ASSERT_EQUAL(featuresString,
 | 
					  CPPUNIT_ASSERT_EQUAL(featuresString, featureSummary());
 | 
				
			||||||
                       FeatureConfig::getInstance()->featureSummary());
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
} // namespace aria2
 | 
					} // namespace aria2
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -741,9 +741,7 @@ void RpcMethodTest::testGetVersion()
 | 
				
			||||||
    features += s->s();
 | 
					    features += s->s();
 | 
				
			||||||
    features += ", ";
 | 
					    features += ", ";
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  
 | 
					  CPPUNIT_ASSERT_EQUAL(featureSummary()+", ", features);
 | 
				
			||||||
  CPPUNIT_ASSERT_EQUAL(FeatureConfig::getInstance()->featureSummary()+", ",
 | 
					 | 
				
			||||||
                       features);
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void RpcMethodTest::testGatherStoppedDownload()
 | 
					void RpcMethodTest::testGatherStoppedDownload()
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue