Skip to content

Commit 2416687

Browse files
committed
added ability to set http body content
1 parent 78934b3 commit 2416687

File tree

2 files changed

+30
-17
lines changed

2 files changed

+30
-17
lines changed

EventSource/EventSource.swift

+23-15
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,8 @@ public protocol EventSourceProtocol {
7676
open class EventSource: NSObject, EventSourceProtocol, URLSessionDataDelegate {
7777
static let DefaultRetryTime = 3000
7878

79-
public let url: URL
79+
public let urlRequest: URLRequest
80+
public var url: URL { urlRequest.url! }
8081
private(set) public var lastEventId: String?
8182
private(set) public var retryTime = EventSource.DefaultRetryTime
8283
private(set) public var headers: [String: String]
@@ -93,11 +94,10 @@ open class EventSource: NSObject, EventSourceProtocol, URLSessionDataDelegate {
9394
private var urlSession: URLSession?
9495

9596
public init(
96-
url: URL,
97-
headers: [String: String] = [:]
97+
urlRequest: URLRequest
9898
) {
99-
self.url = url
100-
self.headers = headers
99+
self.urlRequest = urlRequest
100+
self.headers = urlRequest.allHTTPHeaderFields ?? [:]
101101

102102
readyState = EventSourceState.closed
103103
operationQueue = OperationQueue()
@@ -112,7 +112,7 @@ open class EventSource: NSObject, EventSourceProtocol, URLSessionDataDelegate {
112112

113113
let configuration = sessionConfiguration(lastEventId: lastEventId)
114114
urlSession = URLSession(configuration: configuration, delegate: self, delegateQueue: operationQueue)
115-
urlSession?.dataTask(with: url).resume()
115+
urlSession?.dataTask(with: urlRequest).resume()
116116
}
117117

118118
public func disconnect() {
@@ -137,17 +137,17 @@ open class EventSource: NSObject, EventSourceProtocol, URLSessionDataDelegate {
137137
eventListeners[event] = handler
138138
}
139139

140-
public func removeEventListener(_ event: String) {
141-
eventListeners.removeValue(forKey: event)
142-
}
140+
public func removeEventListener(_ event: String) {
141+
eventListeners.removeValue(forKey: event)
142+
}
143143

144-
public func events() -> [String] {
145-
return Array(eventListeners.keys)
146-
}
144+
public func events() -> [String] {
145+
return Array(eventListeners.keys)
146+
}
147147

148148
open func urlSession(_ session: URLSession, dataTask: URLSessionDataTask, didReceive data: Data) {
149149

150-
if readyState != .open {
150+
if readyState != .open {
151151
return
152152
}
153153

@@ -229,8 +229,8 @@ private extension EventSource {
229229
continue
230230
}
231231

232-
if event.event == nil || event.event == "message" {
233-
mainQueue.async { [weak self] in self?.onMessageCallback?(event.id, "message", event.data) }
232+
if event.event == nil || event.event == "thread.message.delta" {
233+
mainQueue.async { [weak self] in self?.onMessageCallback?(event.id, "thread.message.delta", event.data) }
234234
}
235235

236236
if let eventName = event.event, let eventHandler = eventListeners[eventName] {
@@ -252,3 +252,11 @@ private extension EventSource {
252252
}
253253
}
254254
}
255+
256+
public extension EventSourceProtocol {
257+
var retryTime: Int {
258+
return 5
259+
}
260+
}
261+
262+

EventSourceSample/ViewController.swift

+7-2
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,13 @@ class ViewController: UIViewController {
1919
override func viewDidLoad() {
2020
super.viewDidLoad()
2121

22-
let serverURL = URL(string: "http://127.0.0.1:8080/sse")!
23-
eventSource = EventSource(url: serverURL, headers: ["Authorization": "Bearer basic-auth-token"])
22+
var urlRequest = URLRequest(url: URL(string: "http://127.0.0.1:8080/sse")!)
23+
urlRequest.httpMethod = "POST"
24+
urlRequest.addValue("Bearer basic-auth-token", forHTTPHeaderField: "Authorization")
25+
26+
eventSource = EventSource(urlRequest: urlRequest)
27+
28+
eventSource?.connect()
2429

2530
eventSource?.onOpen { [weak self] in
2631
self?.status.backgroundColor = UIColor(red: 166/255, green: 226/255, blue: 46/255, alpha: 1)

0 commit comments

Comments
 (0)