Overte C++ Documentation
DomainMetadata.h
1 //
2 // DomainMetadata.h
3 // domain-server/src
4 //
5 // Created by Zach Pomerantz on 5/25/2016.
6 // Copyright 2016 High Fidelity, Inc.
7 // Copyright 2020 Vircadia contributors.
8 //
9 // Distributed under the Apache License, Version 2.0.
10 // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
11 
12 #ifndef hifi_DomainMetadata_h
13 #define hifi_DomainMetadata_h
14 
15 #include <stdint.h>
16 
17 #include <QVariantMap>
18 #include <QJsonObject>
19 #include "HTTPManager.h"
20 
21 class DomainMetadata : public QObject, public HTTPRequestHandler {
22 Q_OBJECT
23 
24 public:
25  using Tic = uint32_t;
26 
27  static const QString USERS;
28  class Users {
29  public:
30  static const QString NUM_TOTAL;
31  static const QString NUM_ANON;
32  static const QString HOSTNAMES;
33  };
34 
35  static const QString DESCRIPTORS;
36  class Descriptors {
37  public:
38  static const QString NAME;
39  static const QString DESCRIPTION;
40  static const QString THUMBNAIL;
41  static const QString IMAGES;
42  static const QString CAPACITY;
43  static const QString RESTRICTION;
44  static const QString MATURITY;
45  static const QString CONTACT;
46  static const QString MANAGERS;
47  static const QString TAGS;
48  };
49 
50  DomainMetadata(QObject* domainServer);
51  ~DomainMetadata() = default;
52  // Get cached metadata
53  QJsonObject get();
54  QJsonObject get(const QString& group);
55 
56  bool handleHTTPRequest(HTTPConnection* connection, const QUrl& url, bool skipSubHandler = false) override;
57 
58 public slots:
59  void descriptorsChanged();
60  void securityChanged(bool send);
61  void usersChanged();
62 
63 protected:
64  void maybeUpdateUsers();
65  void sendDescriptors();
66 
67  QVariantMap _metadata;
68  uint32_t _lastTic{ (uint32_t)-1 };
69  uint32_t _tic{ 0 };
70 };
71 
72 #endif // hifi_DomainMetadata_h
Handles a single HTTP connection.
Definition: HTTPConnection.h:43