getVariant method

Future<void> getVariant(
  1. String variantId,
  2. GetVariant getVariant
)

Implementation

Future<void> getVariant(String variantId, GetVariant getVariant) async {
  getVariant.onLoading();

  final url = Uri.parse(
      'https://api.plentrasphere.com/v2/client/?class=default&action=getVariant&appKey=$appKey&variantId=$variantId');

  try {
    final response = await http.get(url);

    if (response.statusCode == 200) {
      final jsonData = json.decode(response.body);

      final code = jsonData['response']['code'];
      final status = jsonData['response']['status'];

      if (code == 401) {
        getVariant.onError(status);
        getVariant.onLoadfinished();
        return;
      } else if (code == 404) {
        getVariant.onNotFound();
        getVariant.onLoadfinished();
        return;
      } else if (code == 400) {
        if (status == "app-expired") {
          getVariant.onAppNotActive(jsonData['info']['appName']);
          getVariant.onLoadfinished();
          return;
        }

        getVariant.onError(status);
        getVariant.onLoadfinished();
        return;
      } else if (code == 406) {
        getVariant.onError(status);
        return;
      }

      if (status == "under-construction") {
        getVariant.onUnderConstruction();
        getVariant.onLoadfinished();
        return;
      }

      getVariant.onResult(
        jsonData['variantTag'],
        jsonData['variantId'],
        jsonData['variantExtras'],
        jsonData['variantImage'],
        jsonData['variantImages'],
      );

      getVariant.onLoadfinished();
    } else {
      getVariant.onError('HTTP ${response.statusCode}');
      getVariant.onLoadfinished();
    }
  } catch (e) {
    getVariant.onError(e.toString());
    getVariant.onLoadfinished();
  }
}