yql_structured_token.h 990 B

12345678910111213141516171819202122232425262728293031
  1. #pragma once
  2. #include <util/generic/map.h>
  3. #include <util/generic/maybe.h>
  4. #include <util/generic/string.h>
  5. namespace NYql {
  6. class TStructuredToken {
  7. public:
  8. explicit TStructuredToken(TMap<TString, TString>&& data = {});
  9. TStructuredToken(TStructuredToken&&) = default;
  10. TStructuredToken(const TStructuredToken&) = default;
  11. TString GetField(const TString& name) const;
  12. TString GetFieldOrDefault(const TString& name, const TString& defaultValue) const;
  13. TMaybe<TString> FindField(const TString& name) const;
  14. bool HasField(const TString& name) const;
  15. TStructuredToken& SetField(const TString& name, const TString& value);
  16. TStructuredToken& ClearField(const TString& name);
  17. TString ToJson() const;
  18. private:
  19. TMap<TString, TString> Data;
  20. };
  21. // is used for backward compatibility when content contains just token
  22. bool IsStructuredTokenJson(const TString& content);
  23. TStructuredToken ParseStructuredToken(const TString& content);
  24. } // namespace NYql