fetchLeaderBoard function

Future<List<Leader>> fetchLeaderBoard(
  1. String playerToken,
  2. String playerUid,
  3. String challengeId,
  4. int limit,
  5. Config config,
)

Implementation

Future<List<Leader>> fetchLeaderBoard(String playerToken, String playerUid,
    String challengeId, int limit, Config config) async {
  final response = await http.post(
      Uri.parse(
          '${config.server}/api/tenant/${config.operatorId}/get-leader-board/$challengeId?limit=$limit'),
      headers: <String, String>{
        'Content-Type': 'application/json; charset=UTF-8',
      },
      body: jsonEncode(<String, String>{
        "operator_id": config.operatorId,
        "client_secret": config.clientSecret,
        "client_id": config.clientId,
        "player_id": playerUid,
        "token": playerToken
      }));

  if (response.statusCode == 200) {
    // If the server did return a 200 OK response,
    // then parse the JSON.
    var rb = response.body;

    // store json data into list
    var list = json.decode(rb);
    List<Leader> leaders = [];

    leaders = list == null
        ? leaders
        : list.map<Leader>((i) => Leader.fromJson(i)).toList();
    // iterate over the list and map each object in list to Img by calling Img.fromJson
    // Auth auth = new Auth(token: rb);
    return leaders;
  } else {
    // If the server did not return a 200 OK response,
    // then throw an exception.
    throw Exception('Failed to fetch leaders for challenge');
  }
}