This file is part of GNUnet.
Copyright (C) 2012-2015 GNUnet e.V.
- GNUnet is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published
- by the Free Software Foundation; either version 3, or (at your
- option) any later version.
-
- GNUnet is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with GNUnet; see the file COPYING. If not, write to the
- Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- Boston, MA 02110-1301, USA.
+ GNUnet is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Affero General Public License as published
+ by the Free Software Foundation, either version 3 of the License,
+ or (at your option) any later version.
+
+ GNUnet is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Affero General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/**
* @author Martin Schanzenbach
* @param handle Handle to clean up
*/
static void
-cleanup_handle (struct RequestHandle *handle)
+cleanup_handle (void *cls)
{
+ struct RequestHandle *handle = cls;
struct EgoEntry *ego_entry;
struct EgoEntry *ego_tmp;
{
struct RequestHandle *handle = cls;
struct MHD_Response *resp;
- char *json_error;
+ json_t *json_error = json_object();
+ char *response;
if (NULL == handle->emsg)
handle->emsg = GNUNET_strdup(GNUNET_REST_ERROR_UNKNOWN);
- GNUNET_asprintf (&json_error, "{\"error\": \"%s\"}", handle->emsg);
+ json_object_set_new(json_error,"error", json_string(handle->emsg));
if (0 == handle->response_code)
handle->response_code = MHD_HTTP_OK;
-
- resp = GNUNET_REST_create_response (json_error);
+ response = json_dumps (json_error, 0);
+ resp = GNUNET_REST_create_response (response);
handle->proc (handle->proc_cls, resp, handle->response_code);
- cleanup_handle (handle);
- GNUNET_free(json_error);
+ json_decref(json_error);
+ GNUNET_free(response);
+ GNUNET_SCHEDULER_add_now (&cleanup_handle, handle);
}
/**
handle->proc (handle->proc_cls, resp, MHD_HTTP_OK);
GNUNET_free(result_str);
GNUNET_free(public_key_string);
- cleanup_handle (handle);
+ GNUNET_SCHEDULER_add_now (&cleanup_handle, handle);
}
/**
json_decref (json_root);
handle->proc (handle->proc_cls, resp, MHD_HTTP_OK);
GNUNET_free(result_str);
- cleanup_handle (handle);
+ GNUNET_SCHEDULER_add_now (&cleanup_handle, handle);
}
/**
}
resp = GNUNET_REST_create_response (NULL);
handle->proc (handle->proc_cls, resp, handle->response_code);
- cleanup_handle (handle);
+ GNUNET_SCHEDULER_add_now (&cleanup_handle, handle);
}
/**
json_decref (data_js);
resp = GNUNET_REST_create_response (NULL);
handle->proc (handle->proc_cls, resp, MHD_HTTP_NOT_FOUND);
- cleanup_handle (handle);
+ GNUNET_SCHEDULER_add_now (&cleanup_handle, handle);
return;
}
//This is a rename
json_decref (data_js);
resp = GNUNET_REST_create_response (NULL);
handle->proc (handle->proc_cls, resp, MHD_HTTP_CONFLICT);
- cleanup_handle (handle);
+ GNUNET_SCHEDULER_add_now (&cleanup_handle, handle);
return;
}
}
json_decref (data_js);
resp = GNUNET_REST_create_response (NULL);
handle->proc (handle->proc_cls, resp, MHD_HTTP_CONFLICT);
- cleanup_handle (handle);
+ GNUNET_SCHEDULER_add_now (&cleanup_handle, handle);
return;
}
}
{
resp = GNUNET_REST_create_response (NULL);
handle->proc (handle->proc_cls, resp, MHD_HTTP_NOT_FOUND);
- cleanup_handle (handle);
+ GNUNET_SCHEDULER_add_now (&cleanup_handle, handle);
return;
}
handle->response_code = MHD_HTTP_NO_CONTENT;
resp = GNUNET_REST_create_response (NULL);
MHD_add_response_header (resp, "Access-Control-Allow-Methods", allow_methods);
handle->proc (handle->proc_cls, resp, MHD_HTTP_OK);
- cleanup_handle (handle);
+ GNUNET_SCHEDULER_add_now (&cleanup_handle, handle);
return;
}
+++ /dev/null
-#!/usr/bin/bash
-
-#First, start gnunet-arm and the rest-service. Make sure, no identity exists
-
-link_to_api="http://localhost:7776/identity"
-wrong_link="http://localhost:7776/idenmmmy"
-
-#Test GET (multiple identities) for error when no identity exists
-
-echo "No test for subsystem available"
-echo "The next test case can be ignored if you have already added identities"
-cache="$(curl --silent "$link_to_api" | grep "error")"
-if [ "" == "$cache" ]
-then
- echo -n -e "[\033[0;31m FAILURE\033[0m ] Success for GET request when missing identity\n"
-else
- echo -n -e "[\033[0;32m SUCCESS\033[0m ] Error for GET request when missing identity\n"
-fi
-
-#Test POST success code, error response code and error json
-echo "The next test case can be ignored if you have already added an identity with the name Test"
-cache="$(curl -v -X "POST" "$link_to_api" --data "{\"name\":\"Test\"}" 2>&1 | grep "HTTP/1.1 201")"
-if [ "" == "$cache" ]
-then
- echo -n -e "[\033[0;31m FAILURE\033[0m ] Error for good POST request\n"
-else
- echo -n -e "[\033[0;32m SUCCESS\033[0m ] Success for good POST request\n"
-fi
-
-cache="$(curl -v -X "POST" "$link_to_api" --data "{\"name\":\"Test\"}" 2>&1 | grep "HTTP/1.1 409")"
-if [ "" == "$cache" ]
-then
- echo -n -e "[\033[0;31m FAILURE\033[0m ] Success for duplicate name POST request\n"
-else
- echo -n -e "[\033[0;32m SUCCESS\033[0m ] Error for duplicate name POST request\n"
-fi
-
-cache="$(curl -v -X "POST" "$link_to_api" 2>&1 | grep "error")"
-if [ "" == "$cache" ]
-then
- echo -n -e "[\033[0;31m FAILURE\033[0m ] Success for no data POST request\n"
-else
- echo -n -e "[\033[0;32m SUCCESS\033[0m ] Error for no data POST request\n"
-fi
-
-cache="$(curl -v -X "POST" "$link_to_api" --data "wrong" 2>&1 | grep "error")"
-if [ "" == "$cache" ]
-then
- echo -n -e "[\033[0;31m FAILURE\033[0m ] Success for wrong data POST request\n"
-else
- echo -n -e "[\033[0;32m SUCCESS\033[0m ] Error for wrong data POST request\n"
-fi
-
-cache="$(curl -v -X "POST" "$link_to_api" --data "[{}]" 2>&1 | grep "error")"
-if [ "" == "$cache" ]
-then
- echo -n -e "[\033[0;31m FAILURE\033[0m ] Success for json array input POST request\n"
-else
- echo -n -e "[\033[0;32m SUCCESS\033[0m ] Error for json array input POST request\n"
-fi
-
-cache="$(curl -v -X "POST" "$link_to_api" --data "{\"name\":\"Test\",\"other\":\"Test\"}" 2>&1 | grep "error")"
-if [ "" == "$cache" ]
-then
- echo -n -e "[\033[0;31m FAILURE\033[0m ] Success for multi element json POST request\n"
-else
- echo -n -e "[\033[0;32m SUCCESS\033[0m ] Error for multi element json POST request\n"
-fi
-
-cache="$(curl -v -X "POST" "$link_to_api" --data "{\"nam\":\"Test\"}" 2>&1 | grep "error")"
-if [ "" == "$cache" ]
-then
- echo -n -e "[\033[0;31m FAILURE\033[0m ] Success for wrong json POST request\n"
-else
- echo -n -e "[\033[0;32m SUCCESS\033[0m ] Error for wrong json POST request\n"
-fi
-
-cache="$(curl -v -X "POST" "$link_to_api" --data "{\"name\":123}" 2>&1 | grep "error")"
-if [ "" == "$cache" ]
-then
- echo -n -e "[\033[0;31m FAILURE\033[0m ] Success for wrong json type POST request\n"
-else
- echo -n -e "[\033[0;32m SUCCESS\033[0m ] Error for wrong json type POST request\n"
-fi
-
-cache="$(curl -v -X "POST" "$link_to_api" --data "{\"name\":""}" 2>&1 | grep "error")"
-if [ "" == "$cache" ]
-then
- echo -n -e "[\033[0;31m FAILURE\033[0m ] Success for no name POST request\n"
-else
- echo -n -e "[\033[0;32m SUCCESS\033[0m ] Error for no name POST request\n"
-fi
-
-
-#Test GET (multiple identities) for success and error json
-cache="$(curl --silent "$link_to_api" | grep "error")"
-if [ "" == "$cache" ]
-then
- echo -n -e "[\033[0;32m SUCCESS\033[0m ] Success for good GET request (multiple identities)\n"
-else
- echo -n -e "[\033[0;31m FAILURE\033[0m ] Error for good GET request (multiple identities)\n"
-fi
-
-
-id="$(gnunet-identity -d | grep "Test - " | sed "s/Test - //g")"
-#Test GET (one identity) for success and error json
-cache="$(curl --silent "${link_to_api}/$id" | grep "error")"
-if [ "" == "$cache" ]
-then
- echo -n -e "[\033[0;32m SUCCESS\033[0m ] Success for good GET request (one identity)\n"
-else
- echo -n -e "[\033[0;31m FAILURE\033[0m ] Error for good GET request (one identity)\n"
-fi
-
-
-#Test DELETE success code, error response code and error json
-echo "Next tests for DELETE will probably fail when POST fails"
-cache="$(curl -v -X "DELETE" "${link_to_api}/$id" 2>&1 | grep "HTTP/1.1 404")"
-if [ "" == "$cache" ]
-then
- echo -n -e "[\033[0;32m SUCCESS\033[0m ] Success for good DELETE request\n"
-else
- echo -n -e "[\033[0;31m FAILURE\033[0m ] Error for good DELETE request\n"
-fi
-
-curl --silent -X "POST" "$link_to_api" --data "{\"name\":\"Test\"}"
-id="$(gnunet-identity -d | grep "Test - " | sed "s/Test - //g")"
-
-cache="$(curl -v -X "DELETE" "${link_to_api}/df1" 2>&1 | grep "HTTP/1.1 404")"
-if [ "" == "$cache" ]
-then
- echo -n -e "[\033[0;31m FAILURE\033[0m ] Success for wrong DELETE request\n"
-else
- echo -n -e "[\033[0;32m SUCCESS\033[0m ] Error for wrong DELETE request\n"
-fi
-
-#Test PUT success code, error response codes and error json
-cache="$(curl -v -X "PUT" "${link_to_api}/$id" --data "{\"newname\":\"NewTest\"}" 2>&1 | grep "HTTP/1.1 204")"
-if [ "" == "$cache" ]
-then
- echo -n -e "[\033[0;31m FAILURE\033[0m ] Error for good PUT request\n"
-else
- echo -n -e "[\033[0;32m SUCCESS\033[0m ] Success for good PUT request\n"
-fi
-
-cache="$(curl -v -X "PUT" "${link_to_api}/${id}1" --data "{\"newname\":\"NewNewTest\"}" 2>&1 | grep "HTTP/1.1 404")"
-if [ "" == "$cache" ]
-then
- echo -n -e "[\033[0;31m FAILURE\033[0m ] Success for wrong identity PUT request\n"
-else
- echo -n -e "[\033[0;32m SUCCESS\033[0m ] Error for wrong identity PUT request\n"
-fi
-
-cache="$(curl -v -X "PUT" "$link_to_api/$id" --data "{\"newname\":\"NewTest\"}" 2>&1 | grep "error")"
-if [ "" == "$cache" ]
-then
- echo -n -e "[\033[0;31m FAILURE\033[0m ] Success for duplicate name PUT request\n"
-else
- echo -n -e "[\033[0;32m SUCCESS\033[0m ] Error for duplicate name PUT request\n"
-fi
-
-cache="$(curl -v -X "PUT" "$link_to_api/$id" 2>&1 | grep "error")"
-if [ "" == "$cache" ]
-then
- echo -n -e "[\033[0;31m FAILURE\033[0m ] Success for no data PUT request\n"
-else
- echo -n -e "[\033[0;32m SUCCESS\033[0m ] Error for no data PUT request\n"
-fi
-
-cache="$(curl -v -X "PUT" "$link_to_api/$id" --data "wrong" 2>&1 | grep "error")"
-if [ "" == "$cache" ]
-then
- echo -n -e "[\033[0;31m FAILURE\033[0m ] Success for wrong data PUT request\n"
-else
- echo -n -e "[\033[0;32m SUCCESS\033[0m ] Error for wrong data PUT request\n"
-fi
-
-cache="$(curl -v -X "PUT" "$link_to_api/$id" --data "[{}]" 2>&1 | grep "error")"
-if [ "" == "$cache" ]
-then
- echo -n -e "[\033[0;31m FAILURE\033[0m ] Success for json array input PUT request\n"
-else
- echo -n -e "[\033[0;32m SUCCESS\033[0m ] Error for json array input PUT request\n"
-fi
-
-cache="$(curl -v -X "PUT" "$link_to_api/$id" --data "{\"newname\":\"Test\",\"other\":\"Test\"}" 2>&1 | grep "error")"
-if [ "" == "$cache" ]
-then
- echo -n -e "[\033[0;31m FAILURE\033[0m ] Success for multi element json PUT request\n"
-else
- echo -n -e "[\033[0;32m SUCCESS\033[0m ] Error for multi element json PUT request\n"
-fi
-
-cache="$(curl -v -X "PUT" "$link_to_api/$id" --data "{\"newnam\":\"Test\"}" 2>&1 | grep "error")"
-if [ "" == "$cache" ]
-then
- echo -n -e "[\033[0;31m FAILURE\033[0m ] Success for wrong json PUT request\n"
-else
- echo -n -e "[\033[0;32m SUCCESS\033[0m ] Error for wrong json PUT request\n"
-fi
-
-cache="$(curl -v -X "PUT" "$link_to_api/$id" --data "{\"newname\":123}" 2>&1 | grep "error")"
-if [ "" == "$cache" ]
-then
- echo -n -e "[\033[0;31m FAILURE\033[0m ] Success for wrong json type PUT request\n"
-else
- echo -n -e "[\033[0;32m SUCCESS\033[0m ] Error for wrong json type PUT request\n"
-fi
-
-cache="$(curl -v -X "PUT" "$link_to_api/$id" --data "{\"newname\":""}" 2>&1 | grep "error")"
-if [ "" == "$cache" ]
-then
- echo -n -e "[\033[0;31m FAILURE\033[0m ] Success for no name PUT request\n"
-else
- echo -n -e "[\033[0;32m SUCCESS\033[0m ] Error for no name PUT request\n"
-fi
-#TODO Missing subsystem test
-
-#Missing OPTIONS success - nothing can really go wrong here
-
-#Test wrong url
-cache="$(curl -v "$wrong_link" 2>&1 | grep "HTTP/1.1 404")"
-if [ "" == "$cache" ]
-then
- echo -n -e "[\033[0;31m FAILURE\033[0m ] Success for wrong url GET request \n"
-else
- echo -n -e "[\033[0;32m SUCCESS\033[0m ] Error for wrong url GET request \n"
-fi
-
-cache="$(curl -X "PUT" -v "$wrong_link/$id" --data "{\"newname\":\"Testing\"}" 2>&1 | grep "HTTP/1.1 404")"
-if [ "" == "$cache" ]
-then
- echo -n -e "[\033[0;31m FAILURE\033[0m ] Success for wrong url GET request \n"
-else
- echo -n -e "[\033[0;32m SUCCESS\033[0m ] Error for wrong url GET request \n"
-fi
-
-cache="$(curl -X "POST" -v "$wrong_link/$id" --data "{\"name\":\"Test\"}" 2>&1 | grep "HTTP/1.1 404")"
-if [ "" == "$cache" ]
-then
- echo -n -e "[\033[0;31m FAILURE\033[0m ] Success for wrong url POST request \n"
-else
- echo -n -e "[\033[0;32m SUCCESS\033[0m ] Error for wrong url POST request \n"
-fi
-
-cache="$(curl -X "DELETE" -v "${wrong_link}/$id" 2>&1 | grep "HTTP/1.1 404")"
-if [ "" == "$cache" ]
-then
- echo -n -e "[\033[0;31m FAILURE\033[0m ] Success for wrong url DELETE request \n"
-else
- echo -n -e "[\033[0;32m SUCCESS\033[0m ] Error for wrong url DELETE request \n"
-fi