解决了语音上传到问题,接下来要解决下载播放问题

This commit is contained in:
joywayer
2025-06-15 12:36:47 +08:00
parent bba3ed1cb4
commit c11fc62bf1
513 changed files with 31197 additions and 2969 deletions

341
Pods/Qiniu/QiniuSDK/Http/QNResponseInfo.m generated Executable file
View File

@@ -0,0 +1,341 @@
//
// QNResponseInfo.m
// QiniuSDK
//
// Created by bailong on 14/10/2.
// Copyright (c) 2014 Qiniu. All rights reserved.
//
#import "QNErrorCode.h"
#import "QNResponseInfo.h"
#import "QNUserAgent.h"
#import "QNUtils.h"
static NSString *kQNErrorDomain = @"qiniu.com";
@interface QNResponseInfo ()
@property (assign) int statusCode;
@property (nonatomic, copy) NSString *message;
@property (nonatomic, copy) NSString *reqId;
@property (nonatomic, copy) NSString *xlog;
@property (nonatomic, copy) NSString *xvia;
@property (nonatomic, copy) NSError *error;
@property (nonatomic, copy) NSString *host;
@property (nonatomic, copy) NSString *id;
@property (assign) UInt64 timeStamp;
@end
@implementation QNResponseInfo
+ (instancetype)successResponse{
return [QNResponseInfo successResponseWithDesc:@"inter:ok"];
}
+ (instancetype)successResponseWithDesc:(NSString *)desc {
QNResponseInfo *responseInfo = [[QNResponseInfo alloc] init];
responseInfo.statusCode = 200;
responseInfo.message = desc;
responseInfo.xlog = @"inter:xlog";
responseInfo.reqId = @"inter:reqid";
return responseInfo;
}
+ (instancetype)cancelResponse {
return [QNResponseInfo errorResponseInfo:kQNRequestCancelled
errorDesc:@"cancelled by user"];
}
+ (instancetype)responseInfoWithNetworkError:(NSString *)desc{
return [QNResponseInfo errorResponseInfo:kQNNetworkError
errorDesc:desc];
}
+ (instancetype)responseInfoWithInvalidArgument:(NSString *)desc{
return [QNResponseInfo errorResponseInfo:kQNInvalidArgument
errorDesc:desc];
}
+ (instancetype)responseInfoWithInvalidToken:(NSString *)desc {
return [QNResponseInfo errorResponseInfo:kQNInvalidToken
errorDesc:desc];
}
+ (instancetype)responseInfoWithFileError:(NSError *)error {
return [QNResponseInfo errorResponseInfo:kQNFileError
errorDesc:nil
error:error];
}
+ (instancetype)responseInfoOfZeroData:(NSString *)path {
NSString *desc;
if (path == nil) {
desc = @"data size is 0";
} else {
desc = [[NSString alloc] initWithFormat:@"file %@ size is 0", path];
}
return [QNResponseInfo errorResponseInfo:kQNZeroDataSize
errorDesc:desc];
}
+ (instancetype)responseInfoWithLocalIOError:(NSString *)desc{
return [QNResponseInfo errorResponseInfo:kQNLocalIOError
errorDesc:desc];
}
+ (instancetype)responseInfoWithMaliciousResponseError:(NSString *)desc{
return [QNResponseInfo errorResponseInfo:kQNMaliciousResponseError
errorDesc:desc];
}
+ (instancetype)responseInfoWithNoUsableHostError:(NSString *)desc{
return [QNResponseInfo errorResponseInfo:kQNSDKInteriorError
errorDesc:desc];
}
+ (instancetype)responseInfoWithSDKInteriorError:(NSString *)desc{
return [QNResponseInfo errorResponseInfo:kQNSDKInteriorError
errorDesc:desc];
}
+ (instancetype)responseInfoWithUnexpectedSysCallError:(NSString *)desc{
return [QNResponseInfo errorResponseInfo:kQNUnexpectedSysCallError
errorDesc:desc];
}
+ (instancetype)errorResponseInfo:(int)errorType
errorDesc:(NSString *)errorDesc{
return [self errorResponseInfo:errorType errorDesc:errorDesc error:nil];
}
+ (instancetype)errorResponseInfo:(int)errorType
errorDesc:(NSString *)errorDesc
error:(NSError *)error{
QNResponseInfo *response = [[QNResponseInfo alloc] init];
response.statusCode = errorType;
response.message = errorDesc;
if (error) {
response.error = error;
} else {
NSError *error = [[NSError alloc] initWithDomain:kQNErrorDomain
code:errorType
userInfo:@{ @"error" : response.message ?: @"error" }];
response.error = error;
}
return response;
}
- (instancetype)initWithResponseInfoHost:(NSString *)host
response:(NSHTTPURLResponse *)response
body:(NSData *)body
error:(NSError *)error {
self = [super init];
if (self) {
_host = host;
_timeStamp = [[NSDate date] timeIntervalSince1970];
if (response) {
int statusCode = (int)[response statusCode];
NSDictionary *headers = [response allHeaderFields];
_responseHeader = [headers copy];
_statusCode = statusCode;
_reqId = headers[@"x-reqid"];
_xlog = headers[@"x-log"];
_xvia = headers[@"x-via"] ?: headers[@"x-px"] ?: headers[@"fw-via"];
if (_statusCode == 200 && _reqId == nil && _xlog == nil) {
_statusCode = kQNMaliciousResponseError;
_message = @"this is a malicious response";
_responseDictionary = nil;
_error = [[NSError alloc] initWithDomain:kQNErrorDomain code:_statusCode userInfo:@{@"error" : _message}];
} else if (error) {
_error = error;
_statusCode = (int)error.code;
_message = [NSString stringWithFormat:@"%@", error];
_responseDictionary = nil;
} else {
NSMutableDictionary *errorUserInfo = [@{@"errorHost" : host ?: @""} mutableCopy];
if (!body) {
_message = @"no response data";
_error = nil;
_responseDictionary = nil;
} else {
NSError *tmp = nil;
NSDictionary *responseInfo = nil;
responseInfo = [NSJSONSerialization JSONObjectWithData:body options:NSJSONReadingMutableLeaves error:&tmp];
if (tmp){
_message = [[NSString alloc] initWithData:body encoding:NSUTF8StringEncoding];
_error = nil;
_responseDictionary = nil;
} else if (statusCode >= 200 && statusCode < 300) {
_error = nil;
_message = @"ok";
_responseDictionary = responseInfo;
} else {
NSString *errorString = responseInfo[@"error"];
if (errorString) {
[errorUserInfo setDictionary:@{@"error" : errorString}];
_message = errorString;
_error = [[NSError alloc] initWithDomain:kQNErrorDomain code:statusCode userInfo:errorUserInfo];
} else {
_message = errorString;
_error = nil;
}
_responseDictionary = responseInfo;
}
}
}
} else if (error) {
_error = error;
_statusCode = (int)error.code;
_message = [NSString stringWithFormat:@"%@", error];
_responseDictionary = nil;
} else {
_statusCode = kQNUnexpectedSysCallError;
_message = @"no response";
}
}
return self;
}
- (BOOL)isCancelled {
return _statusCode == kQNRequestCancelled || _statusCode == -999;
}
- (BOOL)isTlsError{
if (_statusCode == NSURLErrorServerCertificateHasBadDate
|| _statusCode == NSURLErrorClientCertificateRejected
|| _statusCode == NSURLErrorClientCertificateRequired) {
return true;
} else {
return false;
}
}
- (BOOL)isQiniu {
// reqId is nill means the server is not qiniu
return ![self isNotQiniu];
}
- (BOOL)isNotQiniu {
// reqId is nill means the server is not qiniu
return (_statusCode == kQNMaliciousResponseError) || (_statusCode > 0 && _reqId == nil && _xlog == nil);
}
- (BOOL)isOK {
return (_statusCode >= 200 && _statusCode < 300) && _error == nil && (_reqId != nil || _xlog != nil);
}
- (BOOL)couldRetry {
if (![self isQiniu]) {
return YES;
}
if ([self isCtxExpiedError]) {
return YES;
}
if ([self isTransferAccelerationConfigureError]) {
return YES;
}
if (self.isCancelled
|| _statusCode == 100
|| (_statusCode > 300 && _statusCode < 400)
|| (_statusCode > 400 && _statusCode < 500 && _statusCode != 406)
|| _statusCode == 501 || _statusCode == 573
|| _statusCode == 608 || _statusCode == 612 || _statusCode == 614 || _statusCode == 616
|| _statusCode == 619 || _statusCode == 630 || _statusCode == 631 || _statusCode == 640
|| (_statusCode != kQNLocalIOError && _statusCode != kQNUnexpectedSysCallError && _statusCode < -1 && _statusCode > -1000)) {
return NO;
} else {
return YES;
}
}
- (BOOL)couldRegionRetry{
if (![self isQiniu]) {
return YES;
}
if ([self isTransferAccelerationConfigureError]) {
return YES;
}
if (self.isCancelled
|| _statusCode == 100
|| (_statusCode > 300 && _statusCode < 500 && _statusCode != 406)
|| _statusCode == 501 || _statusCode == 573 || _statusCode == 579
|| _statusCode == 608 || _statusCode == 612 || _statusCode == 614 || _statusCode == 616
|| _statusCode == 619 || _statusCode == 630 || _statusCode == 631 || _statusCode == 640
|| _statusCode == 701
|| (_statusCode != kQNLocalIOError && _statusCode != kQNUnexpectedSysCallError && _statusCode < -1 && _statusCode > -1000)) {
return NO;
} else {
return YES;
}
}
- (BOOL)couldHostRetry{
if (![self isQiniu]) {
return YES;
}
if ([self isTransferAccelerationConfigureError]) {
return NO;
}
if (self.isCancelled
|| _statusCode == 100
|| (_statusCode > 300 && _statusCode < 500 && _statusCode != 406)
|| _statusCode == 501 || _statusCode == 502 || _statusCode == 503
|| _statusCode == 571 || _statusCode == 573 || _statusCode == 579 || _statusCode == 599
|| _statusCode == 608 || _statusCode == 612 || _statusCode == 614 || _statusCode == 616
|| _statusCode == 619 || _statusCode == 630 || _statusCode == 631 || _statusCode == 640
|| _statusCode == 701
|| (_statusCode != kQNLocalIOError && _statusCode != kQNUnexpectedSysCallError && _statusCode < -1 && _statusCode > -1000)) {
return NO;
} else {
return YES;
}
}
- (BOOL)canConnectToHost{
if (_statusCode > 99 || self.isCancelled) {
return true;
} else {
return false;
}
}
- (BOOL)isHostUnavailable{
// timeout
if ([self isTransferAccelerationConfigureError] ||
_statusCode == 502 || _statusCode == 503 || _statusCode == 504 || _statusCode == 599) {
return true;
} else {
return false;
}
}
- (BOOL)isCtxExpiedError {
return _statusCode == 701 || (_statusCode == 612 && [_message containsString:@"no such uploadId"]);
}
- (BOOL)isTransferAccelerationConfigureError {
NSString *errorDesc = [NSString stringWithFormat:@"%@", self.error];
return [errorDesc containsString:@"transfer acceleration is not configured on this bucket"];
}
- (BOOL)isConnectionBroken {
return _statusCode == kQNNetworkError || _statusCode == NSURLErrorNotConnectedToInternet;
}
- (NSString *)description {
return [NSString stringWithFormat:@"<%@= id: %@, ver: %@, status: %d, requestId: %@, xlog: %@, xvia: %@, host: %@ time: %llu error: %@>", NSStringFromClass([self class]), _id, [QNUtils sdkVersion], _statusCode, _reqId, _xlog, _xvia, _host, _timeStamp, _error];
}
@end