Fix channels URL parsing

This commit is contained in:
Arkadiusz Fal 2022-06-26 14:32:15 +02:00
parent adb1f72684
commit 993e602ca3
2 changed files with 5 additions and 4 deletions

View File

@ -55,6 +55,7 @@ final class URLParserTests: XCTestCase {
let parser = URLParser(url: URL(string: url)!)
XCTAssertEqual(parser.destination, .channel)
XCTAssertEqual(parser.channelName, name)
XCTAssertNil(parser.channelID)
}
}
@ -63,6 +64,7 @@ final class URLParserTests: XCTestCase {
let parser = URLParser(url: URL(string: url)!)
XCTAssertEqual(parser.destination, .channel)
XCTAssertEqual(parser.channelID, id)
XCTAssertNil(parser.channelName)
}
}

View File

@ -75,13 +75,12 @@ struct URLParser {
}
var channelName: String? {
guard destination == .channel else { return nil }
guard hasAnyOfPrefixes(path, ["c/", "/c/"]) else { return nil }
return removePrefixes(path, Self.prefixes[.channel]!.map { [$0, "/"].joined() })
}
var channelID: String? {
guard destination == .channel else { return nil }
guard hasAnyOfPrefixes(path, ["channel/", "/channel/"]) else { return nil }
return removePrefixes(path, Self.prefixes[.channel]!.map { [$0, "/"].joined() })
}
@ -95,7 +94,7 @@ struct URLParser {
}
private func hasAnyOfPrefixes(_ value: String, _ prefixes: [String]) -> Bool {
return prefixes.contains { value.hasPrefix($0) }
prefixes.contains { value.hasPrefix($0) }
}
private func removePrefixes(_ value: String, _ prefixes: [String]) -> String {