MakeCacheKey produces a deterministic cache key from query parameters.
(providers, regions, categories, productFamilies []string, attrs map[string]string, prices []string)
| 215 | |
| 216 | // MakeCacheKey produces a deterministic cache key from query parameters. |
| 217 | func MakeCacheKey(providers, regions, categories, productFamilies []string, attrs map[string]string, prices []string) string { |
| 218 | parts := []string{ |
| 219 | strings.Join(providers, ","), |
| 220 | strings.Join(regions, ","), |
| 221 | strings.Join(categories, ","), |
| 222 | strings.Join(productFamilies, ","), |
| 223 | } |
| 224 | attrParts := make([]string, 0, len(attrs)) |
| 225 | for k, v := range attrs { |
| 226 | attrParts = append(attrParts, k+"="+v) |
| 227 | } |
| 228 | sort.Strings(attrParts) |
| 229 | parts = append(parts, strings.Join(attrParts, "&")) |
| 230 | parts = append(parts, strings.Join(prices, ",")) |
| 231 | sort.Strings(parts) |
| 232 | return strings.Join(parts, "|") |
| 233 | } |