diff --git a/Modules/Sources/Networking/Model/Site.swift b/Modules/Sources/Networking/Model/Site.swift index d1aee932299..3f84389292b 100644 --- a/Modules/Sources/Networking/Model/Site.swift +++ b/Modules/Sources/Networking/Model/Site.swift @@ -333,6 +333,19 @@ public enum SiteVisibility: Int, Codable, GeneratedFakeable { /// public extension Site { + private var jetpackCanonicalURL: String { + guard let originalURL = URL(string: url), + originalURL.scheme?.lowercased() == "http" + else { + return url + } + + var components = URLComponents(url: originalURL, resolvingAgainstBaseURL: false) + components?.scheme = "https" + + return components?.string ?? url + } + /// Returns the TimeZone using the gmtOffset /// var siteTimezone: TimeZone { @@ -347,7 +360,7 @@ public extension Site { } func toJetpackSite() -> JetpackSite { - JetpackSite(siteID: siteID, siteAddress: url, applicationPasswordAvailable: applicationPasswordAvailable) + JetpackSite(siteID: siteID, siteAddress: jetpackCanonicalURL, applicationPasswordAvailable: applicationPasswordAvailable) } } diff --git a/Modules/Tests/NetworkingTests/Model/SiteTests.swift b/Modules/Tests/NetworkingTests/Model/SiteTests.swift new file mode 100644 index 00000000000..ac2783bfad9 --- /dev/null +++ b/Modules/Tests/NetworkingTests/Model/SiteTests.swift @@ -0,0 +1,28 @@ +import Foundation +import Testing +@testable import Networking +@testable import NetworkingCore + +struct SiteTests { + + @Test(arguments: [ + "http://awesomesite.com", + "http://awesomesite.com/", + "http://awesomesite.whatever.com", + "HTTP://awesomesite.com", + "http://192.168.0.12", + "https://awesomesite.com" + ]) + private func forcingHttpsForJetpack(siteAddress: String) { + let site = Site.defaultMock().copy(url: siteAddress) + let jetpack = site.toJetpackSite() + + #expect(jetpack.siteAddress.isHttpsScheme) + } +} + +fileprivate extension String { + var isHttpsScheme: Bool { + return URL(string: self)?.scheme?.lowercased() == "https" + } +} diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt index 90082ca2e52..15e16f75048 100644 --- a/RELEASE-NOTES.txt +++ b/RELEASE-NOTES.txt @@ -3,7 +3,7 @@ 23.6 ----- - +- [*] Handle sites configured with `http` siteAddress. 23.5 -----