-
Notifications
You must be signed in to change notification settings - Fork 0
/
Host.swift
98 lines (76 loc) · 2.49 KB
/
Host.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
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
94
95
96
97
98
/* Copyright 2018-2019 Prebid.org, Inc.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
import Foundation
@objc public enum PrebidHost: Int {
/**
URL [https://prebid.adnxs.com/pbs/v1/openrtb2/auction](URL)
*/
case Appnexus
/**
URL [https://prebid-server.rubiconproject.com/openrtb2/auction](URL)
*/
case Rubicon
case Custom
func name () -> String {
switch self {
case .Appnexus: return "https://prebid.adnxs.com/pbs/v1/openrtb2/auction"
case .Rubicon: return "https://prebid-server.rubiconproject.com/openrtb2/auction"
case .Custom: return ""
}
}
}
class Host: NSObject {
var prebidServerURL: String? = .EMPTY_String
/**
* The class is created as a singleton object & used
*/
public static let shared = Host()
override init() {
}
/**
* The CustomHost property holds the URL for the custom prebid adaptor
*/
public var setHostURL: String {
get {
return self.prebidServerURL!
}
set {
self.prebidServerURL = newValue
}
}
/**
* This function retrieves the prebid server URL for the selected host
*/
func getHostURL(host: PrebidHost) throws -> String {
if (host == PrebidHost.Custom) {
if (verifyUrl(urlString: self.prebidServerURL) == false) {
throw ErrorCode.prebidServerURLInvalid(self.prebidServerURL!)
}
return self.prebidServerURL!
}
return host.name()
}
/**
* This function verifies if the prebid server URL is in the url format
*/
func verifyUrl (urlString: String?) -> Bool {
//Check for nil
if let urlString = urlString {
// create NSURL instance
if let url = URL(string: urlString) {
// check if your application can open the NSURL instance
return UIApplication.shared.canOpenURL(url)
}
}
return false
}
}