-
Notifications
You must be signed in to change notification settings - Fork 27
Expand file tree
/
Copy pathPublishSMEncryptedTest.swift
More file actions
93 lines (77 loc) · 4.66 KB
/
Copy pathPublishSMEncryptedTest.swift
File metadata and controls
93 lines (77 loc) · 4.66 KB
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
//
// PublishSMEncryptedTest.swift
// R5ProTestbed
//
// Created by David Heimann on 1/9/19.
// Copyright © 2015 Infrared5, Inc. All rights reserved.
//
// The accompanying code comprising examples for use solely in conjunction with Red5 Pro (the "Example Code")
// is licensed to you by Infrared5 Inc. in consideration of your agreement to the following
// license terms and conditions. Access, use, modification, or redistribution of the accompanying
// code constitutes your acceptance of the following license terms and conditions.
//
// Permission is hereby granted, free of charge, to you to use the Example Code and associated documentation
// files (collectively, the "Software") without restriction, including without limitation the rights to use,
// copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit
// persons to whom the Software is furnished to do so, subject to the following conditions:
//
// The Software shall be used solely in conjunction with Red5 Pro. Red5 Pro is licensed under a separate end
// user license agreement (the "EULA"), which must be executed with Infrared5, Inc.
// An example of the EULA can be found on our website at: https://account.red5pro.com/assets/LICENSE.txt.
//
// The above copyright notice and this license shall be included in all copies or portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
// NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL INFRARED5, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
import UIKit
import R5Streaming
@objc(PublishSMEncryptedTest)
class PublishSMEncryptedTest: PublishStreamManagerTest {
override func responder( urls: Array<String>) -> (String?, String?, Error?) -> Void {
var urls = urls
return {(ip: String?, streamGuid: String?, error: Error?) -> Void in
if ((error) != nil) {
if (urls.endIndex == urls.startIndex) {
NSLog("%@", String(error!.localizedDescription))
self.showInfo(title: "Error", message: String(error!.localizedDescription) + "\n\n" + "You may be trying to access over HTTPS which requires a Fully-Qualified Domain Name for host.\n\nYou will need to edit your host and port settings accordingly.")
}
else {
self.requestOrigin(urls.popLast()!, resolve: self.responder(urls: urls))
}
return;
}
var paths = streamGuid?.split(separator: "/")
let name = String((paths?.popLast())!)
let scope = paths?.joined(separator: "/")
// Setup a configuration object for our connection
let config = R5Configuration()
config.host = ip
config.port = Int32(Testbed.getParameter(param: "port") as! Int)
config.contextName = scope
config.streamName = name
//For stream encryption, this is the only line that needed to change from the basic SM example
config.`protocol` = Int32(r5_srtp.rawValue)
config.buffer_time = Testbed.getParameter(param: "buffer_time") as! Float
config.licenseKey = Testbed.getParameter(param: "license_key") as! String
// Create a new connection using the configuration above
let connection = R5Connection(config: config)
// UI updates must be asynchronous
DispatchQueue.main.async(execute: {
// Create our new stream that will utilize that connection
self.setupPublisher(connection: connection!)
// show preview and debug info
self.currentView!.attach(self.publishStream!)
self.publishStream!.publish(name, type: self.getPublishRecordType ())
let label = UILabel(frame: CGRect(x: 0, y: self.view.frame.height-24, width: self.view.frame.width, height: 24))
label.textAlignment = NSTextAlignment.left
label.backgroundColor = UIColor.lightGray
label.text = "Connected to: " + ip!
self.view.addSubview(label)
})
}
}
}