示例#1
0
void HttpPostCommand::readProperties(boost::property_tree::wptree& pt)
{
    AbstractCommand::readProperties(pt);

    setUrl(QString::fromStdWString(pt.get(L"url", Http::DEFAULT_URL.toStdWString())));
    setTriggerOnNext(pt.get(L"triggeronnext", Http::DEFAULT_TRIGGER_ON_NEXT));

    if (pt.count(L"httpdata") > 0)
    {
        BOOST_FOREACH(const boost::property_tree::wptree::value_type& value, pt.get_child(L"httpdata"))
        {
            this->models.push_back(KeyValueModel(QString::fromStdWString(value.second.get<std::wstring>(L"key")),
                                                 QString::fromStdWString(value.second.get<std::wstring>(L"value"))));
        }
    }
示例#2
0
void configure(const std::wstring& filename)
{
	try
	{
		auto separator = boost::filesystem::path::preferred_separator;
		auto initialPath = fs::initial_path<fs::path>().wstring();
		std::wstring path_(initialPath + boost::lexical_cast<std::wstring>(separator) + filename);
		const wchar_t *pstr = path_.c_str();

		std::wifstream file(reinterpret_cast<const char *>(pstr));

		CASPAR_LOG(info) << L"before read_xml ..." << initialPath << " " << filename << " " << pstr;

		boost::property_tree::read_xml("/etc/casparcg.config", pt, boost::property_tree::xml_parser::trim_whitespace | boost::property_tree::xml_parser::no_comments);

		CASPAR_LOG(info) << L"read_xml done...";

		auto paths = pt.get_child(L"configuration.paths");
		media = widen(paths.get(L"media-path", initialPath + L"/media/"));
		log = widen(paths.get(L"log-path", initialPath + L"/log/"));
		ftemplate = fs::complete(fs::path(widen(paths.get(L"template-path", initialPath + L"/template/")))).wstring();		
		data = widen(paths.get(L"data-path", initialPath + L"/data/"));
		thumbnails = widen(paths.get(L"thumbnails-path", initialPath + L"/thumbnails/"));

		//Make sure that all paths have a trailing backslash
		if(media.at(media.length()-1) != L'/')
			media.append(L"/");
		if(log.at(log.length()-1) != L'/')
			log.append(L"/");
		if(ftemplate.at(ftemplate.length()-1) != L'/')
			ftemplate.append(L"/");
		if(data.at(data.length()-1) != L'/')
			data.append(L"/");
		if(thumbnails.at(thumbnails.length()-1) != L'/')
			thumbnails.append(L"/");

		try
		{
			for(auto it = fs::directory_iterator(initialPath); it != fs::directory_iterator(); ++it)
			{
				if(it->path().filename().wstring().find(L".fth") != std::wstring::npos)			
				{
					auto from_path = *it;
					auto to_path = fs::path(ftemplate + L'/' + it->path().filename().wstring());
				
					if(fs::exists(to_path))
						fs::remove(to_path);

					fs::copy_file(from_path, to_path);
				}	
			}
		}
		catch(...)
		{
			CASPAR_LOG_CURRENT_EXCEPTION();
			CASPAR_LOG(error) << L"Failed to copy template-hosts from initial-path to template-path.";
		}
	}
	catch(...)
	{
		std::wcout << L" ### Invalid configuration file. ###";
		throw;
	}

	try
	{
		auto media_path = fs::path(media);
		if(!fs::exists(media_path))
			fs::create_directory(media_path);
		
		auto log_path = fs::path(log);
		if(!fs::exists(log_path))
			fs::create_directory(log_path);
		
		auto template_path = fs::path(ftemplate);
		if(!fs::exists(template_path))
			fs::create_directory(template_path);
		
		auto data_path = fs::path(data);
		if(!fs::exists(data_path))
			fs::create_directory(data_path);
		
		auto thumbnails_path = fs::path(thumbnails);
		if(!fs::exists(thumbnails_path))
			fs::create_directory(thumbnails_path);
	}
	catch(...)
	{
		CASPAR_LOG_CURRENT_EXCEPTION();
		CASPAR_LOG(error) << L"Failed to create configured directories.";
	}
}