LLVM 20.0.0git
HTTPClient.h
Go to the documentation of this file.
1//===-- llvm/Support/HTTPClient.h - HTTP client library ---------*- C++ -*-===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8///
9/// \file
10/// This file contains the declarations of the HTTPClient library for issuing
11/// HTTP requests and handling the responses.
12///
13//===----------------------------------------------------------------------===//
14
15#ifndef LLVM_DEBUGINFOD_HTTPCLIENT_H
16#define LLVM_DEBUGINFOD_HTTPCLIENT_H
17
20#include "llvm/Support/Error.h"
22
23#include <chrono>
24
25namespace llvm {
26
27enum class HTTPMethod { GET };
28
29/// A stateless description of an outbound HTTP request.
34 bool FollowRedirects = true;
36};
37
38bool operator==(const HTTPRequest &A, const HTTPRequest &B);
39
40/// A handler for state updates occurring while an HTTPRequest is performed.
41/// Can trigger the client to abort the request by returning an Error from any
42/// of its methods.
44public:
45 /// Processes an additional chunk of bytes of the HTTP response body.
46 virtual Error handleBodyChunk(StringRef BodyChunk) = 0;
47
48protected:
50};
51
52/// A reusable client that can perform HTTPRequests through a network socket.
54#ifdef LLVM_ENABLE_CURL
55 void *Curl = nullptr;
56#endif
57
58public:
61
62 static bool IsInitialized;
63
64 /// Returns true only if LLVM has been compiled with a working HTTPClient.
65 static bool isAvailable();
66
67 /// Must be called at the beginning of a program, while it is a single thread.
68 static void initialize();
69
70 /// Must be called at the end of a program, while it is a single thread.
71 static void cleanup();
72
73 /// Sets the timeout for the entire request, in milliseconds. A zero or
74 /// negative value means the request never times out.
75 void setTimeout(std::chrono::milliseconds Timeout);
76
77 /// Performs the Request, passing response data to the Handler. Returns all
78 /// errors which occur during the request. Aborts if an error is returned by a
79 /// Handler method.
80 Error perform(const HTTPRequest &Request, HTTPResponseHandler &Handler);
81
82 /// Returns the last received response code or zero if none.
83 unsigned responseCode();
84};
85
86} // end namespace llvm
87
88#endif // LLVM_DEBUGINFOD_HTTPCLIENT_H
static GCRegistry::Add< OcamlGC > B("ocaml", "ocaml 3.10-compatible GC")
static GCRegistry::Add< ErlangGC > A("erlang", "erlang-compatible garbage collector")
This file defines the SmallString class.
This file defines the SmallVector class.
Lightweight error class with error context and mandatory checking.
Definition: Error.h:160
A reusable client that can perform HTTPRequests through a network socket.
Definition: HTTPClient.h:53
static bool isAvailable()
Returns true only if LLVM has been compiled with a working HTTPClient.
Definition: HTTPClient.cpp:145
static bool IsInitialized
Definition: HTTPClient.h:62
unsigned responseCode()
Returns the last received response code or zero if none.
Definition: HTTPClient.cpp:158
static void initialize()
Must be called at the beginning of a program, while it is a single thread.
Definition: HTTPClient.cpp:147
Error perform(const HTTPRequest &Request, HTTPResponseHandler &Handler)
Performs the Request, passing response data to the Handler.
Definition: HTTPClient.cpp:153
void setTimeout(std::chrono::milliseconds Timeout)
Sets the timeout for the entire request, in milliseconds.
Definition: HTTPClient.cpp:151
static void cleanup()
Must be called at the end of a program, while it is a single thread.
Definition: HTTPClient.cpp:149
A handler for state updates occurring while an HTTPRequest is performed.
Definition: HTTPClient.h:43
virtual Error handleBodyChunk(StringRef BodyChunk)=0
Processes an additional chunk of bytes of the HTTP response body.
SmallString - A SmallString is just a SmallVector with methods and accessors that make it work better...
Definition: SmallString.h:26
This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small.
Definition: SmallVector.h:1209
StringRef - Represent a constant reference to a string, i.e.
Definition: StringRef.h:50
This is an optimization pass for GlobalISel generic memory operations.
Definition: AddressRanges.h:18
bool operator==(const AddressRangeValuePair &LHS, const AddressRangeValuePair &RHS)
HTTPMethod
Definition: HTTPClient.h:27
A stateless description of an outbound HTTP request.
Definition: HTTPClient.h:30
SmallVector< std::string, 0 > Headers
Definition: HTTPClient.h:32
SmallString< 128 > Url
Definition: HTTPClient.h:31
HTTPMethod Method
Definition: HTTPClient.h:33