Added 3D Preview URL property to CSMScreenshot

This commit is contained in:
Tomas Martins 2021-01-24 21:06:30 -03:00
parent d07d556756
commit f31f99b740
2 changed files with 41 additions and 0 deletions

View File

@ -47,3 +47,22 @@ import Foundation
self.init(status: status, cached: cached, imageURL: imageURL, previewURL: previewURL, error: error)
}
}
extension CSMScreenshot {
var preview3D: String? {
let regex = "(?:https:\\/\\/s1.cs.money\\/)([A-Za-z0-9_\\-]{7})"
guard let imageURL = self.imageURL else {
return nil
}
let idNsRange = NSRange(location: 0, length: imageURL.utf16.count)
do {
let expression = try NSRegularExpression(pattern: regex)
let firstMatch = expression.firstMatch(in: imageURL, options: [], range: idNsRange)
guard let nsRange = firstMatch?.range(at: 1),
let range = Range(nsRange, in: imageURL) else { return nil }
return "https://3d.cs.money/item/\(imageURL[range])"
} catch {
return nil
}
}
}

View File

@ -57,4 +57,26 @@ final class CSFloatKitTests: XCTestCase {
XCTAssertNotNil(screenshot)
}
}
func testPreview3D() {
let exp = expectation(description: "CSM Screenshot")
var previewURL: String?
guard let config = CSMConfiguration(inspectLink: "steam://rungame/730/76561202255233023/+csgo_econ_action_preview%20S76561199043158336A20517916623D14133434752320963923") else {
XCTFail("Invalid inspect link for CSM Service")
return
}
let request = CSMRequester(configuration: config, completion: { (fetchedScreenshot, error) in
XCTAssertEqual(error, .noError)
XCTAssertNotNil(fetchedScreenshot)
guard let actualScreenshot = fetchedScreenshot else { return }
previewURL = actualScreenshot.preview3D
XCTAssertEqual(previewURL, "https://3d.cs.money/item/TWXUyFZ")
exp.fulfill()
})
request.start()
waitForExpectations(timeout: 10) { (error) in
XCTAssertNotNil(previewURL)
}
}
}