Last active
November 16, 2015 13:27
-
-
Save eddieespinal/2ce0182f4b57819a3c24 to your computer and use it in GitHub Desktop.
This class helps detect if a song has a low bitrate version on the server.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// | |
// ELLowBitrateManager.swift | |
// | |
// | |
// Created by Eddie Espinal on 11/11/15. | |
// Copyright © 2015 EspinalLab, LLC. All rights reserved. | |
// | |
import UIKit | |
let kAudioQualityKey = "audioQuality" | |
@objc enum BitrateType: Int { | |
case HDBitrate | |
case MidBitrate | |
case LowBitrate | |
func name() -> String { | |
switch self { | |
case .HDBitrate: return "HD" | |
case .MidBitrate: return "-96k" | |
case .LowBitrate: return "-64k" | |
} | |
} | |
} | |
@objc public class ELLowBitrateManager: NSObject { | |
class func getAudioQualityFromSettings() -> BitrateType { | |
let audioQuality = NSUserDefaults.standardUserDefaults().integerForKey(kAudioQualityKey) | |
return BitrateType(rawValue: audioQuality)! | |
} | |
class func getLowBitrateURLStringFromString(fileURLString: String, bitrateType: BitrateType ) -> String { | |
let fileURLString = fileURLString as NSString | |
let fileExtension = fileURLString.pathExtension | |
let lowBitrateFilePath = fileURLString.stringByDeletingPathExtension.stringByAppendingString(bitrateType.name()) | |
let tempFileURLString = lowBitrateFilePath.stringByAppendingFormat(".%@", fileExtension) | |
let lowBitrateFileURLString = tempFileURLString.stringByReplacingOccurrencesOfString("http:/", withString: "http://", options: NSStringCompareOptions.LiteralSearch, range: nil) | |
let escapedAddress = lowBitrateFileURLString.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet()) | |
return escapedAddress! | |
} | |
class func checkIfFileExists(fileURLString: String, bitrateType: BitrateType , completionHandler: (success: Bool, fileSize: String?) -> Void) { | |
let fileURLString = fileURLString as NSString | |
let fileExtension = fileURLString.pathExtension | |
let lowBitrateFilePath = fileURLString.stringByDeletingPathExtension.stringByAppendingString(bitrateType.name()) | |
let lowBitrateFileURLString = lowBitrateFilePath.stringByAppendingFormat(".%@", fileExtension) | |
let escapedAddress = lowBitrateFileURLString.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet()) | |
let request = NSMutableURLRequest(URL: NSURL(string: escapedAddress!)!) | |
request.HTTPMethod = "HEAD" | |
var response: NSURLResponse? | |
do { | |
let data = try NSURLConnection.sendSynchronousRequest(request, returningResponse: &response) | |
print(data) | |
} catch (let error) { | |
print(error) | |
} | |
if let httpResponse = response as? NSHTTPURLResponse { | |
if httpResponse.statusCode == 200 { | |
// File Exist | |
if let contentType = httpResponse.allHeaderFields["Content-Length"] as? String { | |
completionHandler(success: true, fileSize: contentType) | |
} | |
} else { | |
// File Doesn't Exist | |
completionHandler(success: false, fileSize: nil) | |
} | |
} else { | |
// Error loading URL | |
completionHandler(success: false, fileSize: nil) | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment