1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
#pragma once
#include <yql/essentials/providers/common/structured_token/yql_structured_token.h>
#include <util/generic/set.h>
namespace NYql {
class TStructuredTokenBuilder {
public:
TStructuredTokenBuilder();
explicit TStructuredTokenBuilder(const TStructuredToken& data);
TStructuredTokenBuilder(TStructuredTokenBuilder&&) = default;
TStructuredTokenBuilder& SetServiceAccountIdAuth(const TString& accountId, const TString& accountIdSignature);
TStructuredTokenBuilder& SetServiceAccountIdAuthWithSecret(const TString& accountId, const TString& accountIdSignatureReference, const TString& accountIdSignature);
TStructuredTokenBuilder& SetBasicAuth(const TString& login, const TString& password);
TStructuredTokenBuilder& SetBasicAuthWithSecret(const TString& login, const TString& passwordReference);
TStructuredTokenBuilder& SetTokenAuthWithSecret(const TString& tokenReference, const TString& token);
TStructuredTokenBuilder& SetIAMToken(const TString& token);
TStructuredTokenBuilder& SetNoAuth();
TStructuredTokenBuilder& ReplaceReferences(const std::map<TString, TString>& secrets);
TStructuredTokenBuilder& RemoveSecrets();
TString ToJson() const;
private:
TStructuredToken Data_;
};
class TStructuredTokenParser {
public:
explicit TStructuredTokenParser(TStructuredToken&& data);
bool HasServiceAccountIdAuth() const;
bool GetServiceAccountIdAuth(TString& accountId, TString& accountIdSignature) const;
bool GetServiceAccountIdAuth(TString& accountId, TString& accountIdSignature, TString& accountIdSignatureReference) const;
bool HasBasicAuth() const;
bool GetBasicAuth(TString& login, TString& password) const;
bool GetBasicAuth(TString& login, TString& password, TString& passwordReference) const;
bool HasIAMToken() const;
TString GetIAMToken() const;
bool IsNoAuth() const;
void ListReferences(TSet<TString>& references) const;
TStructuredTokenBuilder ToBuilder() const;
private:
const TStructuredToken Data_;
};
TStructuredTokenParser CreateStructuredTokenParser(const TString& content);
TString ComposeStructuredTokenJsonForServiceAccount(const TString& serviceAccountId, const TString& serviceAccountIdSignature, const TString& token);
TString ComposeStructuredTokenJsonForServiceAccountWithSecret(const TString& serviceAccountId, const TString& serviceAccountIdSignatureSecretName, const TString& serviceAccountIdSignature);
TString ComposeStructuredTokenJsonForBasicAuthWithSecret(const TString& login, const TString& passwordSecretName, const TString& password);
TString ComposeStructuredTokenJsonForTokenAuthWithSecret(const TString& tokenSecretName, const TString& token);
}
|