70 lines
1.8 KiB
Objective-C
70 lines
1.8 KiB
Objective-C
#import "PUTResponse.h"
|
|
#import "HTTPLogging.h"
|
|
|
|
// HTTP methods: http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html
|
|
// HTTP headers: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html
|
|
// HTTP status codes: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
|
|
|
|
static const int httpLogLevel = HTTP_LOG_LEVEL_WARN;
|
|
|
|
@implementation PUTResponse
|
|
|
|
- (id) initWithFilePath:(NSString*)path headers:(NSDictionary*)headers body:(id)body {
|
|
if ((self = [super init])) {
|
|
if ([headers objectForKey:@"Content-Range"]) {
|
|
HTTPLogError(@"Content-Range not supported for upload to \"%@\"", path);
|
|
_status = 400;
|
|
} else {
|
|
BOOL overwrite = [[NSFileManager defaultManager] fileExistsAtPath:path];
|
|
BOOL success;
|
|
if ([body isKindOfClass:[NSString class]]) {
|
|
[[NSFileManager defaultManager] removeItemAtPath:path error:NULL];
|
|
success = [[NSFileManager defaultManager] moveItemAtPath:body toPath:path error:NULL];
|
|
} else {
|
|
success = [body writeToFile:path atomically:YES];
|
|
}
|
|
if (success) {
|
|
_status = overwrite ? 200 : 201;
|
|
} else {
|
|
HTTPLogError(@"Failed writing upload to \"%@\"", path);
|
|
_status = 403;
|
|
}
|
|
}
|
|
}
|
|
return self;
|
|
}
|
|
|
|
- (id) initWithFilePath:(NSString*)path headers:(NSDictionary*)headers bodyData:(NSData*)body {
|
|
return [self initWithFilePath:path headers:headers body:body];
|
|
}
|
|
|
|
- (id) initWithFilePath:(NSString*)path headers:(NSDictionary*)headers bodyFile:(NSString*)body {
|
|
return [self initWithFilePath:path headers:headers body:body];
|
|
}
|
|
|
|
- (UInt64) contentLength {
|
|
return 0;
|
|
}
|
|
|
|
- (UInt64) offset {
|
|
return 0;
|
|
}
|
|
|
|
- (void) setOffset:(UInt64)offset {
|
|
;
|
|
}
|
|
|
|
- (NSData*) readDataOfLength:(NSUInteger)length {
|
|
return nil;
|
|
}
|
|
|
|
- (BOOL) isDone {
|
|
return YES;
|
|
}
|
|
|
|
- (NSInteger) status {
|
|
return _status;
|
|
}
|
|
|
|
@end
|