| 25 | } |
| 26 | |
| 27 | std::string AvatarCache::MakeIdentifier(const std::string& resource) |
| 28 | { |
| 29 | if (!m_resourceNameToID[resource].empty()) |
| 30 | return m_resourceNameToID[resource]; |
| 31 | |
| 32 | if (resource.size() == 32) { |
| 33 | bool isAlreadyResource = true; |
| 34 | for (auto chr : resource) { |
| 35 | if (!(chr >= '0' && chr <= '9' || chr >= 'a' && chr <= 'f')) { |
| 36 | isAlreadyResource = false; |
| 37 | break; |
| 38 | } |
| 39 | } |
| 40 | if (isAlreadyResource) |
| 41 | return resource; |
| 42 | } |
| 43 | |
| 44 | m_resourceNameToID[resource] = MD5(resource).finalize().hexdigest(); |
| 45 | return m_resourceNameToID[resource]; |
| 46 | } |
| 47 | |
| 48 | std::string AvatarCache::AddImagePlace(const std::string& resource, eImagePlace ip, const std::string& place, Snowflake sf, int sizeOverride) |
| 49 | { |