Skip to content

Instantly share code, notes, and snippets.

@eddieespinal
Last active November 16, 2015 13:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save eddieespinal/2ce0182f4b57819a3c24 to your computer and use it in GitHub Desktop.
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.
//
// 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