XRootD
Loading...
Searching...
No Matches
Macaroons Namespace Reference

Classes

class  Authz
class  Handler

Enumerations

enum  LogMask {
  Debug = 0x01 ,
  Info = 0x02 ,
  Warning = 0x04 ,
  Error = 0x08 ,
  All = 0xff
}

Functions

ssize_t determine_validity (const std::string &input)
std::string NormalizeSlashes (const std::string &input)

Enumeration Type Documentation

◆ LogMask

Enumerator
Debug 
Info 
Warning 
Error 
All 

Definition at line 16 of file XrdMacaroonsHandler.hh.

16 {
17 Debug = 0x01,
18 Info = 0x02,
19 Warning = 0x04,
20 Error = 0x08,
21 All = 0xff
22};

Function Documentation

◆ determine_validity()

ssize_t Macaroons::determine_validity ( const std::string & input)

Definition at line 26 of file XrdMacaroonsUtils.cc.

27{
28 ssize_t duration = 0;
29 if (input.find("PT") != 0)
30 {
31 return -1;
32 }
33 size_t pos = 2;
34 std::string remaining = input;
35 do
36 {
37 remaining = remaining.substr(pos);
38 if (remaining.size() == 0) break;
39 long cur_duration;
40 try
41 {
42 cur_duration = stol(remaining, &pos);
43 } catch (...)
44 {
45 return -1;
46 }
47 if (pos >= remaining.size())
48 {
49 return -1;
50 }
51 char unit = remaining[pos];
52 switch (unit) {
53 case 'S':
54 break;
55 case 'M':
56 cur_duration *= 60;
57 break;
58 case 'H':
59 cur_duration *= 3600;
60 break;
61 default:
62 return -1;
63 };
64 pos ++;
65 duration += cur_duration;
66 } while (1);
67 return duration;
68}

Referenced by Macaroons::Handler::ProcessReq().

Here is the caller graph for this function:

◆ NormalizeSlashes()

std::string Macaroons::NormalizeSlashes ( const std::string & input)

Definition at line 5 of file XrdMacaroonsUtils.cc.

6{
7 std::string output;
8 // In most cases, the output should be "about as large"
9 // as the input
10 output.reserve(input.size());
11 char prior_chr = '\0';
12 size_t output_idx = 0;
13 for (size_t idx = 0; idx < input.size(); idx++) {
14 char chr = input[idx];
15 if (prior_chr == '/' && chr == '/') {
16 output_idx++;
17 continue;
18 }
19 output += input[output_idx];
20 prior_chr = chr;
21 output_idx++;
22 }
23 return output;
24}