XRootD
Loading...
Searching...
No Matches
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}

◆ 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}

◆ 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}

◆ 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}

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