net.h 2.03 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
/*
 * Copyright (C) the libgit2 contributors. All rights reserved.
 *
 * This file is part of libgit2, distributed under the GNU GPL v2 with
 * a Linking Exception. For full terms see the included COPYING file.
 */
#ifndef INCLUDE_net_h__
#define INCLUDE_net_h__

#include "common.h"

typedef struct git_net_url {
	char *scheme;
	char *host;
	char *port;
	char *path;
	char *query;
	char *username;
	char *password;
} git_net_url;

#define GIT_NET_URL_INIT { NULL }

24 25 26
/** Duplicate a URL */
extern int git_net_url_dup(git_net_url *out, git_net_url *in);

27
/** Parses a string containing a URL into a structure.  */
28 29
extern int git_net_url_parse(git_net_url *url, const char *str);

30 31 32 33 34 35
/** Appends a path and/or query string to the given URL */
extern int git_net_url_joinpath(
	git_net_url *out,
	git_net_url *in,
	const char *path);

36 37
/** Ensures that a URL is minimally valid (contains a host, port and path) */
extern bool git_net_url_valid(git_net_url *url);
38

39 40
/** Returns true if the URL is on the default port. */
extern bool git_net_url_is_default_port(git_net_url *url);
41

42 43 44
/** Returns true if the host portion of the URL is an ipv6 address. */
extern bool git_net_url_is_ipv6(git_net_url *url);

45 46 47 48 49 50
/* Applies a redirect to the URL with a git-aware service suffix. */
extern int git_net_url_apply_redirect(
	git_net_url *url,
	const char *redirect_location,
	const char *service_suffix);

51
/** Swaps the contents of one URL for another.  */
52
extern void git_net_url_swap(git_net_url *a, git_net_url *b);
53

54 55 56
/** Places the URL into the given buffer. */
extern int git_net_url_fmt(git_buf *out, git_net_url *url);

57 58 59
/** Place the path and query string into the given buffer. */
extern int git_net_url_fmt_path(git_buf *buf, git_net_url *url);

60 61 62 63
/** Determines if the url matches given pattern or pattern list */
extern bool git_net_url_matches_pattern(
	git_net_url *url,
	const char *pattern);
64 65 66
extern bool git_net_url_matches_pattern_list(
	git_net_url *url,
	const char *pattern_list);
67

68
/** Disposes the contents of the structure. */
69
extern void git_net_url_dispose(git_net_url *url);
70 71

#endif