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  case 406: // Not acceptable
123  return std::make_pair(XrdCl::errErrorResponse, kXR_InvalidRequest);
124  case 407: // Proxy Authentication Required
125  return std::make_pair(XrdCl::errErrorResponse, kXR_NotAuthorized);
126  case 408: // Request timeout
127  return std::make_pair(XrdCl::errErrorResponse, kXR_ReqTimedOut);
128  case 409: // Conflict
129  return std::make_pair(XrdCl::errErrorResponse, kXR_Conflict);
130  case 410: // Gone
131  return std::make_pair(XrdCl::errErrorResponse, kXR_NotFound);
132  case 411: // Length required
133  case 412: // Precondition failed
134  case 413: // Payload too large
135  case 414: // URI too long
136  case 415: // Unsupported Media Type
137  case 416: // Range Not Satisfiable
138  case 417: // Expectation Failed
139  case 418: // I'm a teapot
140  return std::make_pair(XrdCl::errErrorResponse, kXR_InvalidRequest);
141  case 421: // Misdirected Request
142  case 422: // Unprocessable Content
143  return std::make_pair(XrdCl::errErrorResponse, kXR_InvalidRequest);
144  case 423: // Locked
145  return std::make_pair(XrdCl::errErrorResponse, kXR_FileLocked);
146  case 424: // Failed Dependency
147  case 425: // Too Early
148  case 426: // Upgrade Required
149  case 428: // Precondition Required
150  return std::make_pair(XrdCl::errErrorResponse, kXR_InvalidRequest);
151  case 429: // Too Many Requests
152  return std::make_pair(XrdCl::errErrorResponse, kXR_Overloaded);
153  case 431: // Request Header Fields Too Large
154  return std::make_pair(XrdCl::errErrorResponse, kXR_InvalidRequest);
155  case 451: // Unavailable For Legal Reasons
156  return std::make_pair(XrdCl::errErrorResponse, kXR_Impossible);
157  case 500: // Internal Server Error
158  case 501: // Not Implemented
159  case 502: // Bad Gateway
160  case 503: // Service Unavailable
161  return std::make_pair(XrdCl::errErrorResponse, kXR_ServerError);
162  case 504: // Gateway Timeout
163  return std::make_pair(XrdCl::errErrorResponse, kXR_ReqTimedOut);
164  case 507: // Insufficient Storage
165  return std::make_pair(XrdCl::errErrorResponse, kXR_overQuota);
166  case 508: // Loop Detected
167  case 510: // Not Extended
168  case 511: // Network Authentication Required
169  return std::make_pair(XrdCl::errErrorResponse, kXR_ServerError);
170  }
171  return std::make_pair(XrdCl::errUnknown, status);
172 }
@ 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_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, and kXR_ServerError.

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 621 of file XrdClHttpUtil.cc.

621  {
622  for (size_t idx = 0; idx < input_view.size(); idx++) {
623  if (!isspace(input_view[idx])) {
624  return input_view.substr(idx);
625  }
626  }
627  return "";
628 }

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 610 of file XrdClHttpUtil.cc.

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

References ltrim_view().

+ Here is the call graph for this function: