XRootD
XrdHttpChecksumHandlerImpl Class Reference

#include <XrdHttpChecksumHandler.hh>

+ Collaboration diagram for XrdHttpChecksumHandlerImpl:

Public Types

using XrdHttpChecksumPtr = std::unique_ptr< XrdHttpChecksum >
 
using XrdHttpChecksumRawPtr = XrdHttpChecksum *
 

Public Member Functions

 XrdHttpChecksumHandlerImpl ()=default
 
void configure (const char *csList)
 
XrdHttpChecksumRawPtr getChecksumToRunWantDigest (const std::string &wantDigest) const
 
XrdHttpChecksumRawPtr getChecksumToRunWantReprDigest (const std::map< std::string, uint8_t > &wantReprDigest) const
 
const std::vector< XrdHttpChecksumRawPtr > & getConfiguredChecksums () const
 
const std::vector< std::string > & getNonIANAConfiguredCksums () const
 

Detailed Description

Implementation class of the XrdHttpChecksumHandler

Is useful for unit testing

Definition at line 38 of file XrdHttpChecksumHandler.hh.

Member Typedef Documentation

◆ XrdHttpChecksumPtr

◆ XrdHttpChecksumRawPtr

Constructor & Destructor Documentation

◆ XrdHttpChecksumHandlerImpl()

XrdHttpChecksumHandlerImpl::XrdHttpChecksumHandlerImpl ( )
default

Member Function Documentation

◆ configure()

void XrdHttpChecksumHandlerImpl::configure ( const char *  csList)

Definition at line 99 of file XrdHttpChecksumHandler.cc.

99  {
100  initializeCksumsMaps();
101  if(csList != nullptr) {
102  initializeXRootDConfiguredCksums(csList);
103  }
104 }

Referenced by XrdHttpChecksumHandler::configure().

+ Here is the caller graph for this function:

◆ getChecksumToRunWantDigest()

XrdHttpChecksumHandlerImpl::XrdHttpChecksumRawPtr XrdHttpChecksumHandlerImpl::getChecksumToRunWantDigest ( const std::string &  wantDigest) const

Definition at line 52 of file XrdHttpChecksumHandler.cc.

52  {
53  if(!mConfiguredChecksums.empty()) {
54  std::vector<std::string> userDigests = getUserDigests(wantDigest);
55  //Loop over the user digests and find the corresponding checksum
56  for(auto userDigest: userDigests) {
57  auto httpCksum = std::find_if(mConfiguredChecksums.begin(), mConfiguredChecksums.end(),[userDigest](const XrdHttpChecksumRawPtr & cksum){
58  return userDigest == cksum->getHttpNameLowerCase();
59  });
60  if(httpCksum != mConfiguredChecksums.end()) {
61  return *httpCksum;
62  }
63  }
64  return mConfiguredChecksums[0];
65  }
66  //If there are no configured checksums, return nullptr
67  return nullptr;
68 }

Referenced by XrdHttpChecksumHandler::getChecksumToRunWantDigest().

+ Here is the caller graph for this function:

◆ getChecksumToRunWantReprDigest()

XrdHttpChecksumHandlerImpl::XrdHttpChecksumRawPtr XrdHttpChecksumHandlerImpl::getChecksumToRunWantReprDigest ( const std::map< std::string, uint8_t > &  wantReprDigest) const

Definition at line 70 of file XrdHttpChecksumHandler.cc.

70  {
71  if(!mConfiguredChecksums.empty()) {
72  uint8_t bestPref = 0;
73  XrdHttpChecksumHandlerImpl::XrdHttpChecksumRawPtr retCksum = mConfiguredChecksums.front();
74  for(const auto & [digestName, preference]: wantReprDigest) {
75  if(preference > bestPref) {
76  const auto cksumItor = std::find_if(mConfiguredChecksums.begin(), mConfiguredChecksums.end(),[dn = digestName](const XrdHttpChecksumRawPtr & cksum){
77  return dn == cksum->getHttpNameLowerCase();
78  });
79  if(cksumItor != mConfiguredChecksums.end()) {
80  bestPref = preference;
81  retCksum = *cksumItor;
82  }
83  }
84  }
85  return retCksum;
86  }
87  return nullptr;
88 }

Referenced by XrdHttpChecksumHandler::getChecksumToRunWantReprDigest().

+ Here is the caller graph for this function:

◆ getConfiguredChecksums()

const std::vector< XrdHttpChecksumHandler::XrdHttpChecksumRawPtr > & XrdHttpChecksumHandlerImpl::getConfiguredChecksums ( ) const

For testing purposes

Definition at line 94 of file XrdHttpChecksumHandler.cc.

94  {
95  return mConfiguredChecksums;
96 }

◆ getNonIANAConfiguredCksums()

const std::vector< std::string > & XrdHttpChecksumHandlerImpl::getNonIANAConfiguredCksums ( ) const

Definition at line 90 of file XrdHttpChecksumHandler.cc.

90  {
91  return mNonIANAConfiguredChecksums;
92 }

Referenced by XrdHttpChecksumHandler::getNonIANAConfiguredCksums().

+ Here is the caller graph for this function:

The documentation for this class was generated from the following files: