Sun, 17 Jun 2018 07:11:31 +0200
adds user+pw to repo-url output
--- a/dav/main.c Sun Jun 17 06:50:38 2018 +0200 +++ b/dav/main.c Sun Jun 17 07:11:31 2018 +0200 @@ -1964,7 +1964,7 @@ int cmd_repository_url(CmdArgs *args) { if(args->argc != 1) { fprintf(stderr, "Too few arguments\n"); - fprintf(stderr, "Usage: dav repository-url <name>\n"); + fprintf(stderr, "Usage: dav repository-url [-p] <name>\n"); return -1; } @@ -1972,11 +1972,35 @@ Repository* repo = get_repository(reponame); if(repo) { sstr_t url = sstr(repo->url); - if(url.ptr[url.length-1] == '/') { - printf("%s\n", repo->url); + if(repo->user && !cmd_getoption(args, "plain")) { + int hostindex = 0; + if(sstrprefix(url, S("https://"))) { + printf("https://"); + hostindex = 8; + } else if(sstrprefix(url, S("http://"))) { + printf("http://"); + hostindex = 7; + } + printf("%s", repo->user); + if(repo->password) { + CURL *curl = curl_easy_init(); + char *pw = curl_easy_escape( + curl, + repo->password, + strlen(repo->password)); + printf(":%s", pw); + curl_free(pw); + curl_easy_cleanup(curl); + } + putchar('@'); + printf("%.*s", (int)url.length-hostindex, url.ptr+hostindex); } else { - printf("%s/\n", repo->url); + printf("%s", url.ptr); } + if(url.ptr[url.length-1] != '/') { + putchar('/'); + } + putchar('\n'); } else { fprintf(stderr, "Repository %s does not exist.\n", reponame.ptr); return -1;
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/bin-test/test-dav-put.sh Sun Jun 17 07:11:31 2018 +0200 @@ -0,0 +1,62 @@ +#!/bin/sh +# +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. +# +# Copyright 2018 Olaf Wintermann. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +# + +if [ -z "$DAV_BIN" ]; +then + echo "DAV_BIN variable not set" + exit 1 +fi + +BASE_URL=`dav repo-url dav-test-repo` + +# test +echo "hello world" > hello +dav put dav-test-repo/tests/ hello +DAV_RES=$? +rm hello + +if [ $DAV_RES -ne 0 ]; then + echo "dav put returned" $DAV_RES + exit 2 +fi + +OUT=`dav info dav-test-repo/tests/hello` +if [ $? -ne 0 ]; then + echo "dav info failed" + exit 2 +fi + +echo $OUT | grep "type: resource" > /dev/null +if [ $? -ne 0 ]; +then + echo "wrong resource type" + exit 2 +fi + +