Emcee
35 строк · 1.2 Кб
1import BucketQueue
2import Foundation
3import QueueModels
4import RESTInterfaces
5import RESTMethods
6import RESTServer
7
8public final class BucketResultRegistrar: PayloadSignatureVerifyingRESTEndpoint {
9public typealias PayloadType = BucketResultPayload
10public typealias ResponseType = BucketResultAcceptResponse
11
12private let bucketResultAcceptor: BucketResultAcceptor
13public let expectedPayloadSignature: PayloadSignature
14public let path: RESTPath = RESTMethod.bucketResult
15public let requestIndicatesActivity = true
16
17public init(
18bucketResultAcceptor: BucketResultAcceptor,
19expectedPayloadSignature: PayloadSignature
20) {
21self.bucketResultAcceptor = bucketResultAcceptor
22self.expectedPayloadSignature = expectedPayloadSignature
23}
24
25public func handle(verifiedPayload: BucketResultPayload) throws -> BucketResultAcceptResponse {
26let acceptResult = try bucketResultAcceptor.accept(
27bucketId: verifiedPayload.bucketId,
28bucketResult: verifiedPayload.bucketResult,
29workerId: verifiedPayload.workerId
30)
31return .bucketResultAccepted(
32bucketId: acceptResult.dequeuedBucket.enqueuedBucket.bucket.bucketId
33)
34}
35}
36