Files
armorpaint/base/sources/backends/apple_net.m
T

42 lines
2.4 KiB
Objective-C
Raw Normal View History

2025-02-26 08:47:09 +01:00
#include <iron_net.h>
2024-11-10 22:11:29 +01:00
#import <Foundation/Foundation.h>
2025-09-07 22:38:35 +02:00
static NSURLSession *session = nil;
2025-10-15 18:39:55 +02:00
void iron_https_request(const char *url_base, const char *url_path, const char *data, int port, int method, iron_http_callback_t callback, void *callbackdata) {
2025-09-07 23:37:41 +02:00
if (session == nil) {
NSURLSessionConfiguration *sessionConfiguration = [NSURLSessionConfiguration defaultSessionConfiguration];
2025-10-15 18:39:55 +02:00
session = [NSURLSession sessionWithConfiguration:sessionConfiguration];
2025-09-07 23:37:41 +02:00
}
2025-10-15 18:39:55 +02:00
NSString *urlstring = @"https://";
urlstring = [urlstring stringByAppendingString:[NSString stringWithUTF8String:url_base]];
urlstring = [urlstring stringByAppendingString:@":"];
urlstring = [urlstring stringByAppendingString:[[NSNumber numberWithInt:port] stringValue]];
urlstring = [urlstring stringByAppendingString:@"/"];
urlstring = [urlstring stringByAppendingString:[NSString stringWithUTF8String:url_path]];
NSURL *aUrl = [NSURL URLWithString:urlstring];
2024-11-10 22:11:29 +01:00
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:aUrl];
2025-10-15 18:39:55 +02:00
request.HTTPMethod = method == IRON_HTTP_GET ? @"GET" : @"POST";
2024-11-10 22:11:29 +01:00
if (data != 0) {
NSString *datastring = [NSString stringWithUTF8String:data];
2025-10-15 18:39:55 +02:00
request.HTTPBody = [datastring dataUsingEncoding:NSUTF8StringEncoding];
2024-11-10 22:11:29 +01:00
}
2025-10-15 18:39:55 +02:00
NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request
completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response;
dispatch_async(dispatch_get_main_queue(), ^{
char *b = (char *)[data bytes];
int len = [data length];
char *result = malloc(len + 1);
memcpy(result, b, len);
result[len] = 0;
callback(result, callbackdata);
free(result);
});
}];
2024-11-10 22:11:29 +01:00
[dataTask resume];
}