Skip to content

Commit e71e85e

Browse files
committed
feat!: improve error system
Change string by ApklisErrorModel with statusCode: int and statusMessage: String
1 parent fd17feb commit e71e85e

File tree

8 files changed

+82
-21
lines changed

8 files changed

+82
-21
lines changed

packages/apklis_dio_web_api/lib/apklis_dio_web_api.dart

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ library apklis_dio_web_api;
22

33
import 'package:apklis_web_api/apklis_api_result.dart';
44
import 'package:apklis_web_api/apklis_web_api.dart';
5+
import 'package:apklis_web_api/models/apklis_error_model.dart';
56
import 'package:apklis_web_api/models/models.dart';
67
import 'package:dio/dio.dart';
78

@@ -20,10 +21,16 @@ class ApklisDioWebApi extends ApklisWebApi {
2021
final model = ApklisModel.fromJson(json);
2122
return ApklisApiResult.success(model);
2223
} else {
23-
return ApklisApiResult.failure(response.statusMessage!);
24+
return ApklisApiResult.failure(ApklisErrorModel(
25+
statusCode: response.statusCode!,
26+
statusMessage: response.statusMessage!,
27+
));
2428
}
2529
} catch (e) {
26-
return ApklisApiResult.failure(e.toString());
30+
return ApklisApiResult.failure(ApklisErrorModel(
31+
statusCode: -1,
32+
statusMessage: e.toString(),
33+
));
2734
}
2835
}
2936
}

packages/apklis_dio_web_api/test/apklis_dio_web_api_test.dart

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,8 @@ void main() {
6868
throw Exception('Result should be failure.');
6969
},
7070
failure: (error) {
71-
expect(error.isNotEmpty, true);
71+
expect(error.statusCode, isNot(200));
72+
expect(error.statusMessage.isNotEmpty, true);
7273
},
7374
);
7475
});
@@ -97,7 +98,8 @@ void main() {
9798
throw Exception('Result should be failure.');
9899
},
99100
failure: (error) {
100-
expect(error.isNotEmpty, true);
101+
expect(error.statusCode, isNot(200));
102+
expect(error.statusMessage.isNotEmpty, true);
101103
},
102104
);
103105
});

packages/apklis_http_web_api/lib/apklis_http_web_api.dart

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import 'dart:convert';
44

55
import 'package:apklis_web_api/apklis_api_result.dart';
66
import 'package:apklis_web_api/apklis_web_api.dart';
7+
import 'package:apklis_web_api/models/apklis_error_model.dart';
78
import 'package:apklis_web_api/models/models.dart';
89
import 'package:http/http.dart';
910

@@ -28,10 +29,16 @@ class ApklisHttpWebApi extends ApklisWebApi {
2829
final model = ApklisModel.fromJson(json);
2930
return ApklisApiResult.success(model);
3031
} else {
31-
return ApklisApiResult.failure(response.reasonPhrase!);
32+
return ApklisApiResult.failure(ApklisErrorModel(
33+
statusCode: response.statusCode,
34+
statusMessage: response.reasonPhrase!,
35+
));
3236
}
3337
} catch (e) {
34-
return ApklisApiResult.failure(e.toString());
38+
return ApklisApiResult.failure(ApklisErrorModel(
39+
statusCode: -1,
40+
statusMessage: e.toString(),
41+
));
3542
}
3643
}
3744
}

packages/apklis_http_web_api/test/apklis_http_web_api_test.dart

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,8 @@ void main() {
4545
throw Exception('Result should be failure.');
4646
},
4747
failure: (error) {
48-
expect(error.isNotEmpty, true);
48+
expect(error.statusCode, isNot(200));
49+
expect(error.statusMessage.isNotEmpty, true);
4950
},
5051
);
5152
});
@@ -64,7 +65,8 @@ void main() {
6465
throw Exception('Result should be failure.');
6566
},
6667
failure: (error) {
67-
expect(error.isNotEmpty, true);
68+
expect(error.statusCode, isNot(200));
69+
expect(error.statusMessage.isNotEmpty, true);
6870
},
6971
);
7072
});

packages/apklis_web_api/lib/apklis_api_result.dart

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import 'package:apklis_web_api/models/apklis_error_model.dart';
12
import 'package:apklis_web_api/models/models.dart';
23
import 'package:freezed_annotation/freezed_annotation.dart';
34

@@ -7,5 +8,6 @@ part 'apklis_api_result.freezed.dart';
78
class ApklisApiResult with _$ApklisApiResult {
89
const factory ApklisApiResult.success(ApklisModel result) =
910
_SuccessApklisApiResult;
10-
const factory ApklisApiResult.failure(String error) = _FailureApklisApiResult;
11+
const factory ApklisApiResult.failure(ApklisErrorModel error) =
12+
_FailureApklisApiResult;
1113
}

packages/apklis_web_api/lib/apklis_api_result.freezed.dart

Lines changed: 12 additions & 12 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import 'package:json_annotation/json_annotation.dart';
2+
3+
part 'apklis_error_model.g.dart';
4+
5+
@JsonSerializable(explicitToJson: true)
6+
class ApklisErrorModel {
7+
const ApklisErrorModel({
8+
required this.statusCode,
9+
required this.statusMessage,
10+
});
11+
12+
@JsonKey(name: 'status_code')
13+
final int statusCode;
14+
@JsonKey(name: 'status_message')
15+
final String statusMessage;
16+
17+
static ApklisErrorModel fromJson(Map<String, dynamic> json) =>
18+
_$ApklisErrorModelFromJson(json);
19+
20+
Map<String, dynamic> toJson() => _$ApklisErrorModelToJson(this);
21+
}

packages/apklis_web_api/lib/models/apklis_error_model.g.dart

Lines changed: 20 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)