/
Sendgrid.swift
48 lines (44 loc) · 1.47 KB
/
Sendgrid.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
//
// Sendgrid.swift
// swifttalk-server
//
// Created by Florian Kugler on 06-12-2018.
//
import Foundation
import TinyNetworking
let sendgrid = Sendgrid()
struct Sendgrid {
let base = URL(string: "https://api.sendgrid.com/v3")!
let apiKey = env.sendgridApiKey
var headers: [String:String] {
return [
"Authorization": "Bearer \(apiKey)"
]
}
func send(to email: String, name: String, subject: String, text: String) -> Endpoint<()> {
struct Payload: Codable {
struct Person: Codable {
var email: String
var name: String
}
struct Personalization: Codable {
var to: [Person]
var subject: String
}
struct Content: Codable {
var type: String
var value: String
}
var personalizations: [Personalization]
var from: Person
var content: [Content]
}
let url = base.appendingPathComponent("mail/send")
let objcio = Payload.Person(email: emailFrom, name: emailName)
let body = Payload(personalizations: [Payload.Personalization(to: [Payload.Person(email: email, name: name)], subject: subject)], from: objcio, content: [Payload.Content(type: "text/plain", value: text)])
if apiKey == "test" {
// dump(body)
}
return Endpoint(json: .post, url: url, body: body, headers: headers)
}
}