85 lines
2.0 KiB
C
85 lines
2.0 KiB
C
/*
|
|
* NOSTR Core Library - NIP-011: Relay Information Document
|
|
*/
|
|
|
|
#ifndef NIP011_H
|
|
#define NIP011_H
|
|
|
|
#include "nip001.h"
|
|
#include <stddef.h>
|
|
|
|
// NIP-11 Relay Information structures
|
|
|
|
// Basic relay information
|
|
typedef struct {
|
|
char* name;
|
|
char* description;
|
|
char* pubkey;
|
|
char* contact;
|
|
char* software;
|
|
char* version;
|
|
int* supported_nips;
|
|
size_t supported_nips_count;
|
|
} nostr_relay_basic_info_t;
|
|
|
|
// Relay limitations
|
|
typedef struct {
|
|
int max_message_length;
|
|
int max_subscriptions;
|
|
int max_filters;
|
|
int max_limit;
|
|
int max_subid_length;
|
|
int min_prefix;
|
|
int max_event_tags;
|
|
int max_content_length;
|
|
int min_pow_difficulty;
|
|
int auth_required; // -1 = not specified, 0 = false, 1 = true
|
|
int payment_required; // -1 = not specified, 0 = false, 1 = true
|
|
int restricted_writes; // -1 = not specified, 0 = false, 1 = true
|
|
long created_at_lower_limit;
|
|
long created_at_upper_limit;
|
|
} nostr_relay_limitations_t;
|
|
|
|
// Content limitations
|
|
typedef struct {
|
|
char** relay_countries;
|
|
size_t relay_countries_count;
|
|
} nostr_relay_content_limitations_t;
|
|
|
|
// Community preferences
|
|
typedef struct {
|
|
char** language_tags;
|
|
size_t language_tags_count;
|
|
char** tags;
|
|
size_t tags_count;
|
|
char* posting_policy;
|
|
} nostr_relay_community_preferences_t;
|
|
|
|
// Icon information
|
|
typedef struct {
|
|
char* icon;
|
|
} nostr_relay_icon_t;
|
|
|
|
// Complete relay information structure
|
|
typedef struct {
|
|
nostr_relay_basic_info_t basic;
|
|
|
|
int has_limitations;
|
|
nostr_relay_limitations_t limitations;
|
|
|
|
int has_content_limitations;
|
|
nostr_relay_content_limitations_t content_limitations;
|
|
|
|
int has_community_preferences;
|
|
nostr_relay_community_preferences_t community_preferences;
|
|
|
|
int has_icon;
|
|
nostr_relay_icon_t icon;
|
|
} nostr_relay_info_t;
|
|
|
|
// Function declarations
|
|
int nostr_nip11_fetch_relay_info(const char* relay_url, nostr_relay_info_t** info_out, int timeout_seconds);
|
|
void nostr_nip11_relay_info_free(nostr_relay_info_t* info);
|
|
|
|
#endif // NIP011_H
|