// // Copyright Amazon.com Inc. or its affiliates. // All Rights Reserved. // // SPDX-License-Identifier: Apache-2.0 // import Amplify public extension AWSAPIPlugin { func query(request: GraphQLRequest, listener: GraphQLOperation.ResultListener?) -> GraphQLOperation { let operation = AWSGraphQLOperation(request: request.toOperationRequest(operationType: .query), session: session, mapper: mapper, pluginConfig: pluginConfig, resultListener: listener) queue.addOperation(operation) return operation } func query(request: GraphQLRequest) async throws -> GraphQLTask.Success { let operation = AWSGraphQLOperation(request: request.toOperationRequest(operationType: .query), session: session, mapper: mapper, pluginConfig: pluginConfig, resultListener: nil) let task = AmplifyOperationTaskAdapter(operation: operation) queue.addOperation(operation) return try await task.value } func mutate(request: GraphQLRequest, listener: GraphQLOperation.ResultListener?) -> GraphQLOperation { let operation = AWSGraphQLOperation(request: request.toOperationRequest(operationType: .mutation), session: session, mapper: mapper, pluginConfig: pluginConfig, resultListener: listener) queue.addOperation(operation) return operation } func mutate(request: GraphQLRequest) async throws -> GraphQLTask.Success { let operation = AWSGraphQLOperation(request: request.toOperationRequest(operationType: .mutation), session: session, mapper: mapper, pluginConfig: pluginConfig, resultListener: nil) let task = AmplifyOperationTaskAdapter(operation: operation) queue.addOperation(operation) return try await task.value } func subscribe( request: GraphQLRequest, valueListener: GraphQLSubscriptionOperation.InProcessListener?, completionListener: GraphQLSubscriptionOperation.ResultListener? ) -> GraphQLSubscriptionOperation { let operation = AWSGraphQLSubscriptionOperation( request: request.toOperationRequest(operationType: .subscription), pluginConfig: pluginConfig, subscriptionConnectionFactory: subscriptionConnectionFactory, authService: authService, apiAuthProviderFactory: authProviderFactory, inProcessListener: valueListener, resultListener: completionListener) queue.addOperation(operation) return operation } func subscribe(request: GraphQLRequest) -> AmplifyAsyncThrowingSequence> { let request = request.toOperationRequest(operationType: .subscription) let runner = AWSGraphQLSubscriptionTaskRunner(request: request, pluginConfig: pluginConfig, subscriptionConnectionFactory: subscriptionConnectionFactory, authService: authService, apiAuthProviderFactory: authProviderFactory) return runner.sequence } }