Skip to content

Commit ca1a84d

Browse files
committed
feat: Add reporter logic
1 parent e2af3e5 commit ca1a84d

File tree

7 files changed

+169
-0
lines changed

7 files changed

+169
-0
lines changed

logic/lib/src/domain/const/urls.dart

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -252,4 +252,7 @@ class Urls {
252252

253253
static String newConversation(String userId) => '${aiBaseEndpoint}new_conversation?user_id=$userId';
254254
static const String completion = '${aiBaseEndpoint}completion';
255+
256+
static const String reporterEndpoint = '';
257+
static const String reporterInfo = '${reporterEndpoint}info';
255258
}

logic/lib/src/domain/entities/entities.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,3 +31,4 @@ export 'miner_get_total_claim/miner_get_total_claim.dart';
3131
export 'blueberry_ring/blueberry_ring.dart';
3232
export 'domain_names_query_response.dart';
3333
export 'ai/ai.dart';
34+
export 'reporter_info_response/reporter_info_response.dart';
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
import 'dart:convert';
2+
3+
import 'package:equatable/equatable.dart';
4+
5+
import 'result.dart';
6+
7+
class ReporterInfoResponse extends Equatable {
8+
9+
factory ReporterInfoResponse.fromMap(Map<String, Object?> data) {
10+
return ReporterInfoResponse(
11+
ret: data['ret'] as int?,
12+
message: data['message'] as String?,
13+
result: data['result'] == null
14+
? null
15+
: Result.fromMap(data['result']! as Map<String, Object?>),
16+
);
17+
}
18+
19+
/// `dart:convert`
20+
///
21+
/// Parses the string and returns the resulting Json object as [ReporterInfoResponse].
22+
factory ReporterInfoResponse.fromJson(String data) {
23+
return ReporterInfoResponse.fromMap(
24+
json.decode(data) as Map<String, Object?>);
25+
}
26+
const ReporterInfoResponse({this.ret, this.message, this.result});
27+
28+
final int? ret;
29+
final String? message;
30+
final Result? result;
31+
32+
Map<String, Object?> toMap() => {
33+
'ret': ret,
34+
'message': message,
35+
'result': result?.toMap(),
36+
};
37+
38+
/// `dart:convert`
39+
///
40+
/// Converts [ReporterInfoResponse] to a JSON string.
41+
String toJson() => json.encode(toMap());
42+
43+
ReporterInfoResponse copyWith({
44+
int? ret,
45+
String? message,
46+
Result? result,
47+
}) {
48+
return ReporterInfoResponse(
49+
ret: ret ?? this.ret,
50+
message: message ?? this.message,
51+
result: result ?? this.result,
52+
);
53+
}
54+
55+
@override
56+
List<Object?> get props => [ret, message, result];
57+
}
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
import 'dart:convert';
2+
3+
import 'package:equatable/equatable.dart';
4+
5+
class Result extends Equatable {
6+
const Result({
7+
this.name,
8+
this.version,
9+
this.hash,
10+
this.lastReport,
11+
this.lastReportData,
12+
});
13+
14+
final String? name;
15+
final String? version;
16+
final String? hash;
17+
final String? lastReport;
18+
final String? lastReportData;
19+
20+
factory Result.fromMap(Map<String, Object?> data) => Result(
21+
name: data['name'] as String?,
22+
version: data['version'] as String?,
23+
hash: data['hash'] as String?,
24+
lastReport: data['lastReport'] as String?,
25+
lastReportData: data['lastReportData'] as String?,
26+
);
27+
28+
Map<String, Object?> toMap() => {
29+
'name': name,
30+
'version': version,
31+
'hash': hash,
32+
'lastReport': lastReport,
33+
'lastReportData': lastReportData,
34+
};
35+
36+
/// `dart:convert`
37+
///
38+
/// Parses the string and returns the resulting Json object as [Result].
39+
factory Result.fromJson(String data) {
40+
return Result.fromMap(json.decode(data) as Map<String, Object?>);
41+
}
42+
43+
/// `dart:convert`
44+
///
45+
/// Converts [Result] to a JSON string.
46+
String toJson() => json.encode(toMap());
47+
48+
Result copyWith({
49+
String? name,
50+
String? version,
51+
String? hash,
52+
String? lastReport,
53+
String? lastReportData,
54+
}) {
55+
return Result(
56+
name: name ?? this.name,
57+
version: version ?? this.version,
58+
hash: hash ?? this.hash,
59+
lastReport: lastReport ?? this.lastReport,
60+
lastReportData: lastReportData ?? this.lastReportData,
61+
);
62+
}
63+
64+
@override
65+
List<Object?> get props {
66+
return [
67+
name,
68+
version,
69+
hash,
70+
lastReport,
71+
lastReportData,
72+
];
73+
}
74+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export 'reporter_repo.dart';
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import 'dart:async';
2+
import 'package:mxc_logic/src/data/api/client/rest_client.dart';
3+
import 'package:mxc_logic/src/domain/const/const.dart';
4+
import 'package:mxc_logic/src/domain/entities/reporter_info_response/reporter_info_response.dart';
5+
import 'package:web3dart/web3dart.dart';
6+
7+
class ReporterRepository {
8+
ReporterRepository (
9+
this._web3Client,
10+
) : _restClient = RestClient();
11+
12+
final Web3Client _web3Client;
13+
final RestClient _restClient;
14+
15+
Future<String> getLastReportData() async {
16+
final response = await _restClient.client.get(
17+
Uri.parse(
18+
Urls.reporterInfo,
19+
),
20+
);
21+
22+
final res =
23+
ReporterInfoResponse.fromJson(response.body);
24+
25+
if (res.result?.lastReportData == null) {
26+
throw 'report_data_is_missing';
27+
}
28+
return res.result!.lastReportData!;
29+
}
30+
}

logic/lib/src/domain/repositories/web3_repository.dart

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import 'package:mxc_logic/mxc_logic.dart';
22
import 'package:mxc_logic/src/data/api/client/web3_client.dart';
33
import 'package:mxc_logic/src/data/data.dart';
44
import 'package:mxc_logic/src/domain/repositories/chat/chat_repo.dart';
5+
import 'package:mxc_logic/src/domain/repositories/reporter/reporter.dart';
56
import 'package:mxc_logic/src/domain/repositories/wallet/google_drive.dart';
67
import 'package:mxc_logic/src/domain/repositories/wallet/icloud.dart';
78

@@ -63,4 +64,6 @@ class Web3Repository {
6364
ICloudRepository get iCloudRepository => ICloudRepository(_web3client);
6465

6566
ChatRepository get chatRepository => ChatRepository(_web3client);
67+
68+
ReporterRepository get reporterRepository => ReporterRepository(_web3client);
6669
}

0 commit comments

Comments
 (0)