foldApi<T extends Object> method
Future<T>
foldApi<T extends Object>({
- required Future<
T> onTendermint(- IProvider<
IServiceProvider< providerBaseServiceRequestParams, BaseGRPCServiceRequestParams> , IServiceRequestParams>
- IProvider<
- required Future<
T> onRest(- IProvider<
IServiceProvider< providerBaseServiceRequestParams, BaseGRPCServiceRequestParams> , IServiceRequestParams>
- IProvider<
- required Future<
T> onGrpc(- IGrpcProvider<
IServiceProvider< providerBaseServiceRequestParams, BaseGRPCServiceRequestParams> , IServiceRequestParams, BaseGRPCServiceRequestParams>
- IGrpcProvider<
- CosmosProviderApi? api,
Implementation
Future<T> foldApi<T extends Object>({
required Future<T> Function(IProvider provider) onTendermint,
required Future<T> Function(IProvider provider) onRest,
required Future<T> Function(IGrpcProvider provider) onGrpc,
CosmosProviderApi? api,
}) async {
if (api == null) {
if (supportedApis.contains(CosmosProviderApi.tendermint)) {
api = CosmosProviderApi.tendermint;
} else if (supportedApis.contains(CosmosProviderApi.rest)) {
api = CosmosProviderApi.rest;
} else if (supportedApis.contains(CosmosProviderApi.grpc)) {
api = CosmosProviderApi.grpc;
}
}
return await switch (api) {
CosmosProviderApi.tendermint => await onTendermint(provider),
CosmosProviderApi.rest => await onRest(provider),
CosmosProviderApi.grpc => () async {
final provider = this.provider;
if (provider is! IGrpcProvider) {
throw const DartCosmosSdkPluginException(
"Unexpected gRPC provider type.",
);
}
return await onGrpc(provider);
}(),
_ =>
throw DartCosmosSdkPluginException(
"Unsupported api.",
details: {
"api": api?.name,
"supportedApis": CosmosProviderApi.cosmosApis
.map((e) => e.name)
.join(", "),
},
),
};
}