File tree Expand file tree Collapse file tree 3 files changed +20
-26
lines changed
Expand file tree Collapse file tree 3 files changed +20
-26
lines changed Original file line number Diff line number Diff line change @@ -586,8 +586,8 @@ public extension UserDefaultPreferenceKeys {
586586
587587public 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 }
Original file line number Diff line number Diff line change 11import Foundation
22
33struct 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
Original file line number Diff line number Diff 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
You can’t perform that action at this time.
0 commit comments