aboutsummaryrefslogtreecommitdiffstats
path: root/library/cpp/tvmauth/client/misc/tool/meta_info.h
blob: 659c8f677f7f93ef3f048942f06b3a11b17565fa (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
57
58
59
60
61
62
63
64
65
66
67
#pragma once 
 
#include "settings.h" 
 
#include <library/cpp/tvmauth/client/misc/utils.h> 
 
#include <library/cpp/tvmauth/client/logger.h> 
 
#include <library/cpp/http/simple/http_client.h> 
 
namespace NTvmAuth::NTvmTool { 
    class TMetaInfo { 
    public: 
        using TDstAliases = THashMap<TClientSettings::TAlias, TTvmId>; 
 
        struct TConfig { 
            TTvmId SelfTvmId = 0; 
            EBlackboxEnv BbEnv = EBlackboxEnv::Prod; 
            TDstAliases DstAliases; 
 
            bool AreTicketsRequired() const { 
                return !DstAliases.empty(); 
            } 
 
            TString ToString() const; 
 
            bool operator==(const TConfig& c) const { 
                return SelfTvmId == c.SelfTvmId && 
                       BbEnv == c.BbEnv && 
                       DstAliases == c.DstAliases; 
            } 
        }; 
        using TConfigPtr = std::shared_ptr<TConfig>; 
 
    public: 
        TMetaInfo(TLoggerPtr logger); 
 
        TConfigPtr Init(TKeepAliveHttpClient& client, 
                        const TClientSettings& settings); 
 
        static TString GetRequestForTickets(const TMetaInfo::TConfig& config); 
 
        const TKeepAliveHttpClient::THeaders& GetAuthHeader() const { 
            return AuthHeader_; 
        } 
 
        TConfigPtr GetConfig() const { 
            return Config_.Get(); 
        } 
 
        bool TryUpdateConfig(TKeepAliveHttpClient& client); 
 
    protected: 
        void TryPing(TKeepAliveHttpClient& client); 
        TString Fetch(TKeepAliveHttpClient& client) const; 
        static TConfigPtr ParseMetaString(const TString& meta, const TString& self); 
        void ApplySettings(const TClientSettings& settings); 
        static EBlackboxEnv BbEnvFromString(const TString& env, const TString& meta); 
 
    protected: 
        NUtils::TProtectedValue<TConfigPtr> Config_; 
        TKeepAliveHttpClient::THeaders AuthHeader_; 
 
        TLoggerPtr Logger_; 
        TString SelfAlias_; 
    }; 
}