feat: serve paste entries
ci/woodpecker/push/woodpecker Pipeline was successful
Details
ci/woodpecker/push/woodpecker Pipeline was successful
Details
parent
7f42d540b5
commit
97ed770166
|
@ -26,6 +26,8 @@ RUN make prod && \
|
|||
|
||||
FROM alpine:3.16.3
|
||||
|
||||
ENV LANDER_DATA_DIR=/data
|
||||
|
||||
RUN apk add --update --no-cache boost && \
|
||||
mkdir /data && \
|
||||
chown -R 1000:1000 /data
|
||||
|
|
|
@ -14,5 +14,5 @@ elif [ "$1" = get ]; then
|
|||
curl -is "$URL/$2" | sed -En 's/^[lL]ocation: (.*)/\1/p'
|
||||
|
||||
elif [ "$1" = paste ]; then
|
||||
curl -v --data-binary @"$2" -XPOST -H "X-Api-Key: $API_KEY" "$URL/p/"
|
||||
curl --data-binary @"$2" -XPOST -H "X-Api-Key: $API_KEY" "$URL/p/"
|
||||
fi
|
||||
|
|
11
src/main.cpp
11
src/main.cpp
|
@ -52,17 +52,20 @@ int main() {
|
|||
mkdir((data_dir + "/pastes").c_str(), 0700);
|
||||
|
||||
crow::SimpleApp app;
|
||||
|
||||
app.loglevel(crow::LogLevel::Info);
|
||||
|
||||
// Serve an entry
|
||||
CROW_ROUTE(app, "/<string>")
|
||||
.methods(crow::HTTPMethod::Get)(
|
||||
[trie](crow::response &res, std::string s) {
|
||||
Entry *entry = ternarytrie_search(trie, s.c_str());
|
||||
[data_dir, trie](crow::response &res, std::string key) {
|
||||
Entry *entry = ternarytrie_search(trie, key.c_str());
|
||||
|
||||
// TODO check entry type
|
||||
if (entry != NULL) {
|
||||
if (entry->type == Redirect) {
|
||||
res.redirect(entry->string);
|
||||
} else if (entry->type == Paste) {
|
||||
res.set_static_file_info(data_dir + "/pastes/" + key);
|
||||
}
|
||||
} else {
|
||||
res.code = 404;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue