| // Copyright 2013 The Flutter Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| #include "simple_token.h" | |
| #include <ostream> | |
| #include <random> | |
| namespace base { | |
| constexpr size_t kRandomTokenLength = 10; | |
| SimpleToken::SimpleToken(const std::string& token) : token_(token) {} | |
| // static | |
| SimpleToken SimpleToken::Create() { | |
| const char charset[] = | |
| "0123456789" | |
| "ABCDEFGHIJKLMNOPQRSTUVWXYZ" | |
| "abcdefghijklmnopqrstuvwxyz"; | |
| const size_t max_index = (sizeof(charset) - 1); | |
| std::string str; | |
| for (size_t i = 0; i < kRandomTokenLength; i++) { | |
| str.push_back(charset[rand() % max_index]); | |
| } | |
| return SimpleToken(str); | |
| } | |
| std::ostream& operator<<(std::ostream& out, const SimpleToken& token) { | |
| return out << "(" << token.ToString() << ")"; | |
| } | |
| std::optional<base::SimpleToken> ValueToSimpleToken(std::string str) { | |
| return std::make_optional<base::SimpleToken>(str); | |
| } | |
| std::string SimpleTokenToValue(const SimpleToken& token) { | |
| return token.ToString(); | |
| } | |
| size_t SimpleTokenHash(const SimpleToken& SimpleToken) { | |
| return std::hash<std::string>()(SimpleToken.ToString()); | |
| } | |
| } // namespace base |