Line data Source code
1 : ///
2 : ///
3 : ///
4 : enum HeaderKeyCase {
5 : lowercase,
6 : capitalize,
7 : preserve;
8 : }
9 :
10 : ///
11 : ///
12 : ///
13 : class Utils {
14 : ///
15 : ///
16 : ///
17 3 : static String capitalizeHeaderKey(
18 : String key, {
19 : String separator = '-',
20 : }) {
21 3 : final List<String> parts = key.split(separator);
22 :
23 9 : for (int i = 0; i < parts.length; i++) {
24 6 : if (parts[i].isEmpty) {
25 : continue;
26 : }
27 :
28 3 : parts[i] =
29 21 : parts[i][0].toUpperCase() + parts[i].substring(1).toLowerCase();
30 : }
31 :
32 3 : return parts.join(separator);
33 : }
34 :
35 : ///
36 : ///
37 : ///
38 2 : static String headerKey(HeaderKeyCase keyCase, String key) {
39 : switch (keyCase) {
40 2 : case HeaderKeyCase.lowercase:
41 1 : return key.toLowerCase();
42 2 : case HeaderKeyCase.capitalize:
43 2 : return capitalizeHeaderKey(key);
44 1 : case HeaderKeyCase.preserve:
45 : return key;
46 : }
47 : }
48 :
49 : ///
50 : ///
51 : ///
52 2 : static Map<String, String> headers(
53 : Map<String, String> headers,
54 : HeaderKeyCase keyCase,
55 : ) {
56 2 : final Map<String, String> newHeaders = <String, String>{};
57 :
58 4 : for (final MapEntry<String, String> entry in headers.entries) {
59 8 : newHeaders[headerKey(keyCase, entry.key)] = entry.value;
60 : }
61 :
62 : return newHeaders;
63 : }
64 :
65 : ///
66 : ///
67 : ///
68 2 : static String removeQuotes(String value) =>
69 4 : value.replaceAll(RegExp(r'^"|"$'), '');
70 :
71 : ///
72 : ///
73 : ///
74 2 : static List<String> splitFirst(String value, String separator) {
75 2 : final int index = value.indexOf(separator);
76 :
77 4 : if (index == -1) {
78 1 : return <String>[value];
79 : }
80 :
81 2 : return <String>[
82 2 : value.substring(0, index),
83 6 : value.substring(index + separator.length),
84 : ];
85 : }
86 : }
|