annotate rdf-pastebin/server.pl @ 1:2d859f5e3676

ClioPatria instances now have path prefixes that match those of the instance within the main server, so that internal links work
author Chris Cannam
date Tue, 31 Oct 2017 11:47:10 +0000
parents 1e44d666ced1
children
rev   line source
Chris@0 1 :- module(server, [server/0]).
Chris@0 2
Chris@0 3 :- use_module(library('http/thread_httpd')).
Chris@0 4 :- use_module(library('http/http_client')).
Chris@0 5 :- use_module(library('http/http_mime_plugin')).
Chris@0 6 :- use_module(library('semweb/rdf_db')).
Chris@0 7 :- use_module(library('semweb/rdf_turtle')).
Chris@0 8
Chris@0 9 ns('http://dbtune.org/people/').
Chris@0 10
Chris@0 11
Chris@0 12 server(Port, Options) :-
Chris@0 13 http_server(reply,[ port(Port),timeout(20)| Options]).
Chris@0 14
Chris@0 15
Chris@0 16 reply(Request) :-
Chris@0 17 member(method(post), Request), !,
Chris@0 18 http_read_data(Request,Data,[]),
Chris@0 19 format(user_output,'~w\n',[Data]),
Chris@0 20 member((turtle=Turtle),Data),
Chris@0 21 parse_turtle(Turtle,Triples),
Chris@0 22 member((name=Name),Data),
Chris@0 23 ((exists_directory(Name),!);(make_directory(Name))),
Chris@0 24 ns(NS),
Chris@0 25 format(atom(File),'~w/content.rdf',[Name]),
Chris@0 26 format(user_output,' - Dumping ~w\n',[File]),
Chris@0 27 open(File,write,S),
Chris@0 28 parse_turtle(Turtle,Triples),
Chris@0 29 rdf_write_xml(S,Triples),
Chris@0 30 close(S),
Chris@0 31 atom_concat(NS,File,URL),
Chris@0 32 throw(http_reply(see_other(URL),[])).
Chris@0 33
Chris@0 34
Chris@0 35 parse_turtle(Turtle,Triples) :-
Chris@0 36 tmp_file(ttl,Tmp),
Chris@0 37 open(Tmp,write,S),
Chris@0 38 write(S,Turtle),
Chris@0 39 close(S),
Chris@0 40 rdf_load_turtle(Tmp,Triples,[base_uri('')]).
Chris@0 41
Chris@0 42
Chris@0 43
Chris@0 44 server :- server(1112,[]).
Chris@0 45