-
Notifications
You must be signed in to change notification settings - Fork 1.1k
/
JetpackSiteRef.swift
34 lines (31 loc) · 1.11 KB
/
JetpackSiteRef.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
/// A reference to a site that uses the Jetpack API.
///
/// This type contains the site ID and account username as the minimum way to
/// uniquely identify a site and obtain API credentials for it.
///
/// - Warning: this does not contemplate WordPress.com accounts changing
/// usernames, which is a real possibility, but neither does the rest of the app.
/// The keychain will store the oAuth token associated to the username, and if
/// that changes, authentication will stop working.
///
struct JetpackSiteRef: Hashable, Codable {
/// The WordPress.com site ID.
let siteID: Int
/// The WordPress.com username.
let username: String
init?(blog: Blog) {
guard let username = blog.account?.username,
let siteID = blog.dotComID as? Int else {
return nil
}
self.siteID = siteID
self.username = username
}
var hashValue: Int {
return "\(username)-\(siteID)".hashValue
}
static func ==(lhs: JetpackSiteRef, rhs: JetpackSiteRef) -> Bool {
return lhs.siteID == rhs.siteID
&& lhs.username == rhs.username
}
}