parse static method
Implementation
static GraphQLSocketMessage parse(dynamic message) {
final Map<String, dynamic> map =
json.decode(message as String) as Map<String, dynamic>;
final String type = (map['type'] ?? 'unknown') as String;
final payload = map['payload'] ?? <String, dynamic>{};
final String id = (map['id'] ?? 'none') as String;
switch (type) {
// for completeness
case MessageTypes.connectionInit:
return InitOperation(payload);
case MessageTypes.connectionTerminate:
return TerminateOperation();
case MessageTypes.connectionAck:
return ConnectionAck();
case MessageTypes.connectionError:
return ConnectionError(payload);
case MessageTypes.connectionKeepAlive:
return ConnectionKeepAlive();
// for completeness
case MessageTypes.subscribe:
return SubscribeOperation(id, payload as Map<String, dynamic>);
case MessageTypes.start:
return StartOperation(id, payload as Map<String, dynamic>);
case MessageTypes.stop:
return StopOperation(id);
case MessageTypes.ping:
return PingMessage(payload as Map<String, dynamic>);
case MessageTypes.pong:
return PongMessage(payload as Map<String, dynamic>);
case MessageTypes.data:
return SubscriptionData(
id,
payload['data'],
payload['errors'],
payload['extensions'],
);
case MessageTypes.next:
return SubscriptionNext(
id,
payload['data'],
payload['errors'],
payload['extensions'],
);
case MessageTypes.error:
return SubscriptionError(id, payload);
case MessageTypes.complete:
return SubscriptionComplete(id);
default:
return UnknownData(map);
}
}