forked from artyom-beilis/cppcms
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsession.h
More file actions
170 lines (129 loc) · 7.59 KB
/
Copy pathsession.h
File metadata and controls
170 lines (129 loc) · 7.59 KB
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
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
///////////////////////////////////////////////////////////////////////////////
//
// Copyright (C) 2008-2012 Artyom Beilis (Tonkikh) <artyomtnk@yahoo.com>
//
// See accompanying file COPYING.TXT file for licensing details.
//
///////////////////////////////////////////////////////////////////////////////
#ifndef CPPCMS_CAPI_SESSION_H
#define CPPCMS_CAPI_SESSION_H
#include <cppcms/defs.h>
#ifdef __cplusplus
extern "C" {
#endif
///
/// \defgroup capi_session CppCMS C Session API
/// @{
/// \ver{v1_2}
///
/// \defgroup capi_session_expiration Expiration Codes
/// @{
#define CPPCMS_CAPI_SESSION_FIXED 0 ///< Fixed session expiration
#define CPPCMS_CAPI_SESSION_RENEW 1 ///< Session expiration automatically renewed on access
#define CPPCMS_CAPI_SESSION_BROWSER 2 ///< Session is tied to browser session
/// @}
///
/// \defgroup capi_session_error_handling Error Handling
/// @{
#define CPPCMS_CAPI_ERROR_OK 0 ///< Success
#define CPPCMS_CAPI_ERROR_GENERAL 1 ///< Uncategorized error
#define CPPCMS_CAPI_ERROR_RUNTIME 2 ///< Runtime Error occured
#define CPPCMS_CAPI_ERROR_INVALID_ARGUMENT 4 ///< Invalid Argument Provided
#define CPPCMS_CAPI_ERROR_LOGIC 5 ///< Invalid API Use
#define CPPCMS_CAPI_ERROR_ALLOC 6 ///< Allocation Failed
///
/// "Base class" for cppcms_capi_session, cppcms_capi_session_pool, and cppcms_capi_cookie
///
/// Is used to get error status of the object
///
typedef void *cppcms_capi_object;
/// @}
/// Class that represents cppcms::session_pool in C
///
/// \defgroup cppcms_capi_session_pool Session Pool
typedef struct cppcms_capi_session_pool cppcms_capi_session_pool;
/// Class that represents cppcms::session_interface in C
///
/// \defgroup cppcms_capi_session_pool_init_from_json Session Interface
typedef struct cppcms_capi_session cppcms_capi_session;
/// Class that represents cppcms::http::cookie in C
///
/// \defgroup cppcms_capi_session_cookie Cookie
typedef struct cppcms_capi_cookie cppcms_capi_cookie;
///
/// \addtogroup capi_session_error_handling
/// @{
CPPCMS_API int cppcms_capi_error(cppcms_capi_object obj); ///< Get error code for the object
CPPCMS_API char const *cppcms_capi_error_message(cppcms_capi_object obj); ///< Get error message for the object
CPPCMS_API char const *cppcms_capi_error_clear(cppcms_capi_object obj); ///< Clear error and get last message
/// @}
/// \addtogroup cppcms_capi_session_pool
/// @{
/// Create new empty pool object, returns NULL in case of fatal error
CPPCMS_API cppcms_capi_session_pool *cppcms_capi_session_pool_new();
/// Destroys pool object
CPPCMS_API void cppcms_capi_session_pool_delete(cppcms_capi_session_pool *pool);
/// Initialize the pool from CppCMS configuration file,\a config_file
CPPCMS_API int cppcms_capi_session_pool_init(cppcms_capi_session_pool *pool,char const *config_file);
/// Initialize the pool from CppCMS configuration in json fromat \a json
CPPCMS_API int cppcms_capi_session_pool_init_from_json(cppcms_capi_session_pool *pool,char const *json);
/// @}
CPPCMS_API cppcms_capi_session *cppcms_capi_session_new();
CPPCMS_API void cppcms_capi_session_delete(cppcms_capi_session *session);
CPPCMS_API int cppcms_capi_session_init(cppcms_capi_session *session,cppcms_capi_session_pool *pool);
CPPCMS_API int cppcms_capi_session_clear(cppcms_capi_session *session);
CPPCMS_API int cppcms_capi_session_is_set(cppcms_capi_session *session,char const *key);
CPPCMS_API int cppcms_capi_session_erase(cppcms_capi_session *session,char const *key);
CPPCMS_API int cppcms_capi_session_get_exposed(cppcms_capi_session *session,char const *key);
CPPCMS_API int cppcms_capi_session_set_exposed(cppcms_capi_session *session,char const *key,int is_exposed);
CPPCMS_API char const *cppcms_capi_session_get_first_key(cppcms_capi_session *session);
CPPCMS_API char const *cppcms_capi_session_get_next_key(cppcms_capi_session *session);
CPPCMS_API char const *cppcms_capi_session_get_csrf_token(cppcms_capi_session *session);
CPPCMS_API int cppcms_capi_session_set(cppcms_capi_session *session,char const *key,char const *value);
CPPCMS_API char const *cppcms_capi_session_get(cppcms_capi_session *session,char const *key);
CPPCMS_API int cppcms_capi_session_set_binary_as_hex(cppcms_capi_session *session,char const *key,char const *value);
CPPCMS_API char const *cppcms_capi_session_get_binary_as_hex(cppcms_capi_session *session,char const *key);
CPPCMS_API int cppcms_capi_session_set_binary(cppcms_capi_session *session,char const *key,void const *value,int length);
CPPCMS_API int cppcms_capi_session_get_binary(cppcms_capi_session *session,char const *key,void *buf,int buffer_size);
CPPCMS_API int cppcms_capi_session_get_binary_len(cppcms_capi_session *session,char const *key);
CPPCMS_API int cppcms_capi_session_reset_session(cppcms_capi_session *session);
CPPCMS_API int cppcms_capi_session_set_default_age(cppcms_capi_session *session);
CPPCMS_API int cppcms_capi_session_set_age(cppcms_capi_session *session,int t);
CPPCMS_API int cppcms_capi_session_get_age(cppcms_capi_session *session);
CPPCMS_API int cppcms_capi_session_set_default_expiration(cppcms_capi_session *session);
/// Define expiration method
CPPCMS_API int cppcms_capi_session_set_expiration(cppcms_capi_session *session,int t);
/// Get current expiration method
CPPCMS_API int cppcms_capi_session_get_expiration(cppcms_capi_session *session);
CPPCMS_API int cppcms_capi_session_set_on_server(cppcms_capi_session *session,int is_on_server);
CPPCMS_API int cppcms_capi_session_get_on_server(cppcms_capi_session *session);
CPPCMS_API char const *cppcms_capi_session_get_session_cookie_name(cppcms_capi_session *session);
CPPCMS_API int cppcms_capi_session_set_session_cookie(cppcms_capi_session *session,char const *session_cookie_value);
CPPCMS_API int cppcms_capi_session_add_cookie_name(cppcms_capi_session *session,char const *name);
CPPCMS_API int cppcms_capi_session_load(cppcms_capi_session *session);
CPPCMS_API int cppcms_capi_session_save(cppcms_capi_session *session);
CPPCMS_API cppcms_capi_cookie *cppcms_capi_session_cookie_first(cppcms_capi_session *session);
CPPCMS_API cppcms_capi_cookie *cppcms_capi_session_cookie_next(cppcms_capi_session *session);
CPPCMS_API void cppcms_capi_cookie_delete(cppcms_capi_cookie *cookie);
CPPCMS_API char const *cppcms_capi_cookie_header(cppcms_capi_cookie const *cookie);
CPPCMS_API char const *cppcms_capi_cookie_header_content(cppcms_capi_cookie const *cookie);
CPPCMS_API char const *cppcms_capi_cookie_name(cppcms_capi_cookie const *cookie);
CPPCMS_API char const *cppcms_capi_cookie_value(cppcms_capi_cookie const *cookie);
CPPCMS_API char const *cppcms_capi_cookie_path(cppcms_capi_cookie const *cookie);
CPPCMS_API char const *cppcms_capi_cookie_domain(cppcms_capi_cookie const *cookie);
CPPCMS_API int cppcms_capi_cookie_max_age_defined(cppcms_capi_cookie const *cookie);
CPPCMS_API unsigned cppcms_capi_cookie_max_age(cppcms_capi_cookie const *cookie);
CPPCMS_API int cppcms_capi_cookie_expires_defined(cppcms_capi_cookie const *cookie);
CPPCMS_API long long cppcms_capi_cookie_expires(cppcms_capi_cookie const *cookie);
CPPCMS_API int cppcms_capi_cookie_is_secure(cppcms_capi_cookie const *cookie);
CPPCMS_API int cppcms_capi_cookie_is_httponly(cppcms_capi_cookie const *cookie);
CPPCMS_API int cppcms_capi_cookie_samesite_none_defined(cppcms_capi_cookie const *cookie);
CPPCMS_API int cppcms_capi_cookie_samesite_lax_defined(cppcms_capi_cookie const *cookie);
CPPCMS_API int cppcms_capi_cookie_samesite_strict_defined(cppcms_capi_cookie const *cookie);
///
/// @}
///
#ifdef __cplusplus
} // extern "C"
#endif
#endif