From aa02b5ea9b987943e2b22701c0ffd387f321b87c Mon Sep 17 00:00:00 2001 From: Adam Borbas Date: Wed, 8 Oct 2025 07:16:36 +0200 Subject: [PATCH 1/2] Explicitly set auth header --- Sources/MailjetKit.swift | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Sources/MailjetKit.swift b/Sources/MailjetKit.swift index 2d470cc..7356faf 100644 --- a/Sources/MailjetKit.swift +++ b/Sources/MailjetKit.swift @@ -36,14 +36,16 @@ public class MailjetKit { } public func send(request: MailjetKitRequest) async -> Result<[ResponseMessage], MailjetKitError> { + let headers: HTTPHeaders = [.authorization(username: apiKey, password: apiSecret)] + let response = await session .request( Self.requestURL, method: .post, parameters: request, - encoder: JSONParameterEncoder.default + encoder: JSONParameterEncoder.default, + headers: headers ) - .authenticate(username: apiKey, password: apiSecret) .serializingMailjetMessages() .response From fa1591871f4c87de2da855b0b06aeb1576be6022 Mon Sep 17 00:00:00 2001 From: Adam Borbas Date: Wed, 8 Oct 2025 07:17:07 +0200 Subject: [PATCH 2/2] Make TemplateOptions, Tacking and DeliveryOptions optional --- .../Request/Message/DeliveryOptions.swift | 10 +++---- Sources/send/Request/Message/Message.swift | 28 ++++++++----------- .../Request/Message/TemplateOptions.swift | 4 +-- 3 files changed, 18 insertions(+), 24 deletions(-) diff --git a/Sources/send/Request/Message/DeliveryOptions.swift b/Sources/send/Request/Message/DeliveryOptions.swift index a330368..6ba502f 100644 --- a/Sources/send/Request/Message/DeliveryOptions.swift +++ b/Sources/send/Request/Message/DeliveryOptions.swift @@ -17,11 +17,11 @@ public struct DeliveryOptions: Sendable, Equatable, Codable { extension Message { public func addHeader(_ name: String, _ value: String) -> Self { - var merged = delivery.headers ?? [:] + var merged = delivery?.headers ?? [:] merged[name] = value let updatedDelivery = DeliveryOptions( - priority: delivery.priority, + priority: delivery?.priority, headers: merged ) @@ -29,11 +29,11 @@ extension Message { } public func addHeaders(_ newHeaders: [String: String]) -> Self { - var merged = delivery.headers ?? [:] + var merged = delivery?.headers ?? [:] for (k, v) in newHeaders { merged[k] = v } let updatedDelivery = DeliveryOptions( - priority: delivery.priority, + priority: delivery?.priority, headers: merged ) @@ -43,7 +43,7 @@ extension Message { public func withPriority(_ priority: Int?) -> Self { let updatedDelivery = DeliveryOptions( priority: priority, - headers: delivery.headers + headers: delivery?.headers ) return withUpdatedDelivery(updatedDelivery) diff --git a/Sources/send/Request/Message/Message.swift b/Sources/send/Request/Message/Message.swift index 8b2f6e0..8e81dd6 100644 --- a/Sources/send/Request/Message/Message.swift +++ b/Sources/send/Request/Message/Message.swift @@ -3,16 +3,16 @@ import Foundation public struct Message: Sendable, Equatable, Codable { public let envelope: Envelope public let content: Content - public let template: TemplateOptions - public let tracking: Tracking - public let delivery: DeliveryOptions + public let template: TemplateOptions? + public let tracking: Tracking? + public let delivery: DeliveryOptions? public init( envelope: Envelope, content: Content, - template: TemplateOptions = TemplateOptions(), - tracking: Tracking = Tracking(), - delivery: DeliveryOptions = DeliveryOptions() + template: TemplateOptions? = nil, + tracking: Tracking? = nil, + delivery: DeliveryOptions? = nil ) { self.envelope = envelope self.content = content @@ -24,9 +24,9 @@ public struct Message: Sendable, Equatable, Codable { public func encode(to encoder: Encoder) throws { try envelope.encode(to: encoder) try content.encode(to: encoder) - try template.encode(to: encoder) - try tracking.encode(to: encoder) - try delivery.encode(to: encoder) + if let template { try template.encode(to: encoder) } + if let tracking { try tracking.encode(to: encoder) } + if let delivery { try delivery.encode(to: encoder) } } public init(from decoder: Decoder) throws { @@ -41,20 +41,14 @@ public struct Message: Sendable, Equatable, Codable { public init(from: Recipient, to: Recipient, subject: String, textPart: String) { self.init( envelope: Envelope(from: from, to: [to]), - content: Content(subject: subject, textPart: textPart), - template: TemplateOptions(), - tracking: Tracking(), - delivery: DeliveryOptions() + content: Content(subject: subject, textPart: textPart) ) } public init(from: Recipient, to: Recipient, subject: String, htmlPart: String) { self.init( envelope: Envelope(from: from, to: [to]), - content: Content(subject: subject, htmlPart: htmlPart), - template: TemplateOptions(), - tracking: Tracking(), - delivery: DeliveryOptions() + content: Content(subject: subject, htmlPart: htmlPart) ) } } diff --git a/Sources/send/Request/Message/TemplateOptions.swift b/Sources/send/Request/Message/TemplateOptions.swift index 5d82764..45c8066 100644 --- a/Sources/send/Request/Message/TemplateOptions.swift +++ b/Sources/send/Request/Message/TemplateOptions.swift @@ -1,7 +1,7 @@ import Foundation public struct TemplateOptions: Sendable, Equatable, Codable { - public let templateID: UInt64? + public let templateID: UInt64 public let templateLanguage: Bool? public let templateErrorReporting: Recipient? public let templateErrorDeliver: Bool? @@ -16,7 +16,7 @@ public struct TemplateOptions: Sendable, Equatable, Codable { } public init( - templateID: UInt64? = nil, + templateID: UInt64, templateLanguage: Bool? = nil, templateErrorReporting: Recipient? = nil, templateErrorDeliver: Bool? = nil,