readResource method

  1. @mustCallSuper
FutureOr<ReadResourceResult> readResource(
  1. ReadResourceRequest request
)

Reads the resource at request.uri.

Throws an ArgumentError if it does not exist (this gets translated into a generic JSON RPC2 error response).

Implementation

@mustCallSuper
FutureOr<ReadResourceResult> readResource(ReadResourceRequest request) async {
  final impl = _resourceImpls[request.uri];
  if (impl == null) {
    // Check if it matches any resource template.
    for (var descriptor in _resourceTemplates) {
      final response = await descriptor.handler(request);
      if (response != null) return response;
    }
  }

  final response = await impl?.call(request);
  if (response == null) {
    throw ArgumentError.value(request.uri, 'uri', 'Resource not found');
  }
  return response;
}