import 'package:checker/db.dart';
import 'package:flutter/services.dart';
import 'package:intl/intl.dart';

import 'common.dart';

// Клиент http приложения
final httpClient = createHttpClient();

// Попытка создать токен для кассы.
// В случае если токен для кассы уже существует, вернется ошибка 409.
// На сервере есть ограничение в 40 токенов.
getCreateTokenRequest(Map httpBody) async {
  return httpClient.post(
      await getEndpoint() + 'tokens/?_dmapptoken=' + await getToken(),
      body: httpBody,
      headers: {'Accept-Language': Intl.defaultLocale});
}

// Проверка статуса токена. В ответе  приходит параметр active, который может быть либо true, либо false,.
getCheckTokenStatusRequest(String token) async {
  return httpClient.get(
      await getEndpoint() +
          'tokens/' +
          token +
          '?_dmapptoken=' +
          await getToken(),
      headers: {'Accept-Language': Intl.defaultLocale});
}

// Удаление токена на сервере.
getDeleteTokenRequest(String token) async {
  return httpClient.delete(
      await getEndpoint() + 'tokens/' + token + '?_dmapptoken=' +
          await getToken(), headers: {'Accept-Language': Intl.defaultLocale});
}

getLoyaltyRequest(String endpoint, SqliteHelper helper) async {
  String token = await helper.getToken();

  var headers = {
    'DM-Authorization': 'dmapptoken ${await getToken()}',
    'Authorization': 'dmtoken ${token}',
    'Accept-Language': Intl.defaultLocale
  };

  return httpClient.get(endpoint, headers: headers);
}

getPurchaseRequest(String endpoint, Map body, String token) async {

  var headers = {
    'DM-Authorization': 'dmapptoken ${await getToken()}',
    'Authorization': 'dmtoken ${token}',
    'Accept-Language': Intl.defaultLocale
  };

  return httpClient.post(endpoint, body: body, headers: headers);
}

getEndpoint() async {
  return await platform.invokeMethod('getEndpoint');
}

getToken() async {
  return await platform.invokeMethod('getAppToken');
}
