XRootD
XrdClHttp Namespace Reference

Classes

struct  ChecksumEntry
 
class  ChecksumInfo
 
class  ConnectionCallout
 
class  Factory
 
class  VerbsCache
 

Functions

size_t GetChecksumLength (ChecksumType ctype)
 
CURLGetHandle (bool verbose)
 
ChecksumType GetTypeFromString (const std::string &str)
 
const std::string GetTypeString (ChecksumType ctype)
 
std::pair< uint16_t, uint32_t > HTTPStatusConvert (unsigned status)
 
bool HTTPStatusIsError (unsigned status)
 
std::string_view ltrim_view (const std::string_view &input_view)
 
std::string MarshalDuration (const struct timespec &timeout)
 
bool ParseTimeout (const std::string &duration, struct timespec &, std::string &errmsg)
 
std::string_view trim_view (const std::string_view &input_view)
 

Class Documentation

◆ XrdClHttp::ChecksumEntry

struct XrdClHttp::ChecksumEntry

Definition at line 91 of file XrdClHttpChecksum.hh.

+ Collaboration diagram for XrdClHttp::ChecksumEntry:
Class Members
ChecksumType type
array< unsigned char, g_max_checksum_length > value

Function Documentation

◆ GetChecksumLength()

size_t XrdClHttp::GetChecksumLength ( ChecksumType  ctype)
inline

Definition at line 59 of file XrdClHttpChecksum.hh.

59  {
60  switch (ctype) {
61  case ChecksumType::kCRC32C:
62  return 4;
63  case ChecksumType::kMD5:
64  return 16;
65  case ChecksumType::kSHA1:
66  return 20;
67  case ChecksumType::kSHA256:
68  return 32;
69  case ChecksumType::kAll: // fallthrough
70  case ChecksumType::kUnknown:
71  return 0;
72  }
73  return 0;
74 }

Referenced by XrdClHttp::CurlChecksumOp::Success().

+ Here is the caller graph for this function:

◆ GetHandle()

CURL* XrdClHttp::GetHandle ( bool  verbose)

Referenced by XrdClHttp::HandlerQueue::GetHandle().

+ Here is the caller graph for this function:

◆ GetTypeFromString()

ChecksumType XrdClHttp::GetTypeFromString ( const std::string &  str)
inline

Definition at line 76 of file XrdClHttpChecksum.hh.

76  {
77  if (str == "crc32c") {
78  return ChecksumType::kCRC32C;
79  } else if (str == "md5") {
80  return ChecksumType::kMD5;
81  } else if (str == "sha1") {
82  return ChecksumType::kSHA1;
83  } else if (str == "sha256") {
84  return ChecksumType::kSHA256;
85  }
86  return ChecksumType::kUnknown;
87 }

◆ GetTypeString()

const std::string XrdClHttp::GetTypeString ( ChecksumType  ctype)
inline

Definition at line 42 of file XrdClHttpChecksum.hh.

42  {
43  switch (ctype) {
44  case ChecksumType::kCRC32C:
45  return "crc32c";
46  case ChecksumType::kMD5:
47  return "md5";
48  case ChecksumType::kSHA1:
49  return "sha1";
50  case ChecksumType::kSHA256:
51  return "sha256";
52  case ChecksumType::kAll: // fallthrough
53  case ChecksumType::kUnknown:
54  return "unknown";
55  }
56  return "unknown";
57 }

Referenced by XrdClHttp::CurlChecksumOp::Success().

+ Here is the caller graph for this function:

◆ HTTPStatusConvert()

std::pair< uint16_t, uint32_t > XrdClHttp::HTTPStatusConvert ( unsigned  status)

Definition at line 110 of file XrdClHttpUtil.cc.

110  {
111  switch (status) {
112  case 400: // Bad Request
113  return std::make_pair(XrdCl::errErrorResponse, kXR_InvalidRequest);
114  case 401: // Unauthorized (needs authentication)
115  return std::make_pair(XrdCl::errErrorResponse, kXR_NotAuthorized);
116  case 402: // Payment Required
117  case 403: // Forbidden (failed authorization)
118  return std::make_pair(XrdCl::errErrorResponse, kXR_NotAuthorized);
119  case 404:
120  return std::make_pair(XrdCl::errErrorResponse, kXR_NotFound);
121  case 405: // Method not allowed
122  return std::make_pair(XrdCl::errErrorResponse, kXR_Unsupported);
123  case 406: // Not acceptable
124  return std::make_pair(XrdCl::errErrorResponse, kXR_InvalidRequest);
125  case 407: // Proxy Authentication Required
126  return std::make_pair(XrdCl::errErrorResponse, kXR_NotAuthorized);
127  case 408: // Request timeout
128  return std::make_pair(XrdCl::errErrorResponse, kXR_ReqTimedOut);
129  case 409: // Conflict
130  return std::make_pair(XrdCl::errErrorResponse, kXR_Conflict);
131  case 410: // Gone
132  return std::make_pair(XrdCl::errErrorResponse, kXR_NotFound);
133  case 411: // Length required
134  case 412: // Precondition failed
135  case 413: // Payload too large
136  case 414: // URI too long
137  case 415: // Unsupported Media Type
138  case 416: // Range Not Satisfiable
139  case 417: // Expectation Failed
140  case 418: // I'm a teapot
141  return std::make_pair(XrdCl::errErrorResponse, kXR_InvalidRequest);
142  case 421: // Misdirected Request
143  case 422: // Unprocessable Content
144  return std::make_pair(XrdCl::errErrorResponse, kXR_InvalidRequest);
145  case 423: // Locked
146  return std::make_pair(XrdCl::errErrorResponse, kXR_FileLocked);
147  case 424: // Failed Dependency
148  case 425: // Too Early
149  case 426: // Upgrade Required
150  case 428: // Precondition Required
151  return std::make_pair(XrdCl::errErrorResponse, kXR_InvalidRequest);
152  case 429: // Too Many Requests
153  return std::make_pair(XrdCl::errErrorResponse, kXR_Overloaded);
154  case 431: // Request Header Fields Too Large
155  return std::make_pair(XrdCl::errErrorResponse, kXR_InvalidRequest);
156  case 451: // Unavailable For Legal Reasons
157  return std::make_pair(XrdCl::errErrorResponse, kXR_Impossible);
158  case 500: // Internal Server Error
159  return std::make_pair(XrdCl::errErrorResponse, kXR_ServerError);
160  case 501: // Not Implemented
161  return std::make_pair(XrdCl::errErrorResponse, kXR_Unsupported);
162  case 502: // Bad Gateway
163  return std::make_pair(XrdCl::errErrorResponse, kXR_ServerError);
164  case 503: // Service Unavailable
165  return std::make_pair(XrdCl::errErrorResponse, kXR_Overloaded);
166  case 504: // Gateway Timeout
167  return std::make_pair(XrdCl::errErrorResponse, kXR_ReqTimedOut);
168  case 507: // Insufficient Storage
169  return std::make_pair(XrdCl::errErrorResponse, kXR_overQuota);
170  case 508: // Loop Detected
171  case 510: // Not Extended
172  case 511: // Network Authentication Required
173  return std::make_pair(XrdCl::errErrorResponse, kXR_ServerError);
174  }
175  return std::make_pair(XrdCl::errUnknown, status);
176 }
@ kXR_InvalidRequest
Definition: XProtocol.hh:1038
@ kXR_Impossible
Definition: XProtocol.hh:1063
@ kXR_NotAuthorized
Definition: XProtocol.hh:1042
@ kXR_NotFound
Definition: XProtocol.hh:1043
@ kXR_FileLocked
Definition: XProtocol.hh:1035
@ kXR_overQuota
Definition: XProtocol.hh:1053
@ kXR_Unsupported
Definition: XProtocol.hh:1045
@ kXR_Conflict
Definition: XProtocol.hh:1064
@ kXR_ServerError
Definition: XProtocol.hh:1044
@ kXR_Overloaded
Definition: XProtocol.hh:1056
@ kXR_ReqTimedOut
Definition: XProtocol.hh:1066
const uint16_t errUnknown
Unknown error.
Definition: XrdClStatus.hh:50
const uint16_t errErrorResponse
Definition: XrdClStatus.hh:105

References XrdCl::errErrorResponse, XrdCl::errUnknown, kXR_Conflict, kXR_FileLocked, kXR_Impossible, kXR_InvalidRequest, kXR_NotAuthorized, kXR_NotFound, kXR_Overloaded, kXR_overQuota, kXR_ReqTimedOut, kXR_ServerError, and kXR_Unsupported.

Referenced by XrdClHttp::CurlWorker::Run().

+ Here is the caller graph for this function:

◆ HTTPStatusIsError()

bool XrdClHttp::HTTPStatusIsError ( unsigned  status)

Definition at line 106 of file XrdClHttpUtil.cc.

106  {
107  return (status < 100) || (status >= 400);
108 }

Referenced by XrdClHttp::CurlWorker::Run(), and XrdClHttp::CurlVectorReadOp::Write().

+ Here is the caller graph for this function:

◆ ltrim_view()

std::string_view XrdClHttp::ltrim_view ( const std::string_view &  input_view)

Definition at line 625 of file XrdClHttpUtil.cc.

625  {
626  for (size_t idx = 0; idx < input_view.size(); idx++) {
627  if (!isspace(input_view[idx])) {
628  return input_view.substr(idx);
629  }
630  }
631  return "";
632 }

Referenced by trim_view(), and XrdClS3::Factory::TrimView().

+ Here is the caller graph for this function:

◆ MarshalDuration()

std::string XrdClHttp::MarshalDuration ( const struct timespec &  timeout)

◆ ParseTimeout()

bool XrdClHttp::ParseTimeout ( const std::string &  duration,
struct timespec &  ,
std::string &  errmsg 
)

◆ trim_view()

std::string_view XrdClHttp::trim_view ( const std::string_view &  input_view)

Definition at line 614 of file XrdClHttpUtil.cc.

614  {
615  auto view = XrdClHttp::ltrim_view(input_view);
616  for (size_t idx = 0; idx < input_view.size(); idx++) {
617  if (!isspace(view[view.size() - 1 - idx])) {
618  return view.substr(0, view.size() - idx);
619  }
620  }
621  return "";
622 }
std::string_view ltrim_view(const std::string_view &input_view)

References ltrim_view().

+ Here is the call graph for this function: