Files
GLEGram-iOS/submodules/MtProtoKit/Sources/MTHttpRequestOperation.m
T
Leeksov 4647310322 GLEGram 12.5 — Initial public release
Based on Swiftgram 12.5 (Telegram iOS 12.5).
All GLEGram features ported and organized in GLEGram/ folder.

Features: Ghost Mode, Saved Deleted Messages, Content Protection Bypass,
Font Replacement, Fake Profile, Chat Export, Plugin System, and more.

See CHANGELOG_12.5.md for full details.
2026-04-06 09:48:12 +03:00

59 lines
2.0 KiB
Objective-C

#import <MtProtoKit/MTHttpRequestOperation.h>
#import <MtProtoKit/MTDisposable.h>
#import <MtProtoKit/MTSignal.h>
@implementation MTHttpResponse
- (instancetype)initWithHeaders:(NSDictionary *)headers data:(NSData *)data {
self = [super init];
if (self != nil) {
_headers = headers;
_data = data;
}
return self;
}
@end
@implementation MTHttpRequestOperation
+ (MTSignal *)dataForHttpUrl:(NSURL *)url {
return [self dataForHttpUrl:url headers:nil];
}
+ (MTSignal *)dataForHttpUrl:(NSURL *)url headers:(NSDictionary *)headers {
return [[MTSignal alloc] initWithGenerator:^id<MTDisposable>(MTSubscriber *subscriber) {
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[headers enumerateKeysAndObjectsUsingBlock:^(NSString *key, NSString *value, __unused BOOL *stop) {
[request setValue:value forHTTPHeaderField:key];
}];
NSURLSessionDataTask *dataTask = [[NSURLSession sharedSession] dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse * response, NSError *error) {
if (error) {
[subscriber putError:error];
} else {
if ([response isKindOfClass:[NSHTTPURLResponse class]]) {
NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response;
MTHttpResponse *result = [[MTHttpResponse alloc] initWithHeaders:httpResponse.allHeaderFields data:data];
[subscriber putNext:result];
[subscriber putCompletion];
} else {
[subscriber putError:nil];
}
}
}];
[dataTask resume];
__weak NSURLSessionDataTask *weakDataTask = dataTask;
return [[MTBlockDisposable alloc] initWithBlock:^
{
__strong NSURLSessionDataTask *strongDataTask = weakDataTask;
if (strongDataTask) {
[strongDataTask cancel];
}
}];
}];
}
@end