Skip to content

Commit 8c33a5b

Browse files
committed
Consolidated utils from src/util.dart into src/common/utils/utils.dart
1 parent e578e1f commit 8c33a5b

16 files changed

+107
-109
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
## 6.2.1
2+
- Consolidated utils from src/util.dart into src/common/utils/utils.dart
3+
14
## 6.2.0
25
- Added Checks API https://github.com/SpinlockLabs/github.dart/pull/182
36
- Bug fix: Fix setRepositorySubscription to be a PUT instead of a POST https://github.com/SpinlockLabs/github.dart/commit/5b5d7656ce9ce1cb06e15651da06e7e192bc19e1

lib/src/common/activity_service.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import 'dart:convert';
33
import 'package:github/src/common.dart';
44
import 'package:github/src/common/model/users.dart';
55
import 'package:github/src/common/util/pagination.dart';
6-
import 'package:github/src/util.dart';
6+
import 'package:github/src/common/util/utils.dart';
77
import 'package:http/http.dart' as http;
88

99
/// The [ActivityService] handles communication with activity related methods

lib/src/common/checks_service.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import 'dart:convert';
22

33
import 'package:github/github.dart';
4-
import 'package:github/src/util.dart';
4+
import 'package:github/src/common/util/utils.dart';
55
import 'package:meta/meta.dart';
66

77
const _previewHeader = 'application/vnd.github.antiope-preview+json';

lib/src/common/github.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import 'dart:async';
22
import 'dart:convert';
33
import 'package:github/src/common.dart';
4-
import 'package:github/src/util.dart';
4+
import 'package:github/src/common/util/utils.dart';
55
import 'package:http/http.dart' as http;
66
import 'package:http_parser/http_parser.dart' as http_parser;
77
import 'package:meta/meta.dart';

lib/src/common/model/checks.dart

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import 'package:github/src/common/util/utils.dart';
2-
import 'package:github/src/util.dart';
32
import 'package:meta/meta.dart';
43

54
class CheckRunAnnotationLevel extends EnumWithValue {

lib/src/common/model/repos.dart

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import 'package:github/src/common.dart';
2-
import 'package:github/src/util.dart';
32
import 'package:json_annotation/json_annotation.dart';
43
part 'repos.g.dart';
54

lib/src/common/orgs_service.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import 'dart:async';
22
import 'dart:convert';
33
import 'package:github/src/common.dart';
44
import 'package:github/src/common/util/pagination.dart';
5-
import 'package:github/src/util.dart';
5+
import 'package:github/src/common/util/utils.dart';
66
import 'package:http/http.dart' as http;
77

88
/// The [OrganizationsService] handles communication with organization

lib/src/common/pulls_service.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import 'dart:async';
22
import 'dart:convert';
33
import 'package:github/src/common.dart';
44
import 'package:github/src/common/util/pagination.dart';
5-
import 'package:github/src/util.dart';
5+
import 'package:github/src/common/util/utils.dart';
66

77
/// The [PullRequestsService] handles communication with pull request
88
/// methods of the GitHub API.

lib/src/common/repos_service.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import 'package:github/src/common.dart';
44
import 'package:github/src/common/model/repos_releases.dart';
55
import 'package:github/src/common/model/users.dart';
66
import 'package:github/src/common/util/pagination.dart';
7-
import 'package:github/src/util.dart';
7+
import 'package:github/src/common/util/utils.dart';
88
import 'package:http/http.dart' as http;
99
import 'package:meta/meta.dart';
1010

lib/src/common/users_service.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import 'dart:async';
22
import 'package:github/src/common.dart';
33
import 'package:github/src/common/model/users.dart';
44
import 'package:github/src/common/util/pagination.dart';
5-
import 'package:github/src/util.dart';
5+
import 'package:github/src/common/util/utils.dart';
66
import 'package:http/http.dart' as http;
77

88
/// The [UsersService] handles communication with user related methods of the

lib/src/common/util/oauth2.dart

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import 'dart:async';
22
import 'dart:convert';
33
import 'package:github/src/common.dart';
4-
import 'package:github/src/util.dart';
54
import 'package:http/http.dart' as http;
65

76
/// OAuth2 Flow Helper

lib/src/common/util/pagination.dart

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import 'dart:convert' show jsonDecode;
44
import 'package:http/http.dart' as http;
55

66
import '../../common.dart';
7-
import '../../util.dart';
87

98
/// Internal Helper for dealing with GitHub Pagination.
109
class PaginationHelper {

lib/src/common/util/utils.dart

Lines changed: 96 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import 'package:github/src/common.dart';
2-
import 'package:github/src/util.dart';
32
import 'package:meta/meta.dart';
43

54
/// A Json encodable class that mimics an enum,
@@ -92,3 +91,99 @@ abstract class StatusCodes {
9291

9392
static bool isClientError(int code) => code > 400 && code < 500;
9493
}
94+
95+
final RegExp githubDateRemoveRegExp = RegExp(r'\.\d*');
96+
97+
const v3ApiMimeType = 'application/vnd.github.v3+json';
98+
99+
String buildQueryString(Map<String, dynamic> params) {
100+
final queryString = StringBuffer();
101+
102+
if (params.isNotEmpty && !params.values.every((value) => value == null)) {
103+
queryString.write('?');
104+
}
105+
106+
var i = 0;
107+
for (final key in params.keys) {
108+
i++;
109+
if (params[key] == null) {
110+
continue;
111+
}
112+
queryString.write('$key=${Uri.encodeComponent(params[key].toString())}');
113+
if (i != params.keys.length) {
114+
queryString.write('&');
115+
}
116+
}
117+
return queryString.toString();
118+
}
119+
120+
dynamic copyOf(dynamic input) {
121+
if (input is Iterable) {
122+
return List.from(input);
123+
} else if (input is Map) {
124+
return Map.from(input);
125+
} else {
126+
throw Exception('type could not be copied');
127+
}
128+
}
129+
130+
/// Puts a [name] and [value] into the [map] if [value] is not null. If [value]
131+
/// is null, nothing is added.
132+
void putValue(String name, dynamic value, Map<String, dynamic> map) {
133+
if (value != null) {
134+
map[name] = value;
135+
}
136+
}
137+
138+
List<MapEntry<dynamic, dynamic>> mapToList(Map<dynamic, dynamic> input) {
139+
final out = <MapEntry<dynamic, dynamic>>[];
140+
for (final key in input.keys) {
141+
out.add(MapEntry<dynamic, dynamic>(key, input[key]));
142+
}
143+
return out;
144+
}
145+
146+
/// Internal method to handle null for parsing dates.
147+
DateTime parseDateTime(String input) {
148+
if (input == null) {
149+
return null;
150+
}
151+
152+
return DateTime.parse(input);
153+
}
154+
155+
/// Returns a new map containing only the entries of [input] whose value is not null.
156+
///
157+
/// If [recursive] is true, nested maps are also filtered.
158+
Map<K, V> createNonNullMap<K, V>(Map<K, V> input, {bool recursive = true}) {
159+
final map = <K, V>{};
160+
for (final entry in input.entries) {
161+
if (entry.value != null) {
162+
map[entry.key] = recursive && entry.value is Map
163+
? createNonNullMap(entry.value as Map, recursive: recursive)
164+
: entry.value;
165+
}
166+
}
167+
return map;
168+
}
169+
170+
// TODO: only used in test – delete?
171+
int parseFancyNumber(String input) {
172+
input = input.trim();
173+
if (input.contains(',')) {
174+
input = input.replaceAll(',', '');
175+
}
176+
177+
const multipliers = {'h': 100, 'k': 1000, 'ht': 100000, 'm': 1000000};
178+
int value;
179+
180+
if (!multipliers.keys.any((m) => input.endsWith(m))) {
181+
value = int.parse(input);
182+
} else {
183+
final m = multipliers.keys.firstWhere((m) => input.endsWith(m));
184+
input = input.substring(0, input.length - m.length);
185+
value = num.parse(input) * multipliers[m];
186+
}
187+
188+
return value;
189+
}

lib/src/util.dart

Lines changed: 0 additions & 95 deletions
This file was deleted.

test/experiment/fancy_numbers.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import 'package:github/src/util.dart';
1+
import 'package:github/src/common/util/utils.dart';
22

33
void main() {
44
test('1k', 1000);

test/git_test.dart

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ import 'dart:async';
22
import 'dart:convert';
33

44
import 'package:github/src/common.dart';
5-
import 'package:github/src/util.dart';
65
import 'package:http/http.dart' as http;
76
import 'package:mockito/mockito.dart';
87
import 'package:test/test.dart';

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy