
* add todo * Added configurations folder * Added config to index * changed /bin/server to use configfiles * initiate acl with Setup component * add last changes * reset serverconfig * move authenticatedLdpHandler configs to config files * failed to read testss * failed to read testss * removed import part * Fix merge conflicts * add first FileResTests * fix: fix fileresourcestore metadata error * fix unit tests * remove test files * Added test and changed callFile * Fix: metadata file error in FileResourceStore * fix: ensure full test coverage * added tests * Fix get tests * added testfiles * changed config to use PasstrueStore * to continue work on * refactor fileresourcestore config * refactor tests * fix content-types, update tests * replace sync methods with async methods * move acl function to util * added testfiles for Fileserver with acl * update tests * add first acl filestore test * refactor * add resource mapper * refactor config files * add more fileresourcestore acl tests * add locking resource store test files * move file mapping logic to resourcemapper * added beforeAll for a permanent file in Auht tests * make filestore dependent of resource mapper * moved configs to test/configs * set default contenttype * refactor fileresourcemapper * fix map function * refactor * fixed foldercreationtest * changed some tests so the files are cleaned up when done testing * add normalized parser * Auhtenticationtests clean up acl file * refactor unit test * lost changes added again * fix metadata problem * refactor names * reverse change * add getters * configs and start util * add comments * add comments, move code * added acl helper and changed tests * linter 7.7.0 -> 7.0.0 * moved test/tesfiles -> test/assets * removed configs/**/*.ts from tsconfig.json * Temporary changed threshold so cli test is ignored and commiting goes easier, will revert later * added FileResourceStore to index * Changed imports * Changed imports for all configs * Removed comment * Changed names of configs * added 'Config' to name and removed comment * removed unused testfile and added testfile 0 * changed beforeAll to just copy permanent file * change text/turtle to constant * fix converter issue * getHandler -> getHttpHandler, and updates to config * removed ',' * removed trailing / * changed imports for index.d.js problem * removed duplicate file and added line that got removed in mergeconflicts * add jest global teardown * add ignore for CliRunner * add changes * fix copyfile error * remove unused testfiles * adding test with image * add first util functions * relative paths to absolute paths * added 3 FileStoreTests * more refactoring * more absolute paths * fix mkdir path * added test * add util for easy configs * add comments * added some testhelpers and refactor first test * fix converter test error * refactor FileResTests * solved failing test because new converters * removed afterAll() * removed setAcl from util * removed config from Authorization.test.ts * changed strange linting * refactored AuthenticatedFileResourceStore tests * fixed unclear root variable * fix: Use absolute test paths * Mock fs correctly and remove teardown * Clean up after tests Co-authored-by: freyavs <freyavanspeybroeck@outlook.com> Co-authored-by: thdossch <dossche.thor@gmail.com> Co-authored-by: Freya <56410697+freyavs@users.noreply.github.com> Co-authored-by: thdossch <49074469+thdossch@users.noreply.github.com> Co-authored-by: Ruben Verborgh <ruben@verborgh.org>
Community Solid Server
An open and modular implementation of the Solid specifications
-
Community Solid Server is open software to provide people with their own Solid Pod.
-
It will give developers an environment to create and test new Solid applications.
-
Its modular architecture allows trying out new ideas on the server side and thereby shape the future of Solid.
Current status
This software is in alpha status, which means it is too early for use with Solid apps.
However, you can already boot up the server,
play around with it,
and check how it is made.
The architectural diagram
can help you find your way.
If you are interested in helping out with the development of this server, be sure to have a look at the developer notes and good first issues.
Running locally
npm ci
npm start
Interacting with the server
The server supports low-level interaction via HTTP methods,
such as GET
, PUT
, HEAD
, ...
Below, we provide several examples on how to interact with the server using curl
.
PUT
: Creating resources for a given URL
Create a plain text file:
$ curl -X PUT -H "Content-Type: text/plain" \
-d "abc" \
http://localhost:3000/myfile.txt
Create a turtle file:
$ curl -X PUT -H "Content-Type: text/turtle" \
-d "<ex:s> <ex:p> <ex:o>." \
http://localhost:3000/myfile.ttl
POST
: Creating resources at a generated URL
Create a plain text file:
$ curl -X POST -H "Content-Type: text/plain" \
-d "abc" \
http://localhost:3000/
Create a turtle file:
$ curl -X POST -H "Content-Type: text/turtle" \
-d "<ex:s> <ex:p> <ex:o>." \
http://localhost:3000/
The response's Location
header will contain the URL of the created resource.
GET
: Retrieving resources
Retrieve a plain text file:
$ curl -H "Accept: text/plain" \
http://localhost:3000/myfile.txt
Retrieve a turtle file:
$ curl -H "Accept: text/turtle" \
http://localhost:3000/myfile.ttl
Retrieve a turtle file in a different serialization:
$ curl -H "Accept: application/ld+json" \
http://localhost:3000/myfile.ttl
DELETE
: Deleting resources
$ curl -X DELETE http://localhost:3000/myfile.txt
PATCH
: Modifying resources
Currently, only patches over RDF resources are supported using SPARQL Update
queries without WHERE
clause.
$ curl -X PATCH -H "Content-Type: application/sparql-update" \
-d "INSERT DATA { <ex:s2> <ex:p2> <ex:o2> }" \
http://localhost:3000/myfile.ttl
HEAD
: Retrieve resources headers
$ curl -I -H "Accept: text/plain" \
http://localhost:3000/myfile.txt
OPTIONS
: Retrieve resources communication options
$ curl -X OPTIONS -i http://localhost:3000/myfile.txt