Skip to content

Commit

Permalink
support multiple encoding
Browse files Browse the repository at this point in the history
  • Loading branch information
akadateppei committed Jul 7, 2022
1 parent 382972f commit cea13a7
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 6 deletions.
20 changes: 15 additions & 5 deletions Sources/OpenGraph/Extension/String.swift
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,21 @@
import Foundation

extension String {
init?(data: Data, `default`: String.Encoding = .utf8) {
var encoding = `default`
if #available(macOS 10.10, *) {
encoding = data.stringEncoding ?? `default`
}
init?(data: Data, textEncodingName: String? = nil, `default`: String.Encoding = .utf8) {
let encoding: String.Encoding = {
if let textEncodingName = textEncodingName {
let cfe = CFStringConvertIANACharSetNameToEncoding(textEncodingName as CFString)
if cfe != kCFStringEncodingInvalidId {
let se = CFStringConvertEncodingToNSStringEncoding(cfe)
return String.Encoding(rawValue: se)
}
}
if #available(macOS 10.10, *) {
return data.stringEncoding ?? `default`
}
return `default`
}()

self.init(data: data, encoding: encoding)
}
}
2 changes: 1 addition & 1 deletion Sources/OpenGraph/OpenGraph.swift
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ public struct OpenGraph {
if !(200..<300).contains(response.statusCode) {
completion(.failure(OpenGraphResponseError.unexpectedStatusCode(response.statusCode)))
} else {
guard let htmlString = String(data: data) else {
guard let htmlString = String(data: data, textEncodingName: response.textEncodingName) else {
completion(.failure(OpenGraphParseError.encodingError))
return
}
Expand Down

0 comments on commit cea13a7

Please sign in to comment.