adds user+pw to repo-url output

Sun, 17 Jun 2018 07:11:31 +0200

author
Olaf Wintermann <olaf.wintermann@gmail.com>
date
Sun, 17 Jun 2018 07:11:31 +0200
changeset 421
178dc32c8c9a
parent 420
ad419882e06e
child 422
1429fb385513

adds user+pw to repo-url output

dav/main.c file | annotate | diff | comparison | revisions
test/bin-test/test-dav-put.sh file | annotate | diff | comparison | revisions
test/bin-test/test-dav.sh file | annotate | diff | comparison | revisions
--- 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
+
+
--- a/test/bin-test/test-dav.sh	Sun Jun 17 06:50:38 2018 +0200
+++ b/test/bin-test/test-dav.sh	Sun Jun 17 07:11:31 2018 +0200
@@ -75,3 +75,11 @@
 	exit 2
 fi
 echo ok
+
+# put
+printf "TEST: dav put ... "
+./test-dav-put.sh
+if [ $? -ne 0 ]; then
+	exit 2
+fi
+echo ok

mercurial