mirror of
https://github.com/SoPat712/YTLitePlus.git
synced 2025-10-29 20:10:41 -04:00
179 lines
6.6 KiB
Objective-C
179 lines
6.6 KiB
Objective-C
//
|
|
// FLEXNetworkTransaction.h
|
|
// Flipboard
|
|
//
|
|
// Created by Ryan Olson on 2/8/15.
|
|
// Copyright (c) 2020 FLEX Team. All rights reserved.
|
|
//
|
|
|
|
#import <UIKit/UIKit.h>
|
|
#import "Firestore.h"
|
|
|
|
typedef NS_ENUM(NSInteger, FLEXNetworkTransactionState) {
|
|
FLEXNetworkTransactionStateUnstarted = -1,
|
|
/// This is the default; it's usually nonsense for a request to be marked as "unstarted"
|
|
FLEXNetworkTransactionStateAwaitingResponse = 0,
|
|
FLEXNetworkTransactionStateReceivingData,
|
|
FLEXNetworkTransactionStateFinished,
|
|
FLEXNetworkTransactionStateFailed
|
|
};
|
|
|
|
typedef NS_ENUM(NSUInteger, FLEXWebsocketMessageDirection) {
|
|
FLEXWebsocketIncoming = 1,
|
|
FLEXWebsocketOutgoing,
|
|
};
|
|
|
|
/// The shared base class for all types of network transactions.
|
|
/// Subclasses should implement the descriptions and details properties, and assign a thumbnail.
|
|
@interface FLEXNetworkTransaction : NSObject {
|
|
@protected
|
|
|
|
NSString *_primaryDescription;
|
|
NSString *_secondaryDescription;
|
|
NSString *_tertiaryDescription;
|
|
}
|
|
|
|
+ (instancetype)withStartTime:(NSDate *)startTime;
|
|
|
|
+ (NSString *)readableStringFromTransactionState:(FLEXNetworkTransactionState)state;
|
|
|
|
@property (nonatomic) NSError *error;
|
|
/// Subclasses can override to provide error state based on response data as well
|
|
@property (nonatomic, readonly) BOOL displayAsError;
|
|
@property (nonatomic, readonly) NSDate *startTime;
|
|
|
|
@property (nonatomic) FLEXNetworkTransactionState state;
|
|
@property (nonatomic) int64_t receivedDataLength;
|
|
/// A small thumbnail to preview the type of/the response
|
|
@property (nonatomic) UIImage *thumbnail;
|
|
|
|
/// The most prominent line of the cell. Typically a URL endpoint or other distinguishing attribute.
|
|
/// This line turns red when the transaction indicates an error.
|
|
@property (nonatomic, readonly) NSString *primaryDescription;
|
|
/// Something less important, such as a blob of data or the URL's domain.
|
|
@property (nonatomic, readonly) NSString *secondaryDescription;
|
|
/// Minor details to display at the bottom of the cell, such as a timestamp, HTTP method, or status.
|
|
@property (nonatomic, readonly) NSString *tertiaryDescription;
|
|
|
|
/// The string to copy when the user selects the "copy" action
|
|
@property (nonatomic, readonly) NSString *copyString;
|
|
|
|
/// Whether or not this request should show up when the user searches for a given string
|
|
- (BOOL)matchesQuery:(NSString *)filterString;
|
|
|
|
/// For internal use
|
|
- (NSString *)timestampStringFromRequestDate:(NSDate *)date;
|
|
|
|
@end
|
|
|
|
/// The shared base class for all NSURL-API-related transactions.
|
|
/// Descriptions are generated by this class using the URL provided by subclasses.
|
|
@interface FLEXURLTransaction : FLEXNetworkTransaction
|
|
|
|
+ (instancetype)withRequest:(NSURLRequest *)request startTime:(NSDate *)startTime;
|
|
|
|
@property (nonatomic, readonly) NSURLRequest *request;
|
|
/// Subclasses should implement for when the transaction is complete
|
|
@property (nonatomic, readonly) NSArray<NSString *> *details;
|
|
|
|
@end
|
|
|
|
|
|
@interface FLEXHTTPTransaction : FLEXURLTransaction
|
|
|
|
+ (instancetype)request:(NSURLRequest *)request identifier:(NSString *)requestID;
|
|
|
|
@property (nonatomic, readonly) NSString *requestID;
|
|
@property (nonatomic) NSURLResponse *response;
|
|
@property (nonatomic, copy) NSString *requestMechanism;
|
|
|
|
@property (nonatomic) NSTimeInterval latency;
|
|
@property (nonatomic) NSTimeInterval duration;
|
|
|
|
/// Populated lazily. Handles both normal HTTPBody data and HTTPBodyStreams.
|
|
@property (nonatomic, readonly) NSData *cachedRequestBody;
|
|
|
|
@end
|
|
|
|
|
|
@interface FLEXWebsocketTransaction : FLEXURLTransaction
|
|
|
|
+ (instancetype)withMessage:(NSURLSessionWebSocketMessage *)message
|
|
task:(NSURLSessionWebSocketTask *)task
|
|
direction:(FLEXWebsocketMessageDirection)direction API_AVAILABLE(ios(13.0));
|
|
|
|
+ (instancetype)withMessage:(NSURLSessionWebSocketMessage *)message
|
|
task:(NSURLSessionWebSocketTask *)task
|
|
direction:(FLEXWebsocketMessageDirection)direction
|
|
startTime:(NSDate *)started API_AVAILABLE(ios(13.0));
|
|
|
|
//@property (nonatomic, readonly) NSURLSessionWebSocketTask *task;
|
|
@property (nonatomic, readonly) NSURLSessionWebSocketMessage *message API_AVAILABLE(ios(13.0));
|
|
@property (nonatomic, readonly) FLEXWebsocketMessageDirection direction API_AVAILABLE(ios(13.0));
|
|
|
|
@property (nonatomic, readonly) int64_t dataLength API_AVAILABLE(ios(13.0));
|
|
|
|
@end
|
|
|
|
|
|
typedef NS_ENUM(NSUInteger, FLEXFIRTransactionDirection) {
|
|
FLEXFIRTransactionDirectionNone,
|
|
FLEXFIRTransactionDirectionPush,
|
|
FLEXFIRTransactionDirectionPull,
|
|
};
|
|
|
|
typedef NS_ENUM(NSUInteger, FLEXFIRRequestType) {
|
|
FLEXFIRRequestTypeNotFirebase,
|
|
FLEXFIRRequestTypeFetchQuery,
|
|
FLEXFIRRequestTypeFetchDocument,
|
|
FLEXFIRRequestTypeSetData,
|
|
FLEXFIRRequestTypeUpdateData,
|
|
FLEXFIRRequestTypeAddDocument,
|
|
FLEXFIRRequestTypeDeleteDocument,
|
|
};
|
|
|
|
@interface FLEXFirebaseSetDataInfo : NSObject
|
|
/// The data that was set
|
|
@property (nonatomic, readonly) NSDictionary *documentData;
|
|
/// \c nil if \c mergeFields is populated
|
|
@property (nonatomic, readonly) NSNumber *merge;
|
|
/// \c nil if \c merge is populated
|
|
@property (nonatomic, readonly) NSArray *mergeFields;
|
|
@end
|
|
|
|
@interface FLEXFirebaseTransaction : FLEXNetworkTransaction
|
|
|
|
+ (instancetype)queryFetch:(FIRQuery *)initiator;
|
|
+ (instancetype)documentFetch:(FIRDocumentReference *)initiator;
|
|
+ (instancetype)setData:(FIRDocumentReference *)initiator
|
|
data:(NSDictionary *)data
|
|
merge:(NSNumber *)merge
|
|
mergeFields:(NSArray *)mergeFields;
|
|
+ (instancetype)updateData:(FIRDocumentReference *)initiator data:(NSDictionary *)data;
|
|
+ (instancetype)addDocument:(FIRCollectionReference *)initiator document:(FIRDocumentReference *)doc;
|
|
+ (instancetype)deleteDocument:(FIRDocumentReference *)initiator;
|
|
|
|
@property (nonatomic, readonly) FLEXFIRTransactionDirection direction;
|
|
@property (nonatomic, readonly) FLEXFIRRequestType requestType;
|
|
|
|
@property (nonatomic, readonly) id initiator;
|
|
@property (nonatomic, readonly) FIRQuery *initiator_query;
|
|
@property (nonatomic, readonly) FIRDocumentReference *initiator_doc;
|
|
@property (nonatomic, readonly) FIRCollectionReference *initiator_collection;
|
|
|
|
/// Only used for fetch types
|
|
@property (nonatomic, copy) NSArray<FIRDocumentSnapshot *> *documents;
|
|
/// Only used for the "set data" type
|
|
@property (nonatomic, readonly) FLEXFirebaseSetDataInfo *setDataInfo;
|
|
/// Only used for the "update data" type
|
|
@property (nonatomic, readonly) NSDictionary *updateData;
|
|
/// Only used for the "add document" type
|
|
@property (nonatomic, readonly) FIRDocumentReference *addedDocument;
|
|
|
|
@property (nonatomic, readonly) NSString *path;
|
|
|
|
//@property (nonatomic, readonly) NSString *responseString;
|
|
//@property (nonatomic, readonly) NSDictionary *responseObject;
|
|
|
|
@end
|