-
Notifications
You must be signed in to change notification settings - Fork 0
/
api_endpoints.txt
88 lines (59 loc) · 2.87 KB
/
api_endpoints.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
Ideii API:
Operatii suportate:
0.Vizualizare continut in drive(fisiere si foldere pentru un anumit parent-id)
1.Create(Folder) si Update(fisier)
2.Stergere pentru ambele
3.Redenumire pentru ambele
4.Mutare pentru ambele
5.Upload pentru fisier
6.Download pentru fisier
<Vizualizare> GET localhost/api/items/[{item-id}] - Fara parent-id va returna toate items din folderul root al userului
<Creare> POST localhost/api/items/{parent-id} - Va creea un folder sub parent-ul specificat prin parent-id
<Stergere> DELETE localhost/api/items/{item-id} - Va sterge fie fisierul fie folderul specificat ca si parent-id
<Redenumire> PATCH localhost/api/items/{item-id} - Va redenumii resursa respectiva ,eventual vom pune noul nume ca si continut in request-body
<Mutare> PUT localhost/api/items/{item-id}/{new-parent-id} - Va muta resursa respectiva de la locatia curenta la noul parent-id,practic doar schimbam in baza de date aspectul asta de parent-id
<Upload> POST localhost/api/items/upload/{parent-id} - Va uploada resursa respective pe container-ul de storage al user-ului specificat prin user-id
<Upload> PUT localhost/api/fileupload/{upload_id <din request de api/items/upload>}
<Download> GET localhost/api/items/download/{item-id} - Doar fisier,foldere nu sunt suportate
Idee suplimentare care nu se cere implementata:In loc de item-id sau parent-id fiecare api call ar putea sa contina path-ul absolut catre resursa la care ne referim spre exemplu localhost/api/items/root:/fisier1/fisier2
Cum sa arate baza de date:
TABLE Items(
user_id - id-ul din tabela cu accounts,
item_id - un id unic probabil un ,
content_type - folder sau file)
TABLE Folders(user_id,
item_id - item_id din tabela cu items,
parent_id - un item_id din aceeasi tabela(Folders) care sa arate relatie de child-parent pentru un folder,
name - numele folderului,
description[optional])
last_modified[optional]
create[optional]
TABLE Files(user_id,
item_id,
folder_id[corespunde item_id din Folders],
mode,
from_service,
file_service_id,
fragmented_id)
Fragments(user_id,
fragmented_id,
onedrive_id,
dropbox_id,
googledrive_id,
onedrive_offset,
googledrive_offset,
dropbox_offset)
POST localhost/ProiectTW/api/
upload name:asdd,parent_id:asdaasd,md5:,size:
uploads -> asjdkasdl12313asd
asdd
Content-Range:bytes 0-200/256
Content-Length:200
Body:
POST localhost/ProiectTW/api/uploadSession/asjdkasdl12313asd
201 Created
-------------------------------------------TESTS---------------------------------------------------------
Testele vor fi rulate cu urmatoarea comanda intr-un utilitar de linie de comanda in prezenta modulului de composer phpunit
Modulul phpunit insa si celelalte module necesare rularii sistemului pot fi instalate folosind comanda:composer.phar install
./vendor/bin/phpunit ./tests/<Tests>.php
Ex:./vendor/bin/phpunit --debug ./tests/UserTests.php