/*
This file is part of GNUnet.
Copyright (C) 2022--2024 GNUnet e.V.
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 .
SPDX-License-Identifier: AGPL3.0-or-later
*/
/*
* @author Tobias Frisch
* @file gnunet_chat_uri.h
*/
#ifndef GNUNET_CHAT_URI_H_
#define GNUNET_CHAT_URI_H_
#include
#include
#include "gnunet_chat_util.h"
struct GNUNET_CHAT_UriChat
{
struct GNUNET_CRYPTO_PublicKey zone;
char *label;
};
struct GNUNET_CHAT_UriFile
{
struct GNUNET_FS_Uri *uri;
};
struct GNUNET_CHAT_Uri
{
enum GNUNET_CHAT_UriType type;
union {
struct GNUNET_CHAT_UriChat chat;
struct GNUNET_CHAT_UriFile fs;
};
};
/**
* Creates a chat uri with a selected key as zone
* and a label of type #GNUNET_CHAT_URI_TYPE_CHAT.
*
* @param[in] zone URI zone
* @param[in] label URI label
* @return New chat uri
*/
struct GNUNET_CHAT_Uri*
uri_create_chat (const struct GNUNET_CRYPTO_PublicKey *zone,
const char *label);
/**
* Creates a chat uri from a selected FS uri
* setting the type to #GNUNET_CHAT_URI_TYPE_FS.
*
* @param[in] uri FS URI
* @return New chat uri
*/
struct GNUNET_CHAT_Uri*
uri_create_file (const struct GNUNET_FS_Uri *uri);
/**
* Destroys a chat uri and frees its memory.
*
* @param[in,out] uri Chat uri
*/
void
uri_destroy (struct GNUNET_CHAT_Uri *uri);
/**
* Parses an UTF-8 string to a chat URI which will
* be newly allocated.
*
* @param[in] string UTF-8 string to parse
* @param[out] emsg Where to store the parser error message (if any)
* @return URI on success, NULL on error
*/
struct GNUNET_CHAT_Uri*
uri_parse_from_string (const char *string,
char **emsg);
/**
* Returns an allocated UTF-8 string representing
* a given chat uri.
*
* @param[in] uri Chat uri
* @return The UTF-8 string representing the URI
*/
char*
uri_to_string (const struct GNUNET_CHAT_Uri *uri);
#endif /* GNUNET_CHAT_URI_H_ */