/http/canned_responses.c
/* Blerg is (C) 2011 The Dominion of Awesome, and is distributed under a
 * BSD-style license.  Please see the COPYING file for details.
 */
#include <string.h>
#include <microhttpd.h>
#include "app.h"
#include "canned_responses.h"

void init_responses() {
	response_401 = MHD_create_response_from_data(strlen(CONTENT_401), CONTENT_401, MHD_NO, MHD_NO);  
	response_403 = MHD_create_response_from_data(strlen(CONTENT_403), CONTENT_403, MHD_NO, MHD_NO);
	response_404 = MHD_create_response_from_data(strlen(CONTENT_404), CONTENT_404, MHD_NO, MHD_NO);
	response_405 = MHD_create_response_from_data(strlen(CONTENT_405), CONTENT_405, MHD_NO, MHD_NO);
	response_JSON_Success = MHD_create_response_from_data(strlen(JSON_SUCCESS), JSON_SUCCESS, MHD_NO, MHD_NO);
	response_JSON_Failure = MHD_create_response_from_data(strlen(JSON_FAILURE), JSON_FAILURE, MHD_NO, MHD_NO);
}

#define OPAQUE "d29fb6db8f21a6e99903651a9f87470e"
int respond_401(struct MHD_Connection *connection, int signal_stale) {
	return MHD_queue_auth_fail_response(connection, REALM, OPAQUE, response_401, signal_stale);    
}

int respond_403(struct MHD_Connection *connection) {
	return MHD_queue_response(connection, MHD_HTTP_FORBIDDEN, response_403);
}

int respond_404(struct MHD_Connection *connection) {
	return MHD_queue_response(connection, MHD_HTTP_NOT_FOUND, response_404);
}

int respond_405(struct MHD_Connection *connection) {
	return MHD_queue_response(connection, MHD_HTTP_METHOD_NOT_ALLOWED, response_405);
}

int respond_JSON_Success(struct MHD_Connection *connection) {
	return MHD_queue_response(connection, MHD_HTTP_OK, response_JSON_Success);
}

int respond_JSON_Failure(struct MHD_Connection *connection) {
	return MHD_queue_response(connection, MHD_HTTP_OK, response_JSON_Failure);
}