summaryrefslogtreecommitdiffstats
path: root/yql/essentials/providers/common/structured_token/yql_token_builder.h
blob: f9edf7f02134ce32b0782f17000c71f606b31dab (plain) (blame)
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);
}