GitHubService.swift 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. //
  2. // GitHubService.swift
  3. // LoopFollow
  4. //
  5. // Created by Jonas Björkert on 2024-05-11.
  6. // Copyright © 2024 Jon Fawcett. All rights reserved.
  7. //
  8. import Foundation
  9. class GitHubService {
  10. enum GitHubDataType {
  11. case versionConfig
  12. case blacklistedVersions
  13. var url: String {
  14. switch self {
  15. case .versionConfig:
  16. return "https://raw.githubusercontent.com/loopandlearn/LoopFollow/main/Config.xcconfig"
  17. case .blacklistedVersions:
  18. return "https://raw.githubusercontent.com/bjorkert/LoopFollow/Main/blacklisted-versions.json"
  19. return "https://raw.githubusercontent.com/loopandlearn/LoopFollow/main/blacklisted-versions.json"
  20. }
  21. }
  22. }
  23. func fetchData(for dataType: GitHubDataType, completion: @escaping (Data?) -> Void) {
  24. let urlString = dataType.url
  25. guard let url = URL(string: urlString) else {
  26. completion(nil)
  27. return
  28. }
  29. URLSession.shared.dataTask(with: url) { data, response, error in
  30. guard let data = data, error == nil else {
  31. completion(nil)
  32. return
  33. }
  34. if let httpResponse = response as? HTTPURLResponse, httpResponse.statusCode == 200 {
  35. completion(data)
  36. } else {
  37. completion(nil)
  38. }
  39. }.resume()
  40. }
  41. }