The package "The Social Network" is a django base backend core element for any possible social network you can think of.
The package "The Social Network" is a django base backend core element for any possible social network you can think of. You can easily create clones for all popular social networks.
or download manuel on [Pypi](https://pypi.org/project/the-social-network/).
## How to use
If you not have already created a django python project, [create](https://docs.djangoproject.com/en/3.2/intro/tutorial01/) it at first in a new directory with the command
> django-admin startproject mysite
This will create a **mysite** directory in your current directory.
Open the **mysite** directory and open the **settings.py**.
Add *'the_social_network'* to **INSTALLED_APPS** and save the file.
Next open the urls.py and add the following line to your **urlpatterns**
Now everything is ready to run django with **the-social-network**.
Create the database with
> python manage.py migrate
and start the server with
> python manage.py runserver
the default django information page should showup if you open [http://127.0.0.1:8000/](http://127.0.0.1:8000/) in your browser.
## Request API for the URLs
In all requests (except for the request of *authentication/register/* or */authentication/login/*) you need to send the authentification token inside the header.
For authorization use the header name "Authorization" and the value "Token <token>"
#### Authentication
##### POST url: ".../authentication/register/"
Register a user
Requestbody:
```json
{
"username":"username",
"password":"password",
"email":"email"
}
```
Responsebody:
```json
{
"token":"token"
}
```
##### POST url: ".../authentication/login/"
Login a user
Requestbody:
```json
{
"username":"username",
"password":"password"
}
```
Responsebody:
```json
{
"token":"token"
}
```
##### POST url: ".../authentication/logout/"
Logout a user
Requestbody: None
Responsebody: None
Success: HTTP/200
##### GET url: ".../authentication/validate/"
Validate a token
Requestbody: None
Responsebody: None
Success: HTTP/200
#### Account
##### GET url: ".../accounts/show/<user_id>/"
Show a public user
Requestbody: None
Responsebody:
```json
[{
"user":{
"id":...,
"username":...,
"email":...,
"date_joined":"..."
},
"image":"...",
"biography":"...",
"related_by":[],
"related_to":[],
"statements":[]
}]
```
##### GET url: ".../accounts/show/own/"
Show the own user
Requestbody: None
Responsebody:
```json
[{
"user":{
"id":...,
"username":...,
"email":...,
"date_joined":"..."
},
"image":"...",
"biography":"...",
"related_by":[],
"related_to":[],
"statements":[]
}]
```
##### GET url: ".../accounts/show/all/"
Show all public users
Requestbody: None
Responsebody:
```json
[{
"user":{
"id":...,
"username":...,
"email":...,
"date_joined":"..."
},
"image":"...",
"biography":"...",
"related_by":[],
"related_to":[],
"statements":[]
},
...
]
```
##### PUT url: ".../accounts/update/"
Updates the own account. Only "Biography" and "Image" are allowed to be updated.
Requestbody:
```json
{
"biography":"...",
"file":"..."
}
```
Responsebody: None
Success: HTTP/200
##### PUT url: ".../accounts/follow/<user_id>/"
Follow a user
Requestbody: None
Responsebody: None
Success: HTTP/200
##### PUT url: ".../accounts/unfollow/<user_id>/"
Unfollow a user
Requestbody: None
Responsebody: None
Success: HTTP/200
##### PUT url: ".../accounts/operation/add/statement/"