From 11789ecdbe86efdb9979e228fe3c66a8ac41463f Mon Sep 17 00:00:00 2001 From: cdricms <36056008+cdricms@users.noreply.github.com> Date: Tue, 26 Dec 2023 17:29:03 +0100 Subject: [PATCH] Uhhh... the documentation is shit; still lost --- Sources/OpenFoodFacts/Extension+String.swift | 21 +++++++++++++++++++ .../OpenFoodFacts/types/SearchResponse.swift | 14 +++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 Sources/OpenFoodFacts/Extension+String.swift create mode 100644 Sources/OpenFoodFacts/types/SearchResponse.swift 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" + } +}