94 lines
2.1 KiB
Dart
94 lines
2.1 KiB
Dart
import 'package:overfast_api/client.dart';
|
|
import 'package:overfast_api/players/player.dart';
|
|
|
|
class SearchResponse {
|
|
final int total;
|
|
final List<SearchResult> results;
|
|
|
|
const SearchResponse({
|
|
required this.total,
|
|
required this.results,
|
|
});
|
|
|
|
factory SearchResponse.fromJson(Map<String, dynamic> json) {
|
|
return SearchResponse(
|
|
total: json['total'],
|
|
results: (json['results'] as List)
|
|
.map((e) => SearchResult.fromJson(e))
|
|
.toList(),
|
|
);
|
|
}
|
|
|
|
Map<String, dynamic> toJson() {
|
|
return {
|
|
'total': total,
|
|
'results': results.map((e) => e.toJson()).toList(),
|
|
};
|
|
}
|
|
}
|
|
|
|
class SearchResult {
|
|
final String playerId;
|
|
final String name;
|
|
final String? avatar;
|
|
final String? namecard;
|
|
final String? title;
|
|
final String careerUrl;
|
|
final String blizzardId;
|
|
|
|
const SearchResult({
|
|
required this.playerId,
|
|
required this.name,
|
|
this.avatar,
|
|
this.namecard,
|
|
this.title,
|
|
required this.careerUrl,
|
|
required this.blizzardId,
|
|
});
|
|
|
|
factory SearchResult.fromJson(Map<String, dynamic> json) {
|
|
return SearchResult(
|
|
playerId: json['player_id'],
|
|
name: json['name'],
|
|
avatar: json['avatar'],
|
|
namecard: json['namecard'],
|
|
title: json['title'],
|
|
careerUrl: json['career_url'],
|
|
blizzardId: json['blizzard_id'],
|
|
);
|
|
}
|
|
|
|
Map<String, dynamic> toJson() {
|
|
return {
|
|
'playerId': playerId,
|
|
'name': name,
|
|
'avatar': avatar,
|
|
'namecard': namecard,
|
|
'title': title,
|
|
'careerUrl': careerUrl,
|
|
'blizzardId': blizzardId,
|
|
};
|
|
}
|
|
}
|
|
|
|
class Players {
|
|
final Overfast _client;
|
|
const Players(this._client);
|
|
|
|
Future<SearchResponse> search(
|
|
String query, {
|
|
String orderBy = 'name:desc',
|
|
int? offset,
|
|
int? limit,
|
|
}) async {
|
|
return _client.get<SearchResponse>('/players', {
|
|
'name': query,
|
|
'orderBy': orderBy,
|
|
if (offset != null) 'offset': offset.toString(),
|
|
if (limit != null) 'limit': limit.toString(),
|
|
});
|
|
}
|
|
|
|
Player player(String playerId) => Player(_client, playerId: playerId);
|
|
}
|