1 /*
2 * Copyright (C) the libgit2 contributors. All rights reserved.
3 *
4 * This file is part of libgit2, distributed under the GNU GPL v2 with
5 * a Linking Exception. For full terms see the included COPYING file.
6 */
7 module libgit2_d.proxy;
8
9
10 private static import libgit2_d.cert;
11 private static import libgit2_d.credential;
12
13 extern (C):
14 nothrow @nogc:
15 public:
16
17 /**
18 * The type of proxy to use.
19 */
20 enum git_proxy_t
21 {
22 /**
23 * Do not attempt to connect through a proxy
24 *
25 * If built against libcurl, it itself may attempt to connect
26 * to a proxy if the environment variables specify it.
27 */
28 GIT_PROXY_NONE,
29
30 /**
31 * Try to auto-detect the proxy from the git configuration.
32 */
33 GIT_PROXY_AUTO,
34
35 /**
36 * Connect via the URL given in the options
37 */
38 GIT_PROXY_SPECIFIED,
39 }
40
41 //Declaration name in C language
42 enum
43 {
44 GIT_PROXY_NONE = .git_proxy_t.GIT_PROXY_NONE,
45 GIT_PROXY_AUTO = .git_proxy_t.GIT_PROXY_AUTO,
46 GIT_PROXY_SPECIFIED = .git_proxy_t.GIT_PROXY_SPECIFIED,
47 }
48
49 /**
50 * Options for connecting through a proxy
51 *
52 * Note that not all types may be supported, depending on the platform
53 * and compilation options.
54 */
55 struct git_proxy_options
56 {
57 uint version_;
58
59 /**
60 * The type of proxy to use, by URL, auto-detect.
61 */
62 .git_proxy_t type;
63
64 /**
65 * The URL of the proxy.
66 */
67 const (char)* url;
68
69 /**
70 * This will be called if the remote host requires
71 * authentication in order to connect to it.
72 *
73 * Returning git_error_code.GIT_PASSTHROUGH will make libgit2 behave as
74 * though this field isn't set.
75 */
76 libgit2_d.credential.git_credential_acquire_cb credentials;
77
78 /**
79 * If cert verification fails, this will be called to let the
80 * user make the final decision of whether to allow the
81 * connection to proceed. Returns 0 to allow the connection
82 * or a negative value to indicate an error.
83 */
84 libgit2_d.cert.git_transport_certificate_check_cb certificate_check;
85
86 /**
87 * Payload to be provided to the credentials and certificate
88 * check callbacks.
89 */
90 void* payload;
91 }
92
93 enum GIT_PROXY_OPTIONS_VERSION = 1;
94
95 pragma(inline, true)
96 pure nothrow @safe @nogc
97 .git_proxy_options GIT_PROXY_OPTIONS_INIT()
98
99 do
100 {
101 .git_proxy_options OUTPUT =
102 {
103 version_: .GIT_PROXY_OPTIONS_VERSION,
104 };
105
106 return OUTPUT;
107 }
108
109 /**
110 * Initialize git_proxy_options structure
111 *
112 * Initializes a `git_proxy_options` with default values. Equivalent to
113 * creating an instance with `GIT_PROXY_OPTIONS_INIT`.
114 *
115 * Params:
116 * opts = The `git_proxy_options` struct to initialize.
117 * version = The struct version; pass `GIT_PROXY_OPTIONS_VERSION`.
118 *
119 * Returns: Zero on success; -1 on failure.
120 */
121 //GIT_EXTERN
122 int git_proxy_options_init(.git_proxy_options* opts, uint version_);