- TornadoPackageServer (C#) <--> TornadoEditor (C++)
- TornadoPackageServer (C++) <--> TornadoEditor (C++)
- PostgreSQL
- Transport (TCP)
- RSA and AES encryption
- Sending mail
- JSON serialization
Object -> JSON -> PacketObject -> JSON -> Compression -> AES -> TCP packet
All packets are in JSON format.
struct Packet
{
int16 packetId;
string body;
};
-
RegisterUser - {Email} -> {ResultCode}
-
CreatePackage - {name, info} -> {ResultCode}
-
DeletePackage - {PackageName} -> {ResultCode}
-
UpdatePackageInfo - {PackageName, info} -> {ResultCode}
-
UpdatePackageProjectUrl - {PackageName, url} -> {ResultCode}
-
UpdatePackageScreenUrl - {PackageName, url} -> {ResultCode}
-
UpdatePackageType - {PackageName, type} -> {ResultCode}
-
FindPackage - {PackageName} -> {[PackageName]}
-
FindPackagePageCount - {PackageName} -> {PageCount}
-
FindPackagePage - {PackageName, PageNumber, Sorting}
-> [{PackageName, Info, Rating, RatingCount, ProjectUrl, ScreenUrl, UserName, Type, [PackageVersionName, DateTime, Rating, RatingCount, DownloadCount]}] -
GetPackageCount - {} -> {PageCount}
-
GetPackageList - {PageNumber, Sorting}
-> [{PackageName, Info, Rating, RatingCount, ProjectUrl, ScreenUrl, UserName, Type, [PackageVersionName, DateTime, Rating, RatingCount, DownloadCount]}] -
RatePackage - {PackageName, Rating} -> {ResultCode}
-
AddPackageVersion - {PackageName, Name} -> {ResultCode}
-
BeginUploadPackageVersionContent - {PackageName, PackageVersionName, [uint8_t]} -> {ResultCode}
-
EndUploadPackageVersionContent - {PackageName, PackageVersionName} -> {ResultCode}
-
DeletePackageVersion - {PackageName, PackageVersionId} -> {ResultCode}
-
UpdatePackageVersionType - {PackageName, PackageVersionName, Type} -> {ResultCode}
-
AddCanGetPackageVersion - {PackageName, PackageVersionName, UserName} -> {ResultCode}
-
DeleteCanGetPackageVersion - {PackageName, PackageVersionName, UserName} -> {ResultCode}
-
GetPackageVersionPageCount - {PackageName, PackageVersionName} -> {PageCount}
-
GetPackageVersionPage - {PackageName, PackageVersionName,PageNumber}-> {PageNumber,[uint8_t]}
-
RatePackageVersion - {PackageName, PackageVersionName, Rating} -> {ResultCode}
Sorting {ByPackageRatingUp, ByPackageRatingDown, ByPackageNameUp, ByPackageNameDown, ByDownloadCountUp, ByDownloadCountDown, ByUserNameUp, ByUserNameDown} ResultCode {Ok, Fail, EmailIsExist}
User
- Id uid [unique]
- Name string [unique]
- Email string [unique]
- PasswordHash string
- Permit uint8 {0-None, 1-PackageOperation}
Package
- Id uid unique
- Name string unique
- MasterUserId uid
- Info string
- PackageType uint8 {0-Private, 1-Public}
- ProjectUrl string
- ScreenUrl string
PackageVersion
- Id uid unique
- Name string
- PackageId uid
- DateTime DateTime
- Content Binary
PackageVersionAccess
- Id uid unique
- UserId uid
- PackageId uid
- PackageVersionId uid
- AccessLevel uint8 = Read
PackageRating
- Id uid unique
- PackageId uid
- UserId uid
- Rating int8
PackageVersionRating
- Id uid unique
- PackageId uid
- PackageVersionId uid
- UserId uid
- Rating int8
PackageVersionDownloadStat
- Id uid unique
- PackageId uid
- PackageVersionId uid
- UserId uid
- DateTime DateTime