Skip to content

Commit b68fd33

Browse files
committed
Fix SerpAPI
1 parent da1d8c4 commit b68fd33

File tree

3 files changed

+20
-26
lines changed

3 files changed

+20
-26
lines changed

Tool/Sources/Preferences/Keys.swift

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -586,8 +586,8 @@ public extension UserDefaultPreferenceKeys {
586586

587587
public extension UserDefaultPreferenceKeys {
588588
enum SearchProvider: String, Codable, CaseIterable {
589-
case serpAPI
590589
case headlessBrowser
590+
case serpAPI
591591
}
592592

593593
enum SerpAPIEngine: String, Codable, CaseIterable {
@@ -612,6 +612,10 @@ public extension UserDefaultPreferenceKeys {
612612
.init(defaultValue: .google, key: "SerpAPIEngine")
613613
}
614614

615+
var serpAPIKeyName: PreferenceKey<String> {
616+
.init(defaultValue: "", key: "SerpAPIKeyName")
617+
}
618+
615619
var headlessBrowserEngine: PreferenceKey<HeadlessBrowserEngine> {
616620
.init(defaultValue: .google, key: "HeadlessBrowserEngine")
617621
}

Tool/Sources/WebSearchService/SearchServices/SerpAPISearchService.swift

Lines changed: 9 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,22 @@
11
import Foundation
22

33
struct SerpAPIResponse: Codable {
4-
var searchMetadata: SearchMetadata
5-
var organicResults: [OrganicResult]
6-
7-
struct SearchMetadata: Codable {
8-
var id: String
9-
var status: String
10-
var jsonEndpoint: String
11-
var createdAt: String
12-
var processedAt: String
13-
var totalTimeTaken: Double
14-
}
4+
var organic_results: [OrganicResult]
155

166
struct OrganicResult: Codable {
17-
var position: Int
18-
var title: String
19-
var link: String
20-
var snippet: String
7+
var position: Int?
8+
var title: String?
9+
var link: String?
10+
var snippet: String?
2111

22-
func toWebSearchResult() -> WebSearchResult.WebPage {
23-
return WebSearchResult.WebPage(urlString: link, title: title, snippet: snippet)
12+
func toWebSearchResult() -> WebSearchResult.WebPage? {
13+
guard let link, let title else { return nil }
14+
return WebSearchResult.WebPage(urlString: link, title: title, snippet: snippet ?? "")
2415
}
2516
}
2617

2718
func toWebSearchResult() -> WebSearchResult {
28-
return WebSearchResult(webPages: organicResults.map { $0.toWebSearchResult() })
19+
return WebSearchResult(webPages: organic_results.compactMap { $0.toWebSearchResult() })
2920
}
3021
}
3122

Tool/Sources/WebSearchService/WebSearchService.swift

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,20 +25,19 @@ public enum WebSearchProvider {
2525
switch UserDefaults.shared.value(for: \.searchProvider) {
2626
case .headlessBrowser:
2727
return .headlessBrowser(.init(
28-
rawValue: UserDefaults.shared.value(for: \.headlessBrowserEngine)
29-
.rawValue
28+
rawValue: UserDefaults.shared.value(for: \.headlessBrowserEngine).rawValue
3029
) ?? .google)
3130
case .serpAPI:
31+
let apiKeyName = UserDefaults.shared.value(for: \.serpAPIKeyName)
3232
return .serpAPI(.init(
33-
rawValue: UserDefaults.shared.value(for: \.headlessBrowserEngine)
34-
.rawValue
35-
) ?? .google, apiKey: (try? Keychain.apiKey.get("SerpAPIKey")) ?? "")
33+
rawValue: UserDefaults.shared.value(for: \.serpAPIEngine).rawValue
34+
) ?? .google, apiKey: (try? Keychain.apiKey.get(apiKeyName)) ?? "")
3635
}
3736
}
3837
}
3938

40-
public struct WebSearchResult {
41-
public struct WebPage {
39+
public struct WebSearchResult: Equatable {
40+
public struct WebPage: Equatable {
4241
public var urlString: String
4342
public var title: String
4443
public var snippet: String

0 commit comments

Comments
 (0)