queryStatements method

  1. @override
Future<LRSResponse<StatementsResult>> queryStatements(
  1. StatementsQuery query
)
override

Fetch a set of statements

Implementation

@override
Future<LRSResponse<StatementsResult>> queryStatements(
    StatementsQuery query) async {
  final response = await _makeRequest('statements', 'GET',
      queryParams: query.toParameterMap(_version));

  dynamic responseBody;
  if (response.runtimeType.toString() == 'StreamedResponse') {
    http.StreamedResponse streamedResponse = response;
    final data = await streamedResponse.stream.bytesToString();
    responseBody = data;
  } else {
    responseBody = response?.body;
  }
  //print('Response : $responseBody');

  if (response?.statusCode == 200) {
    if (response.headers[contentTypeHeader]?.startsWith('multipart/mixed;') ==
        true) {
      // Parse mixed data
      final contentType = response.headers[contentTypeHeader];
      //print(contentType);
      //print(response.body);
      final boundary = contentType.split('boundary=')[1];
      //print('boundary - $boundary');
      final statement =
          Statement.fromMixedMultipart(boundary, response.bodyBytes);
      return LRSResponse<StatementsResult>(
        success: true,
        data: StatementsResult(
          statements: statement,
        ),
      );
    } else {
      final decoded = json.decode(responseBody);
      return LRSResponse<StatementsResult>(
        success: true,
        data: StatementsResult.fromJson(decoded),
      );
    }
  } else {
    return LRSResponse<StatementsResult>(
        success: false, errMsg: response?.body);
  }
}