buildApiServer method

  1. @override
ApiServer buildApiServer()
override

Implementation

@override
ApiServer buildApiServer() {
  return ApiServerHttp(
    name: apiServerName,
    host : host,
    port : port,
    scheme: scheme,
    builder: _builder,
    uriBuilder: (scheme, host, port, path, method, input) {
      if(method == HttpMethod.GET
        && input != null
        && (input is Map)
      ){
        Map<String,dynamic> query = input as Map<String, dynamic>;
        return Uri(scheme: scheme, host:host, port:port, path: path, queryParameters: query);
      }else{
        return Uri(scheme: scheme, host:host, port:port, path: path);
      }
    },
    requestBuilder: (request, method, input) async {
      request.headers['Accept-Encoding'] = 'gzip';
      request.headers['Accept'] = 'application/json';
    },
    responseParser: (response, method, output) async {
      if(response.statusCode != 200){
        throw new Exception("error status = ${response.statusCode}");
      }
      if(output is Map && response is StreamedResponse){
        String str = await response.stream.transform(Utf8Decoder()).join();
        if(str.isNotEmpty){
          Map json = JsonDecoder().convert(str);
          if(json.containsKey("exception")){
            throw new Exception("server side error = ${json['exception']}");
          }
          output.addAll(json);
        }
      }
    },
  );
}