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";
|
|
|
|
}
|
|
|
|
|
2019-04-20 10:00:15 +02:00
|
|
|
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("&"), "&");
|
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
|
|
|
}
|
2019-04-20 10:00:15 +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);
|
2019-04-20 10:00:15 +02:00
|
|
|
write_line(4, "lastBuildDate", strtime(system_clock::now()));
|
|
|
|
}
|
2020-10-27 12:05:50 +01:00
|
|
|
|
|
|
|
} // namespace gitea2rss
|