yql_token_builder.h 2.7 KB

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