diff --git a/Helper/VideoManager.swift b/Helper/VideoManager.swift new file mode 100644 index 0000000..a211ca4 --- /dev/null +++ b/Helper/VideoManager.swift @@ -0,0 +1,41 @@ +// +// VideoManager.swift +// DispatchDemoApp +// +// Created by JungpyoHong on 4/29/21. +// + +import Foundation +import PhotosUI + +struct VideoManager { + + func downloadVideoLinkAndCreateAsset(_ videoLink: String) { + + guard let videoURL = URL(string: videoLink) else { return } + guard let documentsDirectoryURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first else { return } + if !FileManager.default.fileExists(atPath: documentsDirectoryURL.appendingPathComponent(videoURL.lastPathComponent).path) { + URLSession.shared.downloadTask(with: videoURL) { (location, response, error) -> Void in + guard let location = location else { return } + let destinationURL = documentsDirectoryURL.appendingPathComponent(response?.suggestedFilename ?? videoURL.lastPathComponent) + do { + try FileManager.default.moveItem(at: location, to: destinationURL) + PHPhotoLibrary.requestAuthorization({ (authorizationStatus: PHAuthorizationStatus) -> Void in + if authorizationStatus == .authorized { + PHPhotoLibrary.shared().performChanges({ + PHAssetChangeRequest.creationRequestForAssetFromVideo(atFileURL: destinationURL)}) { completed, error in + if completed { + print("Video asset created") + } else { + print("error") + } + } + } + }) + } catch { print(error) } + }.resume() + } else { + print("File already exists at destination url") + } + } +}