Split out serialize_normalized_object

master
teknomunk 1 year ago
parent a290056b3c
commit b83d60816c

@ -25,15 +25,15 @@ struct rdf_enum types = {
.filter = type_filter,
};
struct rdf_serialize_field serial[];
struct rdf_serialize_field ap_activity_rdf[];
static struct rdf_serialize_field activity_ref_types[] = {
{ (char*)apaot_ref, offsetof( struct ap_activity, object.ref ), &rdf_string_field },
{ (char*)apaot_activity, offsetof( struct ap_activity, object.ptr ), &rdf_object_field, &serial },
{ (char*)apaot_activity, offsetof( struct ap_activity, object.ptr ), &rdf_object_field, &ap_activity_rdf },
{ NULL },
};
struct rdf_serialize_field serial[] = {
struct rdf_serialize_field ap_activity_rdf[] = {
{ "", offsetof( struct ap_activity, id ), &rdf_id_field },
{ "<http://www.w3.org/1999/02/22-rdf-syntax-ns#type>", offsetof( struct ap_activity, type ), &rdf_enum_field, &types },
{ "<https://www.w3.org/ns/activitystreams#actor>", offsetof( struct ap_activity, actor ), &rdf_string_field },
@ -44,48 +44,58 @@ struct rdf_serialize_field serial[] = {
{ NULL, sizeof(struct ap_activity) },
};
void debug_quad( struct rdf_quad* q )
{
printf( "%s %s %s %s\n", q->subject, q->predicate, q->object, q->graph );
}
void debug_emit_quad( struct rdf_serializer* rs, struct rdf_quad* q )
{
printf( "%s %s %s %s\n", q->subject, q->predicate, q->object, q->graph );
rdf_quad_free(q);
}
struct rdf_serialize_field ap_activity_signature_rdf[] = {
};
void ap_activity_create_rsa_signature_2017( struct ap_activity* act )
char* serialize_normalized_object( struct rdf_serialize_field* layout, void* object, size_t* result_size )
{
printf( "ap_activity_create_rsa_signature_2017\n" );
// Serialize activity to RDF
struct rdf_serializer rs;
memset(&rs,0,sizeof(rs));
char* subject;
asprintf( &subject, "<%s>", act->id );
rs.subject = subject;
rs.subject = strdup("");
rs.graph = strdup(".");
struct rdf_memory_store* ms = rdf_memory_store_new();
rdf_memory_store_init_serializer( ms, &rs );
rdf_serialize_object( &rs, serial, act );
rdf_serialize_object( &rs, layout, object );
// Normalize
struct collection_iface i;
rdf_memory_store_as_collection( ms, &i );
rdf_normalize(i);
printf( "\nRDF:\n" );
rdf_memory_store_dump( ms, stdout );
printf( "\n" );
char* outbuf = NULL;
rdf_memory_store_free(ms);
FILE* f = open_memstream( &outbuf, result_size );
if( !f ) {
printf( "Error opening memstream\n" );
goto cleanup;
}
rdf_memory_store_dump( ms, f );
fclose(f);
rdf_memory_store_free(ms);
cleanup:
free((char*)rs.subject);
free((char*)rs.graph);
return outbuf;
}
void ap_activity_create_rsa_signature_2017( struct ap_activity* act )
{
printf( "ap_activity_create_rsa_signature_2017\n" );
size_t activity_buf_size;
char* activity_buf = serialize_normalized_object( ap_activity_rdf, act, &activity_buf_size );
if( !activity_buf ) { return /* false */; }
printf( "\nRDF (size=%d):\n", activity_buf_size );
fwrite( activity_buf, 1, activity_buf_size, stdout );
printf( "\n" );
free(activity_buf);
cleanup:
return;
}

Loading…
Cancel
Save