gitea2rss/src/write.cpp

84 lines
2.4 KiB
C++
Raw Normal View History

2019-04-20 04:47:53 +02:00
/* This file is part of gitea2rss.
2020-10-24 16:59:41 +02:00
* Copyright © 2019, 2020 tastytea <tastytea@tastytea.de>
2019-04-20 04:47:53 +02:00
*
* 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
* the Free Software Foundation, version 3.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
2020-10-24 16:59:41 +02:00
#include "gitea2rss.hpp"
#include "version.hpp"
#include <cstdlib>
2019-04-20 04:47:53 +02:00
#include <iostream>
2019-04-22 12:20:44 +02:00
#include <regex>
2019-04-20 04:47:53 +02:00
2020-10-27 12:05:50 +01:00
namespace gitea2rss
{
2019-04-20 04:47:53 +02:00
using std::cout;
void write_line(const uint8_t spaces, const string &tag, const string &value)
{
string endtag;
// If there is a space in the tag, use only the part up until the space for
// the ending tag.
const size_t pos = tag.find(' ');
if (pos == std::string::npos)
{
endtag = tag;
}
else
{
endtag = tag.substr(0, pos);
}
cout << std::string(spaces, ' ');
cout << '<' << tag << '>' << value << "</" << endtag << ">\n";
}
void write_preamble(const string &url, const string &type)
{
2020-10-24 16:59:41 +02:00
const string request_uri{get_env_var("REQUEST_URI")};
const string server_name{get_env_var("SERVER_NAME")};
const string https{get_env_var("HTTPS")};
2019-04-22 09:59:24 +02:00
string selfurl;
2019-08-09 22:38:28 +02:00
if (!request_uri.empty() && !server_name.empty())
2019-04-22 09:59:24 +02:00
{
2019-08-09 22:38:28 +02:00
if (https == "on")
2019-04-22 09:59:24 +02:00
{
selfurl = "https://";
}
else
{
selfurl = "http://";
}
selfurl += string(server_name) + request_uri;
2019-04-22 12:20:44 +02:00
selfurl = std::regex_replace(selfurl, std::regex("&"), "&amp;");
2019-04-22 09:59:24 +02:00
}
cout << "<rss version=\"2.0\" xmlns:atom=\"http://www.w3.org/2005/Atom\">\n"
2020-10-24 16:59:41 +02:00
" <channel>\n";
2019-04-22 09:59:24 +02:00
if (cgi)
{
cout << " <atom:link href=\"" + selfurl
2020-10-24 16:59:41 +02:00
+ "\" rel=\"self\" type=\"application/rss+xml\"/>\n";
2019-04-22 09:59:24 +02:00
}
write_line(4, "title", get_project(url) + " " + type);
write_line(4, "link", url);
write_line(4, "description", "List of " + type + " of " + get_repo(url));
2020-10-27 12:05:50 +01:00
write_line(4, "generator", string("gitea2rss ") + version);
write_line(4, "lastBuildDate", strtime(system_clock::now()));
}
2020-10-27 12:05:50 +01:00
} // namespace gitea2rss