Skip to content

Instantly share code, notes, and snippets.

@albertusdev
Created March 20, 2019 12:42
Show Gist options
  • Save albertusdev/182710ed752bd46b91ba41e8c5388564 to your computer and use it in GitHub Desktop.
Save albertusdev/182710ed752bd46b91ba41e8c5388564 to your computer and use it in GitHub Desktop.
import 'dart:async';
import 'dart:io';
import 'package:dio/dio.dart';
import 'package:learn_fazz/models/login_spec.dart';
import 'package:learn_fazz/models/login_result.dart';
import 'package:learn_fazz/models/register_spec.dart';
import 'package:learn_fazz/providers/login_provider.dart';
import 'package:learn_fazz/providers/register_provider.dart';
import 'package:meta/meta.dart';
class AuthRepository {
AuthRepository({Dio httpClient})
: _httpClient = httpClient,
_loginProvider = LoginProvider(httpClient: httpClient),
_registerProvider = RegisterProvider(httpClient: httpClient);
final LoginProvider _loginProvider;
final RegisterProvider _registerProvider;
final Dio _httpClient;
Future<LoginResult> login(
{@required String email, @required String password}) async {
final Response<Map<String, dynamic>> httpResponse = await _loginProvider
.login(LoginSpec(email: email, password: password));
return setAuthorizationHeaderToken(httpResponse);
}
LoginResult setAuthorizationHeaderToken(
Response<Map<String, dynamic>> httpResponse) {
LoginResult loginResponse = LoginResult.fromHttpResponse(httpResponse);
if (loginResponse.statusCode == 200) {
_httpClient.options.headers['Authorization'] =
'Bearer ${loginResponse.token}';
}
return loginResponse;
}
Future<LoginResult> register({
@required String name,
@required String email,
@required String identificationNumber,
@required String password,
@required String passwordConfirmation,
@required String role,
@required File photo,
}) async {
final RegisterSpec registerRequestData = RegisterSpec(
name: name,
email: email,
identificationNumber: identificationNumber,
password: password,
passwordConfirmation: passwordConfirmation,
role: role,
photo: photo,
);
final Response<Map<String, dynamic>> httpResponse =
await _registerProvider.register(registerRequestData);
return setAuthorizationHeaderToken(httpResponse);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment