You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
cloudmusic/cloudmusic/MusicRequest.swift

61 lines
1.9 KiB

//
// MusicRequest.swift
// cloudmusic
//
// Created by Qihua Pan on 2020/7/3.
// Copyright © 2020 Qihua Pan. All rights reserved.
//
import UIKit
import Alamofire
import SwiftyJSON
//
class MusicRequest: NSObject {
//
private static let request_host = "192.168.50.73:5000"
private static func request(url:String,callback:@escaping (JSON?) -> Void){
debugPrint("搜索请求接口地址:\(url)")
AF.request(url).responseJSON { response in
debugPrint(response)
if let data=response.data,let json = try? JSON(data: data){
callback(json)
}else{
callback(nil)
}
}
}
//
static func search(keyword:String,callback:@escaping (JSON?) -> Void ){
let url="http://\(String(describing: request_host))/search?keywords=\(keyword)"
request(url: url, callback: callback)
}
//url
static func searchUrl(id:Int32,callback:@escaping (JSON?) -> Void ){
let url="http://\(String(describing: request_host))/song/url?id=\(id)"
request(url: url, callback: callback)
}
//
static func saveMusic(url:String,music:Music,callback:@escaping (Progress,URL) -> Void){
let documentsURL = FileManager.default.urls(for: .downloadsDirectory, in: .userDomainMask)[0]
let fileURL = documentsURL.appendingPathComponent("\(music.id).mp3")
let destination: DownloadRequest.Destination = { _, _ in
return (fileURL, [])
}
AF.download(url, to: destination)
.downloadProgress { progress in
callback(progress,fileURL)
}
.responseData { response in
if let data=response.value{
debugPrint("文件体积:\(data.count/(1024*1024))MB")
}
}
}
}