summaryrefslogtreecommitdiffstats
path: root/src/main/thrift/imagemaster.thrift
blob: 97f4f278dae489c919a5864fdc93019e4e53ed62 (plain) (blame)
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
/**
 * Define some namespace/package name for our stuff
 */

namespace java org.openslx.imagemaster.thrift.iface
namespace php testing

typedef string ID
typedef string Token
typedef string UUID
typedef i64 Date

enum AuthorizationError {
	GENERIC_ERROR,
	NOT_AUTHENTICATED,
	NO_PERMISSION
}

enum AuthenticationError {
	GENERIC_ERROR,
	INVALID_CREDENTIALS,
	ACCOUNT_SUSPENDED,
	BANNED_NETWORK
}

enum ServerAuthenticationError {
	GENERIC_ERROR,
	INVALID_ORGANIZATION,
	BANNED_NETWORK
}

enum ImageDataError {
	INVALID_DATA,
	UNKNOWN_IMAGE
}

exception AuthorizationException {
	1: AuthorizationError number,
	2: string message
}

exception AuthenticationException {
	1: AuthenticationError number,
	2: string message
}

exception InvalidTokenException {
}

exception ServerAuthenticationException {
	1: ServerAuthenticationError number,
	2: string message
}

exception ImageDataException {
	1: ImageDataError number,
	2: string message
}

struct UserInfo {
	1: string userId,
	2: string firstName,
	3: string lastName,
	4: string eMail
}

struct SessionData {
	1: ID sessionId,
	2: Token authToken,
	3: string serverAddress
}

struct FtpCredentials {
	1: string username,
	2: string password
}

struct ServerSessionData {
	1: ID sessionId
}

struct ImageData {
	1: UUID uuid,
	2: i32 imageVersion,
	3: string imageName,
	4: Date imageCreateTime,
	5: Date imageUpdateTime,
	6: string imageOwner,
	7: string conentOperatingSystem,
	8: bool statusIsValid,
	9: bool statusIsDeleted,
	10: string imageShortDescription,
	11: string imageLongDescription,
	12: i64 fileSize
}

service ImageServer {

	bool ping(),

	SessionData authenticate(1:string username, 2:string password) throws (1:AuthenticationException failure),

	UserInfo getUserFromToken(1:Token token) throws (1:InvalidTokenException failure),
	
	string startServerAuthentication(1:string organization) throws (1: ServerAuthenticationException failure),
	
	ServerSessionData serverAuthenticate(1:string organization, 2:binary challengeResponse) throws (1:ServerAuthenticationException failure),
	
	FtpCredentials submitImage(1:string serverSessionId, 2:ImageData imageDescription) throws (1:AuthorizationException failure, 2: ImageDataException failure2),
	
	bool finshedUpload(1:string ftpUser, 2:ImageData imageDescription) throws (1: ImageDataException failure)

}