Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions Sources/MailjetKit.swift
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
10 changes: 5 additions & 5 deletions Sources/send/Request/Message/DeliveryOptions.swift
Original file line number Diff line number Diff line change
Expand Up @@ -17,23 +17,23 @@ 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
)

return withUpdatedDelivery(updatedDelivery)
}

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
)

Expand All @@ -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)
Expand Down
28 changes: 11 additions & 17 deletions Sources/send/Request/Message/Message.swift
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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 {
Expand All @@ -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)
)
}
}
4 changes: 2 additions & 2 deletions Sources/send/Request/Message/TemplateOptions.swift
Original file line number Diff line number Diff line change
@@ -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?
Expand All @@ -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,
Expand Down