From 7b02207537d35bfa1714bf8beafc921f717d100a Mon Sep 17 00:00:00 2001
From: 单军华
Date: Wed, 11 Jul 2018 10:47:42 +0800
Subject: [PATCH] 首次上传

---
 screendisplay/screendisplay/Classes/Network/PPNetworkHelper/PPNetworkHelper.m |  413 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 413 insertions(+), 0 deletions(-)

diff --git a/screendisplay/screendisplay/Classes/Network/PPNetworkHelper/PPNetworkHelper.m b/screendisplay/screendisplay/Classes/Network/PPNetworkHelper/PPNetworkHelper.m
new file mode 100755
index 0000000..3f2d57e
--- /dev/null
+++ b/screendisplay/screendisplay/Classes/Network/PPNetworkHelper/PPNetworkHelper.m
@@ -0,0 +1,413 @@
+//
+//  PPNetworkHelper.m
+//  PPNetworkHelper
+//
+//  Created by AndyPang on 16/8/12.
+//  Copyright �� 2016��� AndyPang. All rights reserved.
+//
+
+
+#import "PPNetworkHelper.h"
+#import "AFNetworking.h"
+#import "AFNetworkActivityIndicatorManager.h"
+
+#ifdef DEBUG
+#define PPLog(...) printf("[%s] %s [���%d���]: %s\n", __TIME__ ,__PRETTY_FUNCTION__ ,__LINE__, [[NSString stringWithFormat:__VA_ARGS__] UTF8String])
+#else
+#define PPLog(...)
+#endif
+
+#define NSStringFormat(format,...) [NSString stringWithFormat:format,##__VA_ARGS__]
+
+@implementation PPNetworkHelper
+
+static BOOL _isOpenLog;   // ���������������������������
+static NSMutableArray *_allSessionTask;
+static AFHTTPSessionManager *_sessionManager;
+
+#pragma mark - ������������������
++ (void)networkStatusWithBlock:(PPNetworkStatus)networkStatus {
+    
+    [[AFNetworkReachabilityManager sharedManager] setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
+        switch (status) {
+            case AFNetworkReachabilityStatusUnknown:
+                networkStatus ? networkStatus(PPNetworkStatusUnknown) : nil;
+                if (_isOpenLog) PPLog(@"������������");
+                break;
+            case AFNetworkReachabilityStatusNotReachable:
+                networkStatus ? networkStatus(PPNetworkStatusNotReachable) : nil;
+                if (_isOpenLog) PPLog(@"���������");
+                break;
+            case AFNetworkReachabilityStatusReachableViaWWAN:
+                networkStatus ? networkStatus(PPNetworkStatusReachableViaWWAN) : nil;
+                if (_isOpenLog) PPLog(@"������������������");
+                break;
+            case AFNetworkReachabilityStatusReachableViaWiFi:
+                networkStatus ? networkStatus(PPNetworkStatusReachableViaWiFi) : nil;
+                if (_isOpenLog) PPLog(@"WIFI");
+                break;
+        }
+    }];
+
+}
+
++ (BOOL)isNetwork {
+    return [AFNetworkReachabilityManager sharedManager].reachable;
+}
+
++ (BOOL)isWWANNetwork {
+    return [AFNetworkReachabilityManager sharedManager].reachableViaWWAN;
+}
+
++ (BOOL)isWiFiNetwork {
+    return [AFNetworkReachabilityManager sharedManager].reachableViaWiFi;
+}
+
++ (void)openLog {
+    _isOpenLog = YES;
+}
+
++ (void)closeLog {
+    _isOpenLog = NO;
+}
+
++ (void)cancelAllRequest {
+    // ���������
+    @synchronized(self) {
+        [[self allSessionTask] enumerateObjectsUsingBlock:^(NSURLSessionTask  *_Nonnull task, NSUInteger idx, BOOL * _Nonnull stop) {
+            [task cancel];
+        }];
+        [[self allSessionTask] removeAllObjects];
+    }
+}
+
++ (void)cancelRequestWithURL:(NSString *)URL {
+    if (!URL) { return; }
+    @synchronized (self) {
+        [[self allSessionTask] enumerateObjectsUsingBlock:^(NSURLSessionTask  *_Nonnull task, NSUInteger idx, BOOL * _Nonnull stop) {
+            if ([task.currentRequest.URL.absoluteString hasPrefix:URL]) {
+                [task cancel];
+                [[self allSessionTask] removeObject:task];
+                *stop = YES;
+            }
+        }];
+    }
+}
+
+#pragma mark - GET���������������
++ (NSURLSessionTask *)GET:(NSString *)URL
+               parameters:(id)parameters
+                  success:(PPHttpRequestSuccess)success
+                  failure:(PPHttpRequestFailed)failure {
+    return [self GET:URL parameters:parameters responseCache:nil success:success failure:failure];
+}
+
+#pragma mark - POST���������������
++ (NSURLSessionTask *)POST:(NSString *)URL
+                parameters:(id)parameters
+                   success:(PPHttpRequestSuccess)success
+                   failure:(PPHttpRequestFailed)failure {
+    return [self POST:URL parameters:parameters responseCache:nil success:success failure:failure];
+}
+
+#pragma mark - GET������������������
++ (NSURLSessionTask *)GET:(NSString *)URL
+               parameters:(id)parameters
+            responseCache:(PPHttpRequestCache)responseCache
+                  success:(PPHttpRequestSuccess)success
+                  failure:(PPHttpRequestFailed)failure {
+    //������������
+    responseCache!=nil ? responseCache([PPNetworkCache httpCacheForURL:URL parameters:parameters]) : nil;
+    
+    NSURLSessionTask *sessionTask = [_sessionManager GET:URL parameters:parameters progress:^(NSProgress * _Nonnull uploadProgress) {
+        
+    } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
+        
+        if (_isOpenLog) {PPLog(@"responseObject = %@",responseObject);}
+        [[self allSessionTask] removeObject:task];
+        success ? success(responseObject) : nil;
+        //���������������������������
+        responseCache!=nil ? [PPNetworkCache setHttpCache:responseObject URL:URL parameters:parameters] : nil;
+        
+    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
+        
+        if (_isOpenLog) {PPLog(@"error = %@",error);}
+        [[self allSessionTask] removeObject:task];
+        failure ? failure(error) : nil;
+        
+    }];
+    // ������sessionTask���������
+    sessionTask ? [[self allSessionTask] addObject:sessionTask] : nil ;
+    
+    return sessionTask;
+}
+
+#pragma mark - POST������������������
++ (NSURLSessionTask *)POST:(NSString *)URL
+                parameters:(id)parameters
+             responseCache:(PPHttpRequestCache)responseCache
+                   success:(PPHttpRequestSuccess)success
+                   failure:(PPHttpRequestFailed)failure {
+    //������������
+    responseCache!=nil ? responseCache([PPNetworkCache httpCacheForURL:URL parameters:parameters]) : nil;
+    
+    NSURLSessionTask *sessionTask = [_sessionManager POST:URL parameters:parameters progress:^(NSProgress * _Nonnull uploadProgress) {
+        
+    } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
+        
+        if (_isOpenLog) {PPLog(@"responseObject = %@",responseObject);}
+        [[self allSessionTask] removeObject:task];
+        success ? success(responseObject) : nil;
+        //���������������������������
+        responseCache!=nil ? [PPNetworkCache setHttpCache:responseObject URL:URL parameters:parameters] : nil;
+        
+    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
+        
+        if (_isOpenLog) {PPLog(@"error = %@",error);}
+        [[self allSessionTask] removeObject:task];
+        failure ? failure(error) : nil;
+        
+    }];
+    
+    // ���������������sessionTask���������
+    sessionTask ? [[self allSessionTask] addObject:sessionTask] : nil ;
+    return sessionTask;
+}
+
+#pragma mark - ������������
++ (NSURLSessionTask *)uploadFileWithURL:(NSString *)URL
+                             parameters:(id)parameters
+                                   name:(NSString *)name
+                               filePath:(NSString *)filePath
+                               progress:(PPHttpProgress)progress
+                                success:(PPHttpRequestSuccess)success
+                                failure:(PPHttpRequestFailed)failure {
+    
+    NSURLSessionTask *sessionTask = [_sessionManager POST:URL parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData>  _Nonnull formData) {
+        NSError *error = nil;
+        [formData appendPartWithFileURL:[NSURL URLWithString:filePath] name:name error:&error];
+        (failure && error) ? failure(error) : nil;
+    } progress:^(NSProgress * _Nonnull uploadProgress) {
+        //������������
+        dispatch_sync(dispatch_get_main_queue(), ^{
+            progress ? progress(uploadProgress) : nil;
+        });
+    } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
+        
+        if (_isOpenLog) {PPLog(@"responseObject = %@",responseObject);}
+        [[self allSessionTask] removeObject:task];
+        success ? success(responseObject) : nil;
+        
+    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
+        
+        if (_isOpenLog) {PPLog(@"error = %@",error);}
+        [[self allSessionTask] removeObject:task];
+        failure ? failure(error) : nil;
+    }];
+    
+    // ������sessionTask���������
+    sessionTask ? [[self allSessionTask] addObject:sessionTask] : nil ;
+    
+    return sessionTask;
+}
+
+#pragma mark - ������������������
++ (NSURLSessionTask *)uploadImagesWithURL:(NSString *)URL
+                               parameters:(id)parameters
+                                     name:(NSString *)name
+                                   images:(NSArray<UIImage *> *)images
+                                fileNames:(NSArray<NSString *> *)fileNames
+                               imageScale:(CGFloat)imageScale
+                                imageType:(NSString *)imageType
+                                 progress:(PPHttpProgress)progress
+                                  success:(PPHttpRequestSuccess)success
+                                  failure:(PPHttpRequestFailed)failure {
+    NSURLSessionTask *sessionTask = [_sessionManager POST:URL parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData>  _Nonnull formData) {
+        
+        for (NSUInteger i = 0; i < images.count; i++) {
+            // ���������������������������������������������������
+            NSData *imageData = UIImageJPEGRepresentation(images[i], imageScale ?: 1.f);
+            // ������������������������, ���fileNames���nil���������
+            
+            NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
+            formatter.dateFormat = @"yyyyMMddHHmmss";
+            NSString *str = [formatter stringFromDate:[NSDate date]];
+            NSString *imageFileName = NSStringFormat(@"%@%ld.%@",str,i,imageType?:@"jpg");
+            
+            [formData appendPartWithFileData:imageData
+                                        name:name
+                                    fileName:fileNames ? NSStringFormat(@"%@.%@",fileNames[i],imageType?:@"jpg") : imageFileName
+                                    mimeType:NSStringFormat(@"image/%@",imageType ?: @"jpg")];
+        }
+        
+    } progress:^(NSProgress * _Nonnull uploadProgress) {
+        //������������
+        dispatch_sync(dispatch_get_main_queue(), ^{
+            progress ? progress(uploadProgress) : nil;
+        });
+    } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
+        
+        if (_isOpenLog) {PPLog(@"responseObject = %@",responseObject);}
+        [[self allSessionTask] removeObject:task];
+        success ? success(responseObject) : nil;
+        
+    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
+        
+        if (_isOpenLog) {PPLog(@"error = %@",error);}
+        [[self allSessionTask] removeObject:task];
+        failure ? failure(error) : nil;
+    }];
+    
+    // ������sessionTask���������
+    sessionTask ? [[self allSessionTask] addObject:sessionTask] : nil ;
+    
+    return sessionTask;
+}
+
+#pragma mark - ������������
++ (NSURLSessionTask *)downloadWithURL:(NSString *)URL
+                              fileDir:(NSString *)fileDir
+                             progress:(PPHttpProgress)progress
+                              success:(void(^)(NSString *))success
+                              failure:(PPHttpRequestFailed)failure {
+    NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:URL]];
+    __block NSURLSessionDownloadTask *downloadTask = [_sessionManager downloadTaskWithRequest:request progress:^(NSProgress * _Nonnull downloadProgress) {
+        //������������
+        dispatch_sync(dispatch_get_main_queue(), ^{
+            progress ? progress(downloadProgress) : nil;
+        });
+    } destination:^NSURL * _Nonnull(NSURL * _Nonnull targetPath, NSURLResponse * _Nonnull response) {
+        //������������������
+        NSString *downloadDir = [[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:fileDir ? fileDir : @"Download"];
+        //���������������������
+        NSFileManager *fileManager = [NSFileManager defaultManager];
+        //������Download������
+        [fileManager createDirectoryAtPath:downloadDir withIntermediateDirectories:YES attributes:nil error:nil];
+        //������������������
+        NSString *filePath = [downloadDir stringByAppendingPathComponent:response.suggestedFilename];
+        //���������������������URL������
+        return [NSURL fileURLWithPath:filePath];
+        
+    } completionHandler:^(NSURLResponse * _Nonnull response, NSURL * _Nullable filePath, NSError * _Nullable error) {
+        
+        [[self allSessionTask] removeObject:downloadTask];
+        if(failure && error) {failure(error) ; return ;};
+        success ? success(filePath.absoluteString /** NSURL->NSString*/) : nil;
+        
+    }];
+    //������������
+    [downloadTask resume];
+    // ������sessionTask���������
+    downloadTask ? [[self allSessionTask] addObject:downloadTask] : nil ;
+    
+    return downloadTask;
+}
+
+/**
+ ������������������������task������
+ */
++ (NSMutableArray *)allSessionTask {
+    if (!_allSessionTask) {
+        _allSessionTask = [[NSMutableArray alloc] init];
+    }
+    return _allSessionTask;
+}
+
+#pragma mark - ���������AFHTTPSessionManager������������
+/**
+ ������������������������
+ */
++ (void)load {
+    [[AFNetworkReachabilityManager sharedManager] startMonitoring];
+}
+/**
+ *  ���������HTTP������������������AFHTTPSessionManager
+ *  ������������������:http://www.jianshu.com/p/5969bbb4af9f
+ */
++ (void)initialize {
+    _sessionManager = [AFHTTPSessionManager manager];
+    _sessionManager.requestSerializer.timeoutInterval = 30.f;
+    _sessionManager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/html", @"text/json", @"text/plain", @"text/javascript", @"text/xml", @"image/*", nil];
+    // ������������������������������
+    [AFNetworkActivityIndicatorManager sharedManager].enabled = YES;
+}
+
+#pragma mark - ������AFHTTPSessionManager������������
+
++ (void)setAFHTTPSessionManagerProperty:(void (^)(AFHTTPSessionManager *))sessionManager {
+    sessionManager ? sessionManager(_sessionManager) : nil;
+}
+
++ (void)setRequestSerializer:(PPRequestSerializer)requestSerializer {
+    _sessionManager.requestSerializer = requestSerializer==PPRequestSerializerHTTP ? [AFHTTPRequestSerializer serializer] : [AFJSONRequestSerializer serializer];
+}
+
++ (void)setResponseSerializer:(PPResponseSerializer)responseSerializer {
+    _sessionManager.responseSerializer = responseSerializer==PPResponseSerializerHTTP ? [AFHTTPResponseSerializer serializer] : [AFJSONResponseSerializer serializer];
+}
+
++ (void)setRequestTimeoutInterval:(NSTimeInterval)time {
+    _sessionManager.requestSerializer.timeoutInterval = time;
+}
+
++ (void)setValue:(NSString *)value forHTTPHeaderField:(NSString *)field {
+    [_sessionManager.requestSerializer setValue:value forHTTPHeaderField:field];
+}
+
++ (void)openNetworkActivityIndicator:(BOOL)open {
+    [[AFNetworkActivityIndicatorManager sharedManager] setEnabled:open];
+}
+
++ (void)setSecurityPolicyWithCerPath:(NSString *)cerPath validatesDomainName:(BOOL)validatesDomainName {
+    NSData *cerData = [NSData dataWithContentsOfFile:cerPath];
+    // ������������������������
+    AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate];
+    // ������������������������������(������������)������������������YES
+    securityPolicy.allowInvalidCertificates = YES;
+    // ������������������������������������YES;
+    securityPolicy.validatesDomainName = validatesDomainName;
+    securityPolicy.pinnedCertificates = [[NSSet alloc] initWithObjects:cerData, nil];
+    
+    [_sessionManager setSecurityPolicy:securityPolicy];
+}
+
+@end
+
+
+#pragma mark - NSDictionary,NSArray���������
+/*
+ ************************************************************************************
+ *������NSDictionary���NSArray���������, ���������������json������������������
+ ************************************************************************************
+ */
+
+#ifdef DEBUG
+@implementation NSArray (PP)
+
+- (NSString *)descriptionWithLocale:(id)locale {
+    NSMutableString *strM = [NSMutableString stringWithString:@"(\n"];
+    [self enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
+        [strM appendFormat:@"\t%@,\n", obj];
+    }];
+    [strM appendString:@")"];
+    
+    return strM;
+}
+
+@end
+
+@implementation NSDictionary (PP)
+
+- (NSString *)descriptionWithLocale:(id)locale {
+    NSMutableString *strM = [NSMutableString stringWithString:@"{\n"];
+    [self enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
+        [strM appendFormat:@"\t%@ = %@;\n", key, obj];
+    }];
+    
+    [strM appendString:@"}\n"];
+    
+    return strM;
+}
+@end
+#endif
+

--
Gitblit v1.8.0