fix: made better and error managment on api client
This commit is contained in:
parent
0d1b5ce68e
commit
6359efa0c3
2 changed files with 106 additions and 68 deletions
|
|
@ -1,7 +1,6 @@
|
||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
|
|
||||||
import 'package:flutter/rendering.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/widgets.dart';
|
|
||||||
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
|
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
|
||||||
import 'package:http/http.dart';
|
import 'package:http/http.dart';
|
||||||
import 'package:logger/logger.dart';
|
import 'package:logger/logger.dart';
|
||||||
|
|
@ -312,14 +311,18 @@ class ApiClient {
|
||||||
try {
|
try {
|
||||||
final headers = await _getHeaders();
|
final headers = await _getHeaders();
|
||||||
final response = await client.get(Uri.parse(url), headers: headers);
|
final response = await client.get(Uri.parse(url), headers: headers);
|
||||||
if (response.statusCode == 200) {
|
|
||||||
|
switch (response.statusCode) {
|
||||||
|
case 200:
|
||||||
final json = jsonDecode(response.body) as List<dynamic>;
|
final json = jsonDecode(response.body) as List<dynamic>;
|
||||||
return Result.ok(json.map((element) => Bal.fromJSON(element)).toList());
|
return Result.ok(
|
||||||
} else {
|
json.map((element) => Bal.fromJSON(element)).toList(),
|
||||||
throw Exception("Something wrong happened");
|
);
|
||||||
|
default:
|
||||||
|
throw "Unknown error with code ${response.statusCode.toString()}";
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
debugPrint("ERROR: ${e.toString()}");
|
log.e(e.toString());
|
||||||
return Result.error(Exception(e));
|
return Result.error(Exception(e));
|
||||||
} finally {
|
} finally {
|
||||||
client.close();
|
client.close();
|
||||||
|
|
@ -361,13 +364,17 @@ class ApiClient {
|
||||||
try {
|
try {
|
||||||
final headers = await _getHeaders();
|
final headers = await _getHeaders();
|
||||||
final response = await client.get(Uri.parse(url), headers: headers);
|
final response = await client.get(Uri.parse(url), headers: headers);
|
||||||
if (response.statusCode == 200) {
|
switch (response.statusCode) {
|
||||||
|
case 200:
|
||||||
final json = jsonDecode(response.body);
|
final json = jsonDecode(response.body);
|
||||||
return Result.ok(Book.fromJSON(json));
|
return Result.ok(Book.fromJSON(json));
|
||||||
} else {
|
case 404:
|
||||||
throw Exception("The book was not found");
|
throw "No book with this id exists in database";
|
||||||
|
default:
|
||||||
|
throw "Unknown error with code ${response.statusCode.toString()}";
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
log.e(e.toString());
|
||||||
return Result.error(Exception("API $e"));
|
return Result.error(Exception("API $e"));
|
||||||
} finally {
|
} finally {
|
||||||
client.close();
|
client.close();
|
||||||
|
|
@ -381,13 +388,17 @@ class ApiClient {
|
||||||
try {
|
try {
|
||||||
final headers = await _getHeaders();
|
final headers = await _getHeaders();
|
||||||
final response = await client.get(Uri.parse(url), headers: headers);
|
final response = await client.get(Uri.parse(url), headers: headers);
|
||||||
if (response.statusCode == 200) {
|
switch (response.statusCode) {
|
||||||
|
case 200:
|
||||||
final json = jsonDecode(response.body);
|
final json = jsonDecode(response.body);
|
||||||
return Result.ok(Book.fromJSON(json));
|
return Result.ok(Book.fromJSON(json));
|
||||||
} else {
|
case 404:
|
||||||
throw Exception("The book was not found");
|
throw "No book with this EAN found in the database of BNF";
|
||||||
|
default:
|
||||||
|
throw "Unknown error with code ${response.statusCode.toString()}";
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
log.e(e.toString());
|
||||||
return Result.error(Exception("API $e"));
|
return Result.error(Exception("API $e"));
|
||||||
} finally {
|
} finally {
|
||||||
client.close();
|
client.close();
|
||||||
|
|
@ -416,13 +427,19 @@ class ApiClient {
|
||||||
headers: headers,
|
headers: headers,
|
||||||
body: body,
|
body: body,
|
||||||
);
|
);
|
||||||
if (response.statusCode == 200) {
|
switch (response.statusCode) {
|
||||||
|
case 200:
|
||||||
final json = jsonDecode(response.body) as List<dynamic>;
|
final json = jsonDecode(response.body) as List<dynamic>;
|
||||||
return Result.ok(json.map((el) => SearchResult.fromJSON(el)).toList());
|
return Result.ok(
|
||||||
} else {
|
json.map((el) => SearchResult.fromJSON(el)).toList(),
|
||||||
throw "Unknown Error";
|
);
|
||||||
|
case 403:
|
||||||
|
throw "You do not own the BAL";
|
||||||
|
default:
|
||||||
|
throw "Unknown error with code ${response.statusCode.toString()}";
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
log.e(e.toString());
|
||||||
return Result.error(Exception("API $e"));
|
return Result.error(Exception("API $e"));
|
||||||
} finally {
|
} finally {
|
||||||
client.close();
|
client.close();
|
||||||
|
|
@ -440,13 +457,19 @@ class ApiClient {
|
||||||
try {
|
try {
|
||||||
final headers = await _getHeaders();
|
final headers = await _getHeaders();
|
||||||
final response = await client.get(Uri.parse(url), headers: headers);
|
final response = await client.get(Uri.parse(url), headers: headers);
|
||||||
if (response.statusCode == 200) {
|
switch (response.statusCode) {
|
||||||
|
case 200:
|
||||||
final json = jsonDecode(response.body) as List<dynamic>;
|
final json = jsonDecode(response.body) as List<dynamic>;
|
||||||
return Result.ok(json.map((el) => BookInstance.fromJSON(el)).toList());
|
return Result.ok(
|
||||||
} else {
|
json.map((el) => BookInstance.fromJSON(el)).toList(),
|
||||||
throw "Unknown Error";
|
);
|
||||||
|
case 403:
|
||||||
|
throw "You do not own the BAL";
|
||||||
|
default:
|
||||||
|
throw "Unknown error with code ${response.statusCode.toString()}";
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
log.e(e.toString());
|
||||||
return Result.error(Exception("API $e"));
|
return Result.error(Exception("API $e"));
|
||||||
} finally {
|
} finally {
|
||||||
client.close();
|
client.close();
|
||||||
|
|
@ -465,12 +488,20 @@ class ApiClient {
|
||||||
headers: headers,
|
headers: headers,
|
||||||
body: body,
|
body: body,
|
||||||
);
|
);
|
||||||
if (response.statusCode == 200) {
|
switch (response.statusCode) {
|
||||||
|
case 200:
|
||||||
return Result.ok(response.statusCode);
|
return Result.ok(response.statusCode);
|
||||||
} else {
|
case 403:
|
||||||
throw "Unknown error";
|
throw "You don't own one of the specified books";
|
||||||
|
case 404:
|
||||||
|
throw "One of the books was not found";
|
||||||
|
case 409:
|
||||||
|
throw "One of the books wasn't available";
|
||||||
|
default:
|
||||||
|
throw "Unknown error with code ${response.statusCode.toString()}";
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
log.e(e.toString());
|
||||||
return Result.error(Exception(e));
|
return Result.error(Exception(e));
|
||||||
} finally {
|
} finally {
|
||||||
client.close();
|
client.close();
|
||||||
|
|
@ -499,13 +530,14 @@ class ApiClient {
|
||||||
headers: headers,
|
headers: headers,
|
||||||
body: body,
|
body: body,
|
||||||
);
|
);
|
||||||
if (response.statusCode == 201) {
|
switch (response.statusCode) {
|
||||||
|
case 201:
|
||||||
final json = jsonDecode(response.body);
|
final json = jsonDecode(response.body);
|
||||||
return Result.ok(BookInstance.fromJSON(json));
|
return Result.ok(BookInstance.fromJSON(json));
|
||||||
} else if (response.statusCode == 403) {
|
case 403:
|
||||||
throw Exception("You don't own that book instance");
|
throw "You don't own that book instance";
|
||||||
} else {
|
default:
|
||||||
throw Exception("Something wrong happened");
|
throw "Unknown error with code ${response.statusCode.toString()}";
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
return Result.error(Exception(e));
|
return Result.error(Exception(e));
|
||||||
|
|
@ -527,13 +559,19 @@ class ApiClient {
|
||||||
try {
|
try {
|
||||||
final headers = await _getHeaders();
|
final headers = await _getHeaders();
|
||||||
final response = await client.get(Uri.parse(url), headers: headers);
|
final response = await client.get(Uri.parse(url), headers: headers);
|
||||||
if (response.statusCode == 200) {
|
switch (response.statusCode) {
|
||||||
|
case 200:
|
||||||
final json = jsonDecode(response.body);
|
final json = jsonDecode(response.body);
|
||||||
return Result.ok(Owner.fromJSON(json));
|
return Result.ok(Owner.fromJSON(json));
|
||||||
} else {
|
case 403:
|
||||||
throw Exception("The owner was not found");
|
throw "You do not own specified owner";
|
||||||
|
case 404:
|
||||||
|
throw "No owner with this id exists";
|
||||||
|
default:
|
||||||
|
throw "Unknown error with code ${response.statusCode.toString()}";
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
log.e(e.toString());
|
||||||
return Result.error(Exception("API $e"));
|
return Result.error(Exception("API $e"));
|
||||||
} finally {
|
} finally {
|
||||||
client.close();
|
client.close();
|
||||||
|
|
@ -547,13 +585,15 @@ class ApiClient {
|
||||||
try {
|
try {
|
||||||
final headers = await _getHeaders();
|
final headers = await _getHeaders();
|
||||||
final response = await client.get(Uri.parse(url), headers: headers);
|
final response = await client.get(Uri.parse(url), headers: headers);
|
||||||
if (response.statusCode == 200) {
|
switch (response.statusCode) {
|
||||||
|
case 200:
|
||||||
final json = jsonDecode(response.body);
|
final json = jsonDecode(response.body);
|
||||||
return Result.ok(Owner.fromJSON(json));
|
return Result.ok(Owner.fromJSON(json));
|
||||||
} else {
|
default:
|
||||||
throw "Unknown error";
|
throw "Unknown error with code ${response.statusCode.toString()}";
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
log.e(e.toString());
|
||||||
return Result.error(Exception(e));
|
return Result.error(Exception(e));
|
||||||
} finally {
|
} finally {
|
||||||
client.close();
|
client.close();
|
||||||
|
|
@ -568,13 +608,14 @@ class ApiClient {
|
||||||
try {
|
try {
|
||||||
final headers = await _getHeaders();
|
final headers = await _getHeaders();
|
||||||
final response = await client.get(Uri.parse(url), headers: headers);
|
final response = await client.get(Uri.parse(url), headers: headers);
|
||||||
if (response.statusCode == 200) {
|
switch (response.statusCode) {
|
||||||
|
case 200:
|
||||||
final json = jsonDecode(response.body) as List<dynamic>;
|
final json = jsonDecode(response.body) as List<dynamic>;
|
||||||
return Result.ok(
|
return Result.ok(
|
||||||
json.map((element) => Owner.fromJSON(element)).toList(),
|
json.map((element) => Owner.fromJSON(element)).toList(),
|
||||||
);
|
);
|
||||||
} else {
|
default:
|
||||||
throw Exception("Invalid request");
|
throw "Unknown error with code ${response.statusCode.toString()}";
|
||||||
}
|
}
|
||||||
} on Exception catch (error) {
|
} on Exception catch (error) {
|
||||||
return Result.error(error);
|
return Result.error(error);
|
||||||
|
|
@ -604,14 +645,16 @@ class ApiClient {
|
||||||
headers: headers,
|
headers: headers,
|
||||||
body: jsonEncode(body),
|
body: jsonEncode(body),
|
||||||
);
|
);
|
||||||
if (response.statusCode == 201) {
|
switch (response.statusCode) {
|
||||||
|
case 201:
|
||||||
final json = jsonDecode(response.body);
|
final json = jsonDecode(response.body);
|
||||||
return Result.ok(Owner.fromJSON(json));
|
return Result.ok(Owner.fromJSON(json));
|
||||||
} else {
|
default:
|
||||||
throw Exception("Invalid request");
|
throw "Unknown error with code ${response.statusCode.toString()}";
|
||||||
}
|
}
|
||||||
} on Exception catch (error) {
|
} catch (e) {
|
||||||
return Result.error(error);
|
log.e(e.toString());
|
||||||
|
return Result.error(Exception(e));
|
||||||
} finally {
|
} finally {
|
||||||
client.close();
|
client.close();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -72,11 +72,6 @@ GoRouter router(AuthRepository authRepository) => GoRouter(
|
||||||
);
|
);
|
||||||
return NoTransitionPage(child: AddPage(viewModel: viewModel));
|
return NoTransitionPage(child: AddPage(viewModel: viewModel));
|
||||||
},
|
},
|
||||||
// routes: [
|
|
||||||
// GoRoute(path: Routes.addForm),
|
|
||||||
// GoRoute(path: Routes.addOwner),
|
|
||||||
// GoRoute(path: Routes.addPrice),
|
|
||||||
// ],
|
|
||||||
),
|
),
|
||||||
GoRoute(
|
GoRoute(
|
||||||
path: Routes.sell,
|
path: Routes.sell,
|
||||||
|
|
|
||||||
Reference in a new issue