Commit 3db3bc75 authored by Andreas Burbach's avatar Andreas Burbach
Browse files

new lines

parent 04899639
Pipeline #75552 passed with stages
in 3 minutes and 43 seconds
...@@ -47,7 +47,7 @@ Create the database with ...@@ -47,7 +47,7 @@ Create the database with
and start the server with and start the server with
> python manage.py runserver > python manage.py runserver
the following page should showup if you open [http://127.0.0.1:8000/](http://127.0.0.1:8000/) in your browser. 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 ## Request API for the URLs
...@@ -56,340 +56,316 @@ For authorization use the header name "Authorization" and the value "Token <toke ...@@ -56,340 +56,316 @@ For authorization use the header name "Authorization" and the value "Token <toke
#### Authentication #### Authentication
##### POST url: ".../authentication/register/" ##### POST url: ".../authentication/register/"
Register a user Register a user
Requestbody: Requestbody:
{ {
"username": "username", "username": "username",
"password": "password", "password": "password",
"email": " "email": "email"
} }
Responsebody:
Responsebody: {
{ "token": "token"
"token": "token" }
}
##### POST url: ".../authentication/login/" ##### POST url: ".../authentication/login/"
Login a user Login a user
Requestbody: Requestbody:
{ {
"username": "username", "username": "username",
"password": "password" "password": "password"
} }
Responsebody:
Responsebody: {
{ "token": "token"
"token": "token" }
}
##### POST url: ".../authentication/logout/" ##### POST url: ".../authentication/logout/"
Logout a user Logout a user
Requestbody: None Requestbody: None
Responsebody: None
Responsebody: None Success: HTTP/200
Success: HTTP/200
##### GET url: ".../authentication/validate/" ##### GET url: ".../authentication/validate/"
Validate a token Validate a token
Requestbody: None
Responsebody: None
Success: HTTP/200 Requestbody: None
Responsebody: None
Success: HTTP/200
#### Account #### Account
##### GET url: ".../accounts/show/<user_id>/" ##### GET url: ".../accounts/show/<user_id>/"
Show a public user Show a public user
Requestbody: None Requestbody: None
Responsebody:
Responsebody: [{
[{ "user": {
"user": { "id": ...,
"id": ..., "username": ...,
"username": ..., "email": ...,
"email": ..., "date_joined": "..."
"date_joined": "..." },
}, "image": "...",
"image": "...", "biography": "...",
"biography": "...", "related_by": [],
"related_by": [], "related_to": [],
"related_to": [], "statements": []
"statements": [] }]
}]
##### GET url: ".../accounts/show/own/" ##### GET url: ".../accounts/show/own/"
Show the own user Show the own user
Requestbody: None Requestbody: None
Responsebody:
Responsebody: [{
[{ "user": {
"user": { "id": ...,
"id": ..., "username": ...,
"username": ..., "email": ...,
"email": ..., "date_joined": "..."
"date_joined": "..." },
}, "image": "...",
"image": "...", "biography": "...",
"biography": "...", "related_by": [],
"related_by": [], "related_to": [],
"related_to": [], "statements": []
"statements": [] }]
}]
##### GET url: ".../accounts/show/all/" ##### GET url: ".../accounts/show/all/"
Show all public users Show all public users
Requestbody: None Requestbody: None
Responsebody:
Responsebody: [{
[{ "user": {
"user": { "id": ...,
"id": ..., "username": ...,
"username": ..., "email": ...,
"email": ..., "date_joined": "..."
"date_joined": "..." },
}, "image": "...",
"image": "...", "biography": "...",
"biography": "...", "related_by": [],
"related_by": [], "related_to": [],
"related_to": [], "statements": []
"statements": [] },
}, ...
... ]
]
##### PUT url: ".../accounts/update/" ##### PUT url: ".../accounts/update/"
Updates the own account. Only "Biography" and "Image" are allowed to be updated. Updates the own account. Only "Biography" and "Image" are allowed to be updated.
Requestbody: Requestbody:
{ {
"biography": "...", "biography": "...",
"file": "..." "file": "..."
} }
Responsebody: None
Responsebody: None Success: HTTP/200
Success: HTTP/200
##### PUT url: ".../accounts/follow/<user_id>/" ##### PUT url: ".../accounts/follow/<user_id>/"
Follow a user Follow a user
Requestbody: None
Responsebody: None
Success: HTTP/200 Requestbody: None
Responsebody: None
Success: HTTP/200
##### PUT url: ".../accounts/unfollow/<user_id>/" ##### PUT url: ".../accounts/unfollow/<user_id>/"
Unfollow a user Unfollow a user
Requestbody: None Requestbody: None
Responsebody: None
Responsebody: None Success: HTTP/200
Success: HTTP/200
##### PUT url: ".../accounts/operation/add/statement/" ##### PUT url: ".../accounts/operation/add/statement/"
Add a statement to the own account Add a statement to the own account
Requestbody: Requestbody:
{ {
"input": "<statement>" "input": "<statement>"
"reactions": { "to": <reaction_to_a_statement_id>, "relation": <"attack" or "support">} <--- optional "reactions": { "to": <reaction_to_a_statement_id>, "relation": <"attack" or "support">} <--- optional
} }
Responsebody:
Responsebody: {
{ "id": ...,
"id": ..., "author": {
"author": { "user": {
"user": { "id": ...,
"id": ..., "username": "..."
"username": "..." },
}, "image": "..."
"image": "..." },
}, "content": "...",
"content": "...", "tagged": [],
"tagged": [], "mentioned": [],
"mentioned": [], "created": "...",
"created": "...", "relation_to_parent": ...
"relation_to_parent": ... }
} Success: HTTP/200
Success: HTTP/200
#### Contents #### Contents
##### GET url: ".../contents/statements/get/<statement_id>/" ##### GET url: ".../contents/statements/get/<statement_id>/"
Get a statement Get a statement
Requestbody: None Requestbody: None
Responsebody:
Responsebody: [
[ {
{ "id": ...,
"id": ..., "author": {
"author": { "user": {
"user": { "id": ...,
"id": ..., "username": "..."
"username": "..." },
}, "image": "..."
"image": "..." },
}, "content": "...",
"content": "...", "tagged": [],
"tagged": [], "mentioned": [],
"mentioned": [], "created": "...",
"created": "...", "relation_to_parent": ...,
"relation_to_parent": ..., "reactions": []
"reactions": [] }
} ]
]
##### GET url: ".../contents/statements/with/hashtag/" ##### GET url: ".../contents/statements/with/hashtag/"
Get all statements with a hashtag Get all statements with a hashtag
Requestbody: None Requestbody: None
Queryparameters: "?q=<hashtag>"
Queryparameters: "?q=<hashtag>" Responsebody:
[
Responsebody: {
[ "id": ...,
{ "author": {
"id": ..., "user": {
"author": { "id": ...,
"user": { "username": "..."
"id": ..., },
"username": "..." "image": "..."
}, },
"image": "..." "content": "...",
}, "tagged": [],
"content": "...", "mentioned": [],
"tagged": [], "created": "...",
"mentioned": [], "relation_to_parent": ...,
"created": "...", "reactions": []
"relation_to_parent": ..., },
"reactions": [] ...
}, ]
...
]
##### GET url: ".../contents/statements/feed/" ##### GET url: ".../contents/statements/feed/"
Get all statements of the accounts that are followed by the user Get all statements of the accounts that are followed by the user
Requestbody: None Requestbody: None
Responsebody:
Responsebody: [
[ {
{ "id": ...,
"id": ..., "author": {
"author": { "user": {
"user": { "id": ...,
"id": ..., "username": "..."
"username": "..." },
}, "image": "..."
"image": "..." },
}, "content": "...",
"content": "...", "tagged": [],
"tagged": [], "mentioned": [],
"mentioned": [], "created": "...",
"created": "...", "relation_to_parent": ...,
"relation_to_parent": ..., "reactions": []
"reactions": [] },
}, ...
... ]
]
##### GET url: ".../contents/trending/hashtag/" ##### GET url: ".../contents/trending/hashtag/"
Get all trending hashtags which are most used in statements Get all trending hashtags which are most used in statements
Requestbody: None
Reponsebody: ++++++ TODO: Setting of a hashtag not clear ++++++ Requestbody: None
Reponsebody: ++++++ TODO: Setting of a hashtag not clear ++++++
#### Search #### Search
##### GET url: ".../search/" ##### GET url: ".../search/"
Searchs for a user or hashtag Searchs for a user or hashtag
Requestbody: None Requestbody: None
Queryparameters: "?q=<search_query>&filter=<"user" or "hashtag">"
Queryparameters: "?q=<search_query>&filter=<"user" or "hashtag">" Responsebody:
{
Responsebody: "accounts": [
{ {
"accounts": [ "user": {
{ "id": ...,
"user": { "username": "...",
"id": ..., },
"username": "...", "image": "..."
}, },
"image": "..." ...
}, ],
... "hashtags": [
], {
"hashtags": [ "id": ...,
{ "tag": "..."
"id": ..., },
"tag": "..." ...
}, ]
... }
]
}
## Core Database structure ## Core Database structure
The project requieres the base authentication database structure from django and extends it with the following tables: The project requieres the base authentication database structure from django and extends it with the following tables:
1. "the_social_network_account" 1. "the_social_network_account"
with: with
user_id: int as primary key and foreign key to django auth_user user_id: int as primary key and foreign key to django auth_user
image: varchar(100) image: varchar(100)
biography: varchar(1000) biography: varchar(1000)
2. "the_social_network_statement" 2. "the_social_network_statement"
with: with
id: int as primary key id: int as primary key
author_id: int as foreign key to the_social_network_account author_id: int as foreign key to the_social_network_account
content: varchar(120) content: varchar(120)
created: datetime created: datetime
3. "the_social_network_accounttagging" 3. "the_social_network_accounttagging"
with: with
id: int as primary key id: int as primary key
created: datetime created: datetime
account_id: int as foreign key to the_social_network_account account_id: int as foreign key to the_social_network_account
statement_id: int as foreign key to the_social_network_statement statement_id: int as foreign key to the_social_network_statement
4. "the_social_network_hashtag" 4. "the_social_network_hashtag"
with: with
id: int as primary key id: int as primary key
tag: varchar(30) tag: varchar(30)
created: datetime created: datetime
5. "the_social_network_hashtagtagging" 5. "the_social_network_hashtagtagging"
with: with
id: int as primary key id: int as primary key
created: datetime created: datetime
hashtag_id: int as foreign key to the_social_network_hashtag hashtag_id: int as foreign key to the_social_network_hashtag
statement_id: int as foreign key to the_social_network_statement statement_id: int as foreign key to the_social_network_statement
6. "the_social_network_reaction" 6. "the_social_network_reaction"
with: with
id: int as primary key id: int as primary key
created: datetime created: datetime
vote: small uint vote: small uint
child_id: int as foreign key to the_social_network_statement child_id: int as foreign key to the_social_network_statement
parent_id: int as foreign key to the_social_network_statement parent_id: int as foreign key to the_social_network_statement
7. "the_social_network_relationship" 7. "the_social_network_relationship"
with: with
id: int as primary key id: int as primary key
created: datetime created: datetime
from_account_id: int as foreign key to the_social_network_account from_account_id: int as foreign key to the_social_network_account
to_account_id: int as foreign key to the_social_network_account to_account_id: int as foreign key to the_social_network_account
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment