From 6470daf7d3394c539986dd46f2b4eea48e364437 Mon Sep 17 00:00:00 2001 From: Nico Verbruggen Date: Thu, 31 Mar 2022 18:27:26 +0200 Subject: [PATCH] =?UTF-8?q?=E2=9C=85=20Added=20test=20to=20parse=20the=20p?= =?UTF-8?q?roxy=20address?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Parsers/NginxConfigParserTest.swift | 6 ++++ .../Valet/NginxConfigParser.swift | 29 ++++++++++++++----- 2 files changed, 28 insertions(+), 7 deletions(-) diff --git a/phpmon-tests/Parsers/NginxConfigParserTest.swift b/phpmon-tests/Parsers/NginxConfigParserTest.swift index 191880d..4361c04 100644 --- a/phpmon-tests/Parsers/NginxConfigParserTest.swift +++ b/phpmon-tests/Parsers/NginxConfigParserTest.swift @@ -33,4 +33,10 @@ class NginxConfigParserTest: XCTestCase { ) } + func testCanDetermineProxy() throws { + let parsed = NginxConfigParser(filePath: NginxConfigParserTest.proxyUrl.path) + XCTAssertTrue(parsed.contents.contains("# valet stub: proxy.valet.conf")) + XCTAssertEqual("http://127.0.0.1:90", parsed.proxy) + } + } diff --git a/phpmon/Domain/Integrations/Valet/NginxConfigParser.swift b/phpmon/Domain/Integrations/Valet/NginxConfigParser.swift index c3316e5..0b51798 100644 --- a/phpmon/Domain/Integrations/Valet/NginxConfigParser.swift +++ b/phpmon/Domain/Integrations/Valet/NginxConfigParser.swift @@ -17,7 +17,25 @@ class NginxConfigParser { .replacingOccurrences(of: "~", with: "/Users/\(Paths.whoami)") ) } + + /** + Retrieves what address this domain is proxying. + */ + lazy var proxy: String? = { + let regex = try! NSRegularExpression( + pattern: #"proxy_pass (?.*:\d*);"#, + options: [] + ) + guard let match = regex.firstMatch(in: contents, range: NSMakeRange(0, contents.count)) + else { return nil } + + return contents[Range(match.range(withName: "proxy"), in: contents)!] + }() + + /** + Retrieves which isolated version is active for this domain. + */ lazy var isolatedVersion: String? = { let regex = try! NSRegularExpression( // PHP versions have (so far) never needed multiple digits for version numbers @@ -25,14 +43,11 @@ class NginxConfigParser { options: [] ) - let match = regex.firstMatch(in: contents, range: NSMakeRange(0, contents.count)) - - if match == nil { - return nil - } + guard let match = regex.firstMatch(in: contents, range: NSMakeRange(0, contents.count)) + else { return nil } - let major: String = contents[Range(match!.range(withName: "major"), in: contents)!] - let minor: String = contents[Range(match!.range(withName: "minor"), in: contents)!] + let major: String = contents[Range(match.range(withName: "major"), in: contents)!], + minor: String = contents[Range(match.range(withName: "minor"), in: contents)!] return "\(major).\(minor)" }()