Emcee

Форк
0
/
PayloadSignatureVerifyingRESTEndpoint.swift 
30 строк · 1.1 Кб
1
import Foundation
2
import QueueModels
3
import RESTMethods
4
import RESTInterfaces
5

6
public protocol PayloadSignatureVerifyingRESTEndpoint: RESTEndpoint where PayloadType: SignedPayload {
7
    var expectedPayloadSignature: PayloadSignature { get }
8
    func handle(verifiedPayload: PayloadType) throws -> ResponseType
9
}
10

11
public struct PayloadSignatureMismatch: Error, CustomStringConvertible {
12
    public let expectedPayloadSignature: PayloadSignature
13
    public let actualPayloadSignature: PayloadSignature
14

15
    public var description: String {
16
        return "Payload has unexpected signature, expected: \(expectedPayloadSignature), actual: \(actualPayloadSignature)"
17
    }
18
}
19

20
public extension PayloadSignatureVerifyingRESTEndpoint {
21
    func handle(payload: PayloadType) throws -> ResponseType {
22
        guard expectedPayloadSignature == payload.payloadSignature else {
23
            throw PayloadSignatureMismatch(
24
                expectedPayloadSignature: expectedPayloadSignature,
25
                actualPayloadSignature: payload.payloadSignature
26
            )
27
        }
28
        return try handle(verifiedPayload: payload)
29
    }
30
}
31

32

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.