diff --git a/Sources/OpenFoodFacts/Extension+String.swift b/Sources/OpenFoodFacts/Extension+String.swift new file mode 100644 index 0000000..d12fb91 --- /dev/null +++ b/Sources/OpenFoodFacts/Extension+String.swift @@ -0,0 +1,21 @@ +extension String { + func camelCaseToSnakeCase() -> String { + var result = "" + var lastCharacterWasUppercase = false + + for character in self { + if character.isUppercase { + if !result.isEmpty && !lastCharacterWasUppercase { + result.append("_") + } + result.append(character.lowercased()) + lastCharacterWasUppercase = true + } else { + result.append(character) + lastCharacterWasUppercase = false + } + } + + return result + } +} diff --git a/Sources/OpenFoodFacts/types/SearchResponse.swift b/Sources/OpenFoodFacts/types/SearchResponse.swift new file mode 100644 index 0000000..27fc10f --- /dev/null +++ b/Sources/OpenFoodFacts/types/SearchResponse.swift @@ -0,0 +1,14 @@ +public struct SearchResponse: Codable, ObjectDebugger { + public var count: Int + public var page: Int + public var pageCount: Int + public var pageSize: Int + public var products: [Product]? + public var skip: Int + + private enum CodingKeys: String, CodingKey { + case count, page, products, skip + case pageCount = "page_count" + case pageSize = "page_size" + } +}