#import <Cocoa/Cocoa.h>

@class HTTPRequest;

@protocol HTTPRequestDelegate <NSObject>

- (void) requestCompleted: (HTTPRequest *) request;

@optional
- (void) request: (HTTPRequest *) request failedWithError: (NSError *) error;

@end


@interface HTTPRequest : NSObject {
	NSMutableData *result;
	NSString *baseUrl;
	NSMutableDictionary *parameters;
	id <HTTPRequestDelegate> delegate;
	NSInteger statusCode;
	NSStringEncoding responseEncoding;
	id putBody;
	BOOL completed;
}

@property (copy) NSString *baseUrl;
@property (assign) id <HTTPRequestDelegate> delegate;
@property (readonly,assign) NSInteger statusCode;
@property (retain) NSMutableData *result;
@property (retain) id putBody;
@property (assign) BOOL completed;

- (id) initWithBaseURL: (NSString *) url;

- (NSString *) stringResult;
- (id) jsonResult;

- (void) send;
- (BOOL) sendSynchronousError: (NSError **) error;

- (void) setValue: (id) value forParameter: (NSString *) parameter;
- (NSString *) valueForParameter: (NSString *) param;

- (NSURL *) fullUrl;

@end
