Mercurial > public > simoleon
annotate Simoleon/Jobs/FileController.swift @ 154:8afba86ab8dd
Refactor code
author | Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com> |
---|---|
date | Wed, 25 Aug 2021 10:43:12 +0100 |
parents | |
children | 681f2cbe8c7f |
rev | line source |
---|---|
154
8afba86ab8dd
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
1 // |
8afba86ab8dd
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
2 // ReadConfig.swift |
8afba86ab8dd
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
3 // Simoleon |
8afba86ab8dd
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
4 // |
8afba86ab8dd
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
5 // Created by Dennis Concepción Martín on 20/07/2021. |
8afba86ab8dd
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
6 // |
8afba86ab8dd
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
7 |
8afba86ab8dd
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
8 import Foundation |
8afba86ab8dd
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
9 |
8afba86ab8dd
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
10 class FileController { |
8afba86ab8dd
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
11 |
8afba86ab8dd
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
12 /* |
8afba86ab8dd
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
13 Read configuration variables from Config.xconfig |
8afba86ab8dd
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
14 */ |
8afba86ab8dd
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
15 func readConfigVariable(withKey: String) -> String? { |
8afba86ab8dd
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
16 return (Bundle.main.infoDictionary?[withKey] as? String)? |
8afba86ab8dd
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
17 .replacingOccurrences(of: "\\", with: "") |
8afba86ab8dd
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
18 } |
8afba86ab8dd
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
19 |
8afba86ab8dd
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
20 /* |
8afba86ab8dd
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
21 Decode and read json file |
8afba86ab8dd
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
22 */ |
8afba86ab8dd
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
23 func read<T: Decodable>(json filename: String) throws -> T { |
8afba86ab8dd
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
24 let data: Data |
8afba86ab8dd
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
25 |
8afba86ab8dd
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
26 guard let file = Bundle.main.url(forResource: filename, withExtension: nil) |
8afba86ab8dd
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
27 else { |
8afba86ab8dd
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
28 throw JsonErrors.fileMissing |
8afba86ab8dd
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
29 } |
8afba86ab8dd
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
30 |
8afba86ab8dd
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
31 do { |
8afba86ab8dd
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
32 data = try Data(contentsOf: file) |
8afba86ab8dd
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
33 } catch { |
8afba86ab8dd
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
34 throw JsonErrors.loadFailed(cause: error.localizedDescription) |
8afba86ab8dd
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
35 } |
8afba86ab8dd
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
36 |
8afba86ab8dd
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
37 do { |
8afba86ab8dd
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
38 let decoder = JSONDecoder() |
8afba86ab8dd
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
39 return try decoder.decode(T.self, from: data) |
8afba86ab8dd
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
40 } catch { |
8afba86ab8dd
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
41 throw JsonErrors.parseFailed(cause: error.localizedDescription) |
8afba86ab8dd
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
42 } |
8afba86ab8dd
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
43 } |
8afba86ab8dd
Refactor code
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
44 } |