master
Bel LaPointe 2022-02-01 13:52:30 -07:00
parent 2c8abf7158
commit c9e3f4e416
4 changed files with 55 additions and 16 deletions

View File

@ -7,7 +7,7 @@ gitlab() (
get() {
local url="$1"
local blob="$2"
local blob="$(echo "$2" | base64 --decode)"
local project="$(_url_to_project_root "$url" | head -n 1)"
project="$(urlencode "$project")"
@ -82,7 +82,11 @@ gitlab() (
local file="$(echo "$b64_file" | base64 --decode)"
file="${file#$root}"
file="${file#/}"
echo "$file" | base64
case "${file##*.}" in
md|txt )
echo "$file" | base64
;;
esac
done
}

View File

@ -7,12 +7,13 @@ test___expand() {
'https://gitlab-app.eng.qops.net/api/v4/projects/project/repository/tree?recursive=true&path=dir' )
echo '[
{"id": "a", "name": "dir2", "type": "tree", "path": "dir/dir2", "mode": "040000"},
{"id": "b", "name": "blob", "type": "blob", "path": "dir/blob", "mode": "100644"}
{"id": "b", "name": "blob.md", "type": "blob", "path": "dir/blob.md", "mode": "100644"}
]'
;;
'https://gitlab-app.eng.qops.net/api/v4/projects/project/repository/tree?recursive=true&path=dir/dir2' )
echo '[
{"id": "c", "name": "blob2", "type": "blob", "path": "dir/dir2/blob2", "mode": "100644"}
{"id": "c", "name": "blob2.txt", "type": "blob", "path": "dir/dir2/blob2.txt", "mode": "100644"},
{"id": "c", "name": "blob3.jpg", "type": "blob", "path": "dir/dir2/blob3.jpg", "mode": "100644"}
]'
;;
* )
@ -24,9 +25,9 @@ test___expand() {
local dir2blob2=false
local others=0
for result in \$(__expand project dir); do
if echo \$result | base64 --decode | grep -q ^blob$; then
if echo \$result | base64 --decode | grep -q ^blob.md$; then
blob=true
elif echo \$result | base64 --decode | grep -q ^dir2.blob2$; then
elif echo \$result | base64 --decode | grep -q ^dir2.blob2.txt$; then
dir2blob2=true
else
others=\$((others+1))

View File

@ -15,7 +15,7 @@ config() {
set -e
export CACHE="${CACHE:-"$(mktemp -d)"}"
mkdir -p "$CACHE"
export CACHE_DURATION=$((60*5))
export CACHE_DURATION=$((60*50))
export NOTEA_ADDR="${NOTEA_ADDR:-"http://localhost:3000"}"
export GITLAB_PAT="$GITLAB_PAT"
source ./gitlab.sh
@ -72,8 +72,13 @@ crawl_with() {
local expanded=($($backend expand "$crawlable_source"))
log expand $crawlable_source:
for i in $(seq 1 "${#expanded[@]}"); do
log " $(echo ${expanded[i]} | base64 --decode)"
for i in $(seq 1 $(("${#expanded[@]}"-1))); do
local title="$(echo "${expanded[i]}" | base64 --decode)"
CONTENT="$($backend get "$crawlable_source" "${expanded[i]}")" \
ID="$(echo "$crawlable_source/$title" | base64)" \
PID="$(echo $json | jq -r .id)" \
TITLE="$title" \
notea put
done
log not impl crawl with
@ -81,15 +86,10 @@ crawl_with() {
}
is_crawlable() {
local crawlable_source="$(extract_crawlable_source "$*")"
# https://unix.stackexchange.com/questions/181254/how-to-use-grep-and-cut-in-script-to-obtain-website-urls-from-an-html-file
local url_pattern="(http|https)://[a-zA-Z0-9./?=_%:-]*"
if echo "$*" | tr -d '\n' | grep -E "^[ ]*$url_pattern[ ]*$"; then
return 0
fi
if echo "$*" | head -n 1 | grep -E "^[ ]*_source_: $url_pattern[ ]*$"; then
return 0
fi
return 1
echo "$crawlable_source" | grep -q -E "^[ ]*$url_pattern[ ]*$"
}
rewrite() {

View File

@ -25,6 +25,40 @@ notea() (
ncurl $NOTEA_ADDR/api/notes/$1
}
put() {
set -u
local ret=0
if ! _put "$@"; then
ret=1
fi
set +u
return $ret
}
_put() {
local xsrf_key="xsrf-token"
local contains_tokens="$(ncurl -i $NOTEA_ADDR/api)"
local xsrf_token="$(echo "$contains_tokens" | grep -o '"csrfToken":[^,]*' | tr ':' '\n' | jq -r . | tail -n 1)"
local xsrf_cookie="$(echo "$contains_tokens" | grep ^set.cookie: | sed 's/^set.cookie: //' | tr ';' '\n' | head -n 1)"
local request="$(echo '{
"content": '$(echo "$CONTENT" | jq -Rs)',
"deleted": 0,
"id": '$(echo "$ID" | jq -R)',
"pid": '$(echo "$PID" | jq -R)',
"pinned": 0,
"shared": 0,
"title": '$(echo "$TITLE" | jq -R)'
}' | jq -c .)"
ncurl \
-X POST \
-H "$xsrf_key: $xsrf_token" \
-b "$xsrf_cookie" \
-H "Content-Type: application/json" \
-d "$request" \
$NOTEA_ADDR/api/notes \
| grep -q "$ID"
}
"$@"
)