#include <gnunet_gns_service.h>
#include <gnunet_rest_lib.h>
#include <gnunet_jsonapi_lib.h>
+#include <gnunet_jsonapi_util.h>
#include <jansson.h>
#define GNUNET_REST_API_NS_GNS "/gns"
struct LookupHandle *handle = cls;
struct MHD_Response *resp;
- resp = GNUNET_REST_create_json_response (NULL);
+ resp = GNUNET_REST_create_response (NULL);
handle->proc (handle->proc_cls, resp, handle->response_code);
cleanup_handle (handle);
}
(int) rd->record_type);
return NULL;
}
- record_obj = json_object();
+ record_obj = json_object ();
json_object_set_new (record_obj, "type", json_string (typename));
json_object_set_new (record_obj, "value", json_string (string_val));
GNUNET_free (string_val);
{
struct LookupHandle *handle = cls;
struct MHD_Response *resp;
- struct GNUNET_JSONAPI_Object *json_object;
+ struct GNUNET_JSONAPI_Document *json_document;
struct GNUNET_JSONAPI_Resource *json_resource;
uint32_t i;
char *result;
json_t *record_obj;
result_array = json_array();
- json_object = GNUNET_JSONAPI_object_new ();
+ json_document = GNUNET_JSONAPI_document_new ();
json_resource = GNUNET_JSONAPI_resource_new (GNUNET_REST_JSONAPI_GNS_TYPEINFO, handle->name);
handle->lookup_request = NULL;
for (i=0; i<rd_count; i++)
GNUNET_JSONAPI_resource_add_attr (json_resource,
GNUNET_REST_JSONAPI_GNS_RECORD,
result_array);
- GNUNET_JSONAPI_object_resource_add (json_object, json_resource);
- GNUNET_JSONAPI_data_serialize (json_object, &result);
+ GNUNET_JSONAPI_document_resource_add (json_document, json_resource);
+ GNUNET_JSONAPI_document_serialize (json_document, &result);
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Result %s\n", result);
json_decref (result_array);
- GNUNET_JSONAPI_object_delete (json_object);
- resp = GNUNET_REST_create_json_response (result);
+ GNUNET_JSONAPI_document_delete (json_document);
+ resp = GNUNET_REST_create_response (result);
handle->proc (handle->proc_cls, resp, MHD_HTTP_OK);
GNUNET_free (result);
cleanup_handle (handle);
* identified by the given public key and the shorten zone.
*
* @param pkey public key to use for the zone, can be NULL
- * @param shorten_key private key used for shortening, can be NULL
*/
static void
-lookup_with_keys (struct LookupHandle *handle, const struct GNUNET_CRYPTO_EcdsaPrivateKey *shorten_key)
+lookup_with_public_key (struct LookupHandle *handle)
{
if (UINT32_MAX == handle->type)
{
&handle->pkey,
handle->type,
handle->options,
- shorten_key,
&process_lookup_result,
handle);
}
}
}
-/**
- * Method called to with the ego we are to use for shortening
- * during the lookup.
- *
- * @param cls closure contains the public key to use
- * @param ego ego handle, NULL if not found
- * @param ctx context for application to store data for this ego
- * (during the lifetime of this process, initially NULL)
- * @param name name assigned by the user for this ego,
- * NULL if the user just deleted the ego and it
- * must thus no longer be used
- */
-static void
-identity_shorten_cb (void *cls,
- struct GNUNET_IDENTITY_Ego *ego,
- void **ctx,
- const char *name)
-{
- struct LookupHandle *handle = cls;
-
- handle->id_op = NULL;
- if (NULL == ego)
- lookup_with_keys (handle, NULL);
- else
- lookup_with_keys (handle,
- GNUNET_IDENTITY_ego_get_private_key (ego));
-}
-
-/**
- * Perform the actual resolution, starting with the zone
- * identified by the given public key.
- *
- * @param pkey public key to use for the zone
- */
-static void
-lookup_with_public_key (struct LookupHandle *handle)
-{
- handle->pkeym = handle->pkey;
- GNUNET_break (NULL == handle->id_op);
- handle->id_op = GNUNET_IDENTITY_get (handle->identity,
- "gns-short",
- &identity_shorten_cb,
- handle);
- if (NULL == handle->id_op)
- {
- GNUNET_break (0);
- lookup_with_keys (handle, NULL);
- }
-}
/**
* Method called to with the ego we are to use for the lookup,
json_decref(handle->json_root);
}
+
/**
* Method called to with the ego we are to use for the lookup,
* when the ego is the one for the default master zone.
GNUNET_SCHEDULER_add_now (&do_error, handle);
return;
}
- GNUNET_IDENTITY_ego_get_public_key (ego, &handle->pkey);
+ GNUNET_IDENTITY_ego_get_public_key (ego,
+ &handle->pkey);
/* main name is our own master zone, do no look for that in the DHT */
handle->options = GNUNET_GNS_LO_LOCAL_MASTER;
/* if the name is of the form 'label.gnu', never go to the DHT */
return GNUNET_OK;
}
+
static void
get_gns_cont (struct GNUNET_REST_RequestHandle *conndata_handle,
const char* url,
{
handle->pkey_str = GNUNET_CONTAINER_multihashmap_get (conndata_handle->url_param_map,
&key);
+ GNUNET_assert (NULL != handle->pkey_str);
if (GNUNET_OK !=
GNUNET_CRYPTO_ecdsa_public_key_from_string (handle->pkey_str,
strlen(handle->pkey_str),
struct LookupHandle *handle = cls;
//For GNS, independent of path return all options
- resp = GNUNET_REST_create_json_response (NULL);
+ resp = GNUNET_REST_create_response (NULL);
MHD_add_response_header (resp,
"Access-Control-Allow-Methods",
MHD_HTTP_METHOD_GET);
* @param data body of the HTTP request (optional)
* @param data_size length of the body
* @param proc callback function for the result
- * @param proc_cls closure for callback function
- * @return GNUNET_OK if request accepted
+ * @param proc_cls closure for @a proc
+ * @return #GNUNET_OK if request accepted
*/
static void
-rest_gns_process_request(struct GNUNET_REST_RequestHandle *conndata_handle,
- GNUNET_REST_ResultProcessor proc,
- void *proc_cls)
+rest_gns_process_request (struct GNUNET_REST_RequestHandle *conndata_handle,
+ GNUNET_REST_ResultProcessor proc,
+ void *proc_cls)
{
+ static const struct GNUNET_REST_RequestHandler handlers[] = {
+ {MHD_HTTP_METHOD_GET, GNUNET_REST_API_NS_GNS, &get_gns_cont},
+ {MHD_HTTP_METHOD_OPTIONS, GNUNET_REST_API_NS_GNS, &options_cont},
+ GNUNET_REST_HANDLER_END
+ };
struct LookupHandle *handle = GNUNET_new (struct LookupHandle);
struct GNUNET_REST_RequestHandlerError err;
handle->proc = proc;
handle->rest_handle = conndata_handle;
- static const struct GNUNET_REST_RequestHandler handlers[] = {
- {MHD_HTTP_METHOD_GET, GNUNET_REST_API_NS_GNS, &get_gns_cont},
- {MHD_HTTP_METHOD_OPTIONS, GNUNET_REST_API_NS_GNS, &options_cont},
- GNUNET_REST_HANDLER_END
- };
-
if (GNUNET_NO == GNUNET_JSONAPI_handle_request (conndata_handle,
handlers,
&err,