callServerEndpoint<T> method

  1. @override
Future<T> callServerEndpoint<T>(
  1. String endpoint,
  2. String method,
  3. Map<String, dynamic> args
)
override

Calls a server endpoint method by its name, passing arguments in a map. Typically, this method is called by generated code.

Implementation

@override
Future<T> callServerEndpoint<T>(
  String endpoint,
  String method,
  Map<String, dynamic> args,
) async {
  var callContext = MethodCallContext(
    endpointName: endpoint,
    methodName: method,
    arguments: args,
  );

  try {
    var authenticationValue =
        await authenticationKeyManager?.getHeaderValue();
    var body = formatArgs(args, method);
    var url = Uri.parse('$host$endpoint');

    var data = await _requestDelegate.serverRequest(
      url,
      body: body,
      authenticationValue: authenticationValue,
    );

    T result;
    if (T == getType<void>()) {
      result = returnVoid() as T;
    } else {
      result = parseData<T>(data, T, serializationManager);
    }

    onSucceededCall?.call(callContext);
    return result;
  } catch (e, s) {
    onFailedCall?.call(callContext, e, s);

    rethrow;
  }
}