PhotoLibraryAuthorizer.swift 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. //
  2. // PhotoLibraryAuthorizer.swift
  3. // ALCameraViewController
  4. //
  5. // Created by Alex Littlejohn on 2016/03/26.
  6. // Copyright © 2016 zero. All rights reserved.
  7. //
  8. import UIKit
  9. import Photos
  10. public typealias PhotoLibraryAuthorizerCompletion = (NSError?) -> Void
  11. class PhotoLibraryAuthorizer {
  12. private let errorDomain = "com.zero.imageFetcher"
  13. private let completion: PhotoLibraryAuthorizerCompletion
  14. init(completion: @escaping PhotoLibraryAuthorizerCompletion) {
  15. self.completion = completion
  16. handleAuthorization(status: PHPhotoLibrary.authorizationStatus())
  17. }
  18. func onDeniedOrRestricted(completion: PhotoLibraryAuthorizerCompletion) {
  19. let error = errorWithKey("error.access-denied", domain: errorDomain)
  20. completion(error)
  21. }
  22. func handleAuthorization(status: PHAuthorizationStatus) {
  23. switch status {
  24. case .notDetermined:
  25. PHPhotoLibrary.requestAuthorization(handleAuthorization)
  26. break
  27. case .authorized:
  28. DispatchQueue.main.async {
  29. self.completion(nil)
  30. }
  31. break
  32. case .denied, .restricted:
  33. DispatchQueue.main.async {
  34. self.onDeniedOrRestricted(completion: self.completion)
  35. }
  36. break
  37. @unknown default:
  38. let error = errorWithKey("error.unknown-auth-status", domain: errorDomain)
  39. completion(error)
  40. }
  41. }
  42. }