From ef0f0e973d169763d152331392f9b61b872f2734 Mon Sep 17 00:00:00 2001 From: Daniel Bauer Date: Thu, 15 Aug 2024 22:17:15 +0200 Subject: [PATCH] add readme and license --- LICENSE | 21 +++++++++++++ README.md | 89 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 110 insertions(+) create mode 100644 LICENSE diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..11b76a1 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Daniel Bauer + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/README.md b/README.md index e69de29..8fafdec 100644 --- a/README.md +++ b/README.md @@ -0,0 +1,89 @@ +# FAIR signposting for Django + +`django_signposting` is a Django middleware library that facilitates the addition of +FAIR signposting headers to HTTP responses. +This middleware helps in making your data more FAIR (Findable, accessible, interoperable, reuseable) by +embedding signposting headers in responses, guiding clients to relevant resources linked to the response content. + +## Features +- Automatically adds signposting headers to HTTP responses. +- Supports multiple relation types with optional media type specification. +- Easily integrable with existing Django applications. + +## Installation + +```bash +pip install django_signposting +``` + +## Usage + +### 1. Add Middleware + +Add the middleware to your Django project's `MIDDLEWARE` setting in `settings.py`: + +```python +MIDDLEWARE = [ + ..., + 'django_signposting.middleware.SignpostingMiddleware', + ..., +] +``` + +### 2. Add Signposts to your Views + +You can add signposting headers in your Django views using the provided `add_signposts` utility function. +Here's how you can use it: + +```python +from django.http import HttpResponse +from django_signposting.util import add_signposts + +def my_view(request): + response = HttpResponse("Hello, world!") + + # Add signpostings as string + add_signposts(response, + type="https://schema.org/Dataset", + author="https://orcid.org/0000-0001-9447-460X") + + return response +``` + +Multiple links with the same link type can be added as lists and the content type of a link +can be defined by using tuples: + +```python + +from django.http import HttpResponse +from django_signposting.util import add_signposts + +def my_view(request): + response = HttpResponse("Hello, world!") + + # Add signpostings as string + add_signposts(response, + type="https://schema.org/Dataset", + author="https://orcid.org/0000-0001-9447-460X", + item=[ + ("https://example.com/image.png", "image/png"), + ("https://example.com/download.zip", "application/zip") + ]) + + return response +``` + +### 3. Signposts are formatted and added as Link headers by the middleware: + +```bash +curl -I https://example.com +HTTP/2 200 +... +link: ; rel="type" , + ; rel="author" , + ; rel="item" ; type="application/json+ld" +``` + +## License + +Licensed under the MIT License. \ No newline at end of file