1/*
2 * Copyright 2017-2018, Andrew Lindesay <apl@lindesay.co.nz>.
3 * All rights reserved. Distributed under the terms of the MIT License.
4 */
5
6#ifndef SERVER_SETTINGS_H
7#define SERVER_SETTINGS_H
8
9#include <File.h>
10#include <HttpHeaders.h>
11#include <Locker.h>
12#include <String.h>
13#include <Url.h>
14
15
16using BPrivate::Network::BHttpHeaders;
17
18class ServerSettings {
19public:
20		static status_t					SetBaseUrl(const BUrl& baseUrl);
21		static const BString			GetUserAgent();
22		static void						AugmentHeaders(BHttpHeaders& headers);
23		static BUrl						CreateFullUrl(
24											const BString urlPathComponents);
25
26		static bool						PreferCache();
27		static void						SetPreferCache(bool value);
28		static bool						DropCache();
29		static void						SetDropCache(bool value);
30		static bool						ForceNoNetwork();
31		static void						SetForceNoNetwork(bool value);
32		static bool						IsClientTooOld();
33		static void						SetClientTooOld();
34
35private:
36		static void						_InitUserAgent();
37		static const BString			_GetUserAgentVersionString();
38
39		static BLocker			sLock;
40		static BUrl						sBaseUrl;
41		static BString					sUserAgent;
42		static pthread_once_t			sUserAgentInitOnce;
43		static bool						sPreferCache;
44		static bool						sDropCache;
45		static bool						sForceNoNetwork;
46		static bool						sClientTooOld;
47};
48
49#endif // SERVER_SETTINGS_H
50