Files
Attractor/App/Web Search/SearchProvider.swift

43 lines
1.1 KiB
Swift
Raw Normal View History

2021-03-09 12:20:51 -08:00
//
// SearchProvider.swift
// App
//
// Created by James Magahern on 3/9/21.
//
import Foundation
class SearchProvider
{
static let google = SearchProvider(resolver: { query in
// gbv=1: no JS
URL(string: "https://google.com/search?q=\(query.sanitized())&gbv=1")!
})
static let duckduckgo = SearchProvider(resolver: { query in
// html version is the one without JS
URL(string: "https://html.duckduckgo.com/html/?q=\(query.sanitized())")!
})
static let searxnor = SearchProvider(resolver: { query in
URL(string: "http://searx.nor/search?q=\(query.sanitized())&categories=general")!
})
func searchURLWithQuery(_ query: String) -> URL {
return resolver(query)
}
internal let resolver: (String) -> URL
internal init(resolver: @escaping (String) -> URL) {
self.resolver = resolver
}
}
fileprivate extension String {
func sanitized() -> String {
self
.replacingOccurrences(of: " ", with: "+")
.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)!
}
}