closeInstance method

Future<Response<Instance>> closeInstance({
  1. required String worldId,
  2. required String instanceId,
  3. bool? hardClose,
  4. DateTime? closedAt,
  5. CancelToken? cancelToken,
  6. Map<String, dynamic>? headers,
  7. Map<String, dynamic>? extra,
  8. ValidateStatus? validateStatus,
  9. ProgressCallback? onSendProgress,
  10. ProgressCallback? onReceiveProgress,
})

Close Instance Close an instance or update the closedAt time when it will be closed. You can only close an instance if the ownerId is yourself or if the instance owner is a group and you have the `group-instance-moderate` permission.

Parameters:

  • worldId - Must be a valid world ID.
  • instanceId - Must be a valid instance ID.
  • hardClose - Whether to hard close the instance. Defaults to false.
  • closedAt - The time after which users won't be allowed to join the instances. If omitted, the instance will be closed immediately.
  • cancelToken - A CancelToken that can be used to cancel the operation
  • headers - Can be used to add additional headers to the request
  • extras - Can be used to add flags to the request
  • validateStatus - A ValidateStatus callback that can be used to determine request success based on the HTTP status of the response
  • onSendProgress - A ProgressCallback that can be used to get the send progress
  • onReceiveProgress - A ProgressCallback that can be used to get the receive progress

Returns a Future containing a Response with a Instance as data Throws DioException if API call or serialization fails

Implementation

Future<Response<Instance>> closeInstance({
  required String worldId,
  required String instanceId,
  bool? hardClose,
  DateTime? closedAt,
  CancelToken? cancelToken,
  Map<String, dynamic>? headers,
  Map<String, dynamic>? extra,
  ValidateStatus? validateStatus,
  ProgressCallback? onSendProgress,
  ProgressCallback? onReceiveProgress,
}) async {
  final _path = r'/instances/{worldId}:{instanceId}'
      .replaceAll('{' r'worldId' '}', worldId.toString())
      .replaceAll('{' r'instanceId' '}', instanceId.toString());
  final _options = Options(
    method: r'DELETE',
    headers: <String, dynamic>{
      ...?headers,
    },
    extra: <String, dynamic>{
      'secure': <Map<String, String>>[
        {
          'type': 'apiKey',
          'name': 'authCookie',
          'keyName': 'auth',
          'where': '',
        },
      ],
      ...?extra,
    },
    validateStatus: validateStatus,
  );

  final _queryParameters = <String, dynamic>{
    if (hardClose != null) r'hardClose': hardClose,
    if (closedAt != null) r'closedAt': closedAt,
  };

  final _response = await _dio.request<Object>(
    _path,
    options: _options,
    queryParameters: _queryParameters,
    cancelToken: cancelToken,
    onSendProgress: onSendProgress,
    onReceiveProgress: onReceiveProgress,
  );

  Instance? _responseData;

  try {
    final rawData = _response.data;
    _responseData = rawData == null
        ? null
        : deserialize<Instance, Instance>(rawData, 'Instance',
            growable: true);
  } catch (error, stackTrace) {
    throw DioException(
      requestOptions: _response.requestOptions,
      response: _response,
      type: DioExceptionType.unknown,
      error: error,
      stackTrace: stackTrace,
    );
  }

  return Response<Instance>(
    data: _responseData,
    headers: _response.headers,
    isRedirect: _response.isRedirect,
    requestOptions: _response.requestOptions,
    redirects: _response.redirects,
    statusCode: _response.statusCode,
    statusMessage: _response.statusMessage,
    extra: _response.extra,
  );
}