本文整理汇总了C++中url::Ptr::SetUsername方法的典型用法代码示例。如果您正苦于以下问题:C++ Ptr::SetUsername方法的具体用法?C++ Ptr::SetUsername怎么用?C++ Ptr::SetUsername使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类url::Ptr
的用法示例。
在下文中一共展示了Ptr::SetUsername方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Run
/**
* The entry point for the "console" CLI command.
*
* @returns An exit status.
*/
int ConsoleCommand::Run(const po::variables_map& vm, const std::vector<std::string>& ap) const
{
#ifdef HAVE_EDITLINE
rl_completion_entry_function = ConsoleCommand::ConsoleCompleteHelper;
rl_completion_append_character = '\0';
#endif /* HAVE_EDITLINE */
String addr, session;
ScriptFrame scriptFrame(true);
session = Utility::NewUniqueID();
if (vm.count("sandbox"))
scriptFrame.Sandboxed = true;
scriptFrame.Self = scriptFrame.Locals;
if (!vm.count("eval") && !vm.count("file"))
std::cout << "Icinga 2 (version: " << Application::GetAppVersion() << ")\n"
<< "Type $help to view available commands.\n";
String addrEnv = Utility::GetFromEnvironment("ICINGA2_API_URL");
if (!addrEnv.IsEmpty())
addr = addrEnv;
/* Initialize remote connect parameters. */
if (vm.count("connect")) {
addr = vm["connect"].as<std::string>();
try {
l_Url = new Url(addr);
} catch (const std::exception& ex) {
Log(LogCritical, "ConsoleCommand", ex.what());
return EXIT_FAILURE;
}
String usernameEnv = Utility::GetFromEnvironment("ICINGA2_API_USERNAME");
String passwordEnv = Utility::GetFromEnvironment("ICINGA2_API_PASSWORD");
if (!usernameEnv.IsEmpty())
l_Url->SetUsername(usernameEnv);
if (!passwordEnv.IsEmpty())
l_Url->SetPassword(passwordEnv);
if (l_Url->GetPort().IsEmpty())
l_Url->SetPort("5665");
/* User passed --connect and wants to run the expression via REST API.
* Evaluate this now before any user input happens.
*/
try {
l_TlsStream = ConsoleCommand::Connect();
} catch (const std::exception& ex) {
return EXIT_FAILURE;
}
}
String command;
bool syntaxOnly = false;
if (vm.count("syntax-only")) {
if (vm.count("eval") || vm.count("file"))
syntaxOnly = true;
else {
std::cerr << "The option --syntax-only can only be used in combination with --eval or --file." << std::endl;
return EXIT_FAILURE;
}
}
String commandFileName;
if (vm.count("eval"))
command = vm["eval"].as<std::string>();
else if (vm.count("file")) {
commandFileName = vm["file"].as<std::string>();
try {
std::ifstream fp(commandFileName.CStr());
fp.exceptions(std::ifstream::failbit | std::ifstream::badbit);
command = String(std::istreambuf_iterator<char>(fp), std::istreambuf_iterator<char>());
} catch (const std::exception&) {
std::cerr << "Could not read file '" << commandFileName << "'." << std::endl;
return EXIT_FAILURE;
}
}
return RunScriptConsole(scriptFrame, addr, session, command, commandFileName, syntaxOnly);
}
示例2: RunScriptConsole
int ConsoleCommand::RunScriptConsole(ScriptFrame& scriptFrame, const String& addr, const String& session, const String& commandOnce, const String& commandOnceFileName, bool syntaxOnly)
{
std::map<String, String> lines;
int next_line = 1;
#ifdef HAVE_EDITLINE
char *homeEnv = getenv("HOME");
String historyPath;
std::fstream historyfp;
if (homeEnv) {
historyPath = String(homeEnv) + "/.icinga2_history";
historyfp.open(historyPath.CStr(), std::fstream::in);
String line;
while (std::getline(historyfp, line.GetData()))
add_history(line.CStr());
historyfp.close();
}
#endif /* HAVE_EDITLINE */
l_ScriptFrame = &scriptFrame;
l_Session = session;
if (!addr.IsEmpty()) {
Url::Ptr url;
try {
url = new Url(addr);
} catch (const std::exception& ex) {
Log(LogCritical, "ConsoleCommand", ex.what());
return EXIT_FAILURE;
}
const char *usernameEnv = getenv("ICINGA2_API_USERNAME");
const char *passwordEnv = getenv("ICINGA2_API_PASSWORD");
if (usernameEnv)
url->SetUsername(usernameEnv);
if (passwordEnv)
url->SetPassword(passwordEnv);
if (url->GetPort().IsEmpty())
url->SetPort("5665");
l_ApiClient = new ApiClient(url->GetHost(), url->GetPort(), url->GetUsername(), url->GetPassword());
}
while (std::cin.good()) {
String fileName;
if (commandOnceFileName.IsEmpty())
fileName = "<" + Convert::ToString(next_line) + ">";
else
fileName = commandOnceFileName;
next_line++;
bool continuation = false;
std::string command;
incomplete:
std::string line;
if (commandOnce.IsEmpty()) {
#ifdef HAVE_EDITLINE
std::ostringstream promptbuf;
std::ostream& os = promptbuf;
#else /* HAVE_EDITLINE */
std::ostream& os = std::cout;
#endif /* HAVE_EDITLINE */
os << fileName;
if (!continuation)
os << " => ";
else
os << " .. ";
#ifdef HAVE_EDITLINE
String prompt = promptbuf.str();
char *cline;
cline = readline(prompt.CStr());
if (!cline)
break;
if (commandOnce.IsEmpty() && cline[0] != '\0') {
add_history(cline);
if (!historyPath.IsEmpty()) {
historyfp.open(historyPath.CStr(), std::fstream::out | std::fstream::app);
historyfp << cline << "\n";
historyfp.close();
}
}
//.........这里部分代码省略.........