summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Jackson <ijackson@chiark.greenend.org.uk>2019-07-23 17:26:51 +0100
committerIan Jackson <ijackson@chiark.greenend.org.uk>2019-07-23 21:58:55 +0100
commitf9462701607b57a6debcf3e0e7a5548a56af3cf6 (patch)
tree872557af948071b443138ec096015952be0dfcf7
parent230d9f8ed1dd3f9e4ee4351af34e4bcb52c54ac8 (diff)
dgit: Reorganise url_fetch
This was archive_api_query_curl. We're working on making it good for other things too. No functional change. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
-rwxr-xr-xdgit24
1 files changed, 13 insertions, 11 deletions
diff --git a/dgit b/dgit
index 5bd648a..48be198 100755
--- a/dgit
+++ b/dgit
@@ -1192,10 +1192,9 @@ sub cfg_apply_map ($$$) {
$$varref = $_;
}
-#---------- `ftpmasterapi' archive query method (nascent) ----------
-
-sub archive_api_query_curl ($) {
- my ($url) = @_;
+sub url_fetch ($;@) {
+ my ($url, %xopts) = @_;
+ # Ok404 => 1 means give undef for 404
use WWW::Curl::Easy;
@@ -1220,7 +1219,7 @@ sub archive_api_query_curl ($) {
}
}
- printdebug "archive api query: fetching $url...\n";
+ printdebug "query: fetching $url...\n";
local $SIG{PIPE} = 'IGNORE';
@@ -1229,18 +1228,21 @@ sub archive_api_query_curl ($) {
$url, $curl->strerror($x), $curl->errbuf
if $x;
- return $curl->getinfo(CURLINFO_HTTP_CODE), $response_body;
+ my $code = $curl->getinfo(CURLINFO_HTTP_CODE);
+ if ($code eq '404' && $xopts{Ok404}) { return undef; }
+
+ fail f_ "fetch of %s gave HTTP code %s", $url, $code
+ unless $url =~ m#^file://# or $code =~ m/^2/;
+ return $response_body;
}
+#---------- `ftpmasterapi' archive query method (nascent) ----------
+
sub api_query_raw ($;$) {
my ($subpath, $ok404) = @_;
my $url = access_cfg('archive-query-url');
$url .= $subpath;
- my ($code,$json) = archive_api_query_curl($url);
- return undef if $code eq '404' && $ok404;
- fail f_ "fetch of %s gave HTTP code %s", $url, $code
- unless $url =~ m#^file://# or $code =~ m/^2/;
- return $json;
+ return url_fetch $url, Ok404 => $ok404;
}
sub api_query ($$;$) {