Files
GLEGram-iOS/submodules/Stripe/Sources/STPAPIPostRequest.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

52 lines
1.9 KiB
Objective-C
Executable File

//
// STPAPIPostRequest.m
// Stripe
//
// Created by Jack Flintermann on 10/14/15.
// Copyright © 2015 Stripe, Inc. All rights reserved.
//
#import "STPAPIPostRequest.h"
#import "STPAPIClient.h"
#import "STPAPIClient+Private.h"
#import "StripeError.h"
#import "STPDispatchFunctions.h"
@implementation STPAPIPostRequest
+ (void)startWithAPIClient:(STPAPIClient *)apiClient
endpoint:(NSString *)endpoint
postData:(NSData *)postData
serializer:(id<STPAPIResponseDecodable>)serializer
completion:(STPAPIPostResponseBlock)completion {
NSURL *url = [apiClient.apiURL URLByAppendingPathComponent:endpoint];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url];
request.HTTPMethod = @"POST";
request.HTTPBody = postData;
[[apiClient.urlSession dataTaskWithRequest:request completionHandler:^(NSData * _Nullable body, NSURLResponse * _Nullable response, NSError * _Nullable error) {
NSDictionary *jsonDictionary = body ? [NSJSONSerialization JSONObjectWithData:body options:0 error:NULL] : nil;
id<STPAPIResponseDecodable> responseObject = [[serializer class] decodedObjectFromAPIResponse:jsonDictionary];
NSError *returnedError = [NSError stp_errorFromStripeResponse:jsonDictionary] ?: error;
if ((!responseObject || ![response isKindOfClass:[NSHTTPURLResponse class]]) && !returnedError) {
returnedError = [NSError stp_genericFailedToParseResponseError];
}
NSHTTPURLResponse *httpResponse;
if ([response isKindOfClass:[NSHTTPURLResponse class]]) {
httpResponse = (NSHTTPURLResponse *)response;
}
stpDispatchToMainThreadIfNecessary(^{
if (returnedError) {
completion(nil, httpResponse, returnedError);
} else {
completion(responseObject, httpResponse, nil);
}
});
}] resume];
}
@end