mirror of
https://github.com/leanote/leanote-ios.git
synced 2025-10-14 15:11:00 +00:00
70 lines
2.4 KiB
Objective-C
Executable File
70 lines
2.4 KiB
Objective-C
Executable File
#import "LeaURLRequest.h"
|
|
#import "NSString+Helpers.h"
|
|
|
|
|
|
@implementation LeaURLRequest
|
|
|
|
+ (NSURLRequest *)requestWithURL:(NSURL *)url userAgent:(NSString *)userAgent
|
|
{
|
|
return [self mutableRequestWithURL:url userAgent:userAgent];
|
|
}
|
|
|
|
+ (NSURLRequest *)requestForAuthenticationWithURL:(NSURL *)loginUrl
|
|
redirectURL:(NSURL *)redirectURL
|
|
username:(NSString *)username
|
|
password:(NSString *)password
|
|
bearerToken:(NSString *)bearerToken
|
|
userAgent:(NSString *)userAgent
|
|
{
|
|
NSParameterAssert(loginUrl);
|
|
NSParameterAssert(redirectURL);
|
|
NSParameterAssert(username);
|
|
NSParameterAssert(password != nil || bearerToken != nil);
|
|
|
|
NSMutableURLRequest *request = [self mutableRequestWithURL:loginUrl userAgent:userAgent];
|
|
|
|
// If we've got a token, let's make sure the password never gets sent
|
|
NSString *encodedPassword = bearerToken.length == 0 ? [password stringByUrlEncoding] : nil;
|
|
encodedPassword = encodedPassword ?: [NSString string];
|
|
|
|
// Method!
|
|
[request setHTTPMethod:@"POST"];
|
|
|
|
// Auth Body
|
|
NSString *requestBody = [NSString stringWithFormat:@"%@=%@&%@=%@&%@=%@",
|
|
@"log", [username stringByUrlEncoding],
|
|
@"pwd", encodedPassword,
|
|
@"redirect_to", [redirectURL.absoluteString stringByUrlEncoding]];
|
|
|
|
request.HTTPBody = [requestBody dataUsingEncoding:NSUTF8StringEncoding];
|
|
|
|
// Auth Headers
|
|
[request setValue:[NSString stringWithFormat:@"%lu", requestBody.length] forHTTPHeaderField:@"Content-Length"];
|
|
[request addValue:@"*/*" forHTTPHeaderField:@"Accept"];
|
|
|
|
// Bearer Token
|
|
if (bearerToken) {
|
|
[request setValue:[NSString stringWithFormat:@"Bearer %@", bearerToken] forHTTPHeaderField:@"Authorization"];
|
|
}
|
|
|
|
return request;
|
|
}
|
|
|
|
#pragma mark - Private Methods
|
|
|
|
+ (NSMutableURLRequest *)mutableRequestWithURL:(NSURL *)url userAgent:(NSString *)userAgent
|
|
{
|
|
NSParameterAssert(url);
|
|
|
|
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
|
|
request.cachePolicy = NSURLRequestReturnCacheDataElseLoad;
|
|
|
|
if (userAgent) {
|
|
[request setValue:userAgent forHTTPHeaderField:@"User-Agent"];
|
|
}
|
|
|
|
return request;
|
|
}
|
|
|
|
@end
|