hammerspoon/Pods/CocoaHTTPServer/Extensions/WebDAV/PUTResponse.m

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