MythTV master
servicehost.h
Go to the documentation of this file.
1
2// Program Name: servicehost.h
3// Created : Jan. 19, 2010
4//
5// Purpose : Service Host Abstract Class
6//
7// Copyright (c) 2010 David Blain <dblain@mythtv.org>
8//
9// Licensed under the GPL v2 or later, see LICENSE for details
10//
12
13#ifndef SERVICEHOST_H_
14#define SERVICEHOST_H_
15
16#include <QChar> // Fix Qt6 GCC SFINAE warning
17#include <QMetaObject>
18#include <QMetaMethod>
19#include <QMap>
20#include <QString>
21#include <QVariant>
22
24
27
30//
31//
32//
35
37{
38 public:
39
41 QString m_sName;
42 QMetaMethod m_oMethod;
46
47 public:
48 MethodInfo() = default;
49
50 QVariant Invoke( Service *pService, const QStringMap &reqParams ) const;
51};
52
53using MetaInfoMap = QMap< QString, MethodInfo >;
54
57//
58// ServiceHost is used for Standard Web Services Only
59//
60// (It does NOT expose anything as upnp devices/services)
61//
64
66{
67 protected:
68
69 QString m_sBaseUrl;
70
71 QMetaObject m_oMetaObject {};
73
74 protected:
75
76 virtual bool FormatResponse( HTTPRequest *pRequest, QObject *pResults );
77 virtual bool FormatResponse( HTTPRequest *pRequest, const QFileInfo& oInfo );
78 virtual bool FormatResponse( HTTPRequest *pRequest, const QVariant& vValue );
79
80 public:
81
82 ServiceHost( const QMetaObject &metaObject,
83 const QString &sExtensionName,
84 QString sBaseUrl,
85 const QString &sSharePath );
86 ~ServiceHost() override = default;
87
88 QStringList GetBasePaths() override; // HttpServerExtension
89
90 bool ProcessRequest( HTTPRequest *pRequest ) override; // HttpServerExtension
91
92 virtual QString GetServiceControlURL() { return m_sBaseUrl.mid( 1 ); }
93
94 const QMetaObject& GetServiceMetaObject() { return m_oMetaObject; }
95 const MetaInfoMap& GetMethods () { return m_methods; }
96
97};
98
99#endif
HttpRequestType m_eRequestType
Definition: servicehost.h:43
MethodInfo()=default
int m_nMethodIndex
Definition: servicehost.h:40
QString m_sName
Definition: servicehost.h:41
QVariant Invoke(Service *pService, const QStringMap &reqParams) const
Definition: servicehost.cpp:26
QMetaMethod m_oMethod
Definition: servicehost.h:42
MetaInfoMap m_methods
Definition: servicehost.h:72
virtual bool FormatResponse(HTTPRequest *pRequest, QObject *pResults)
bool ProcessRequest(HTTPRequest *pRequest) override
const MetaInfoMap & GetMethods()
Definition: servicehost.h:95
QString m_sBaseUrl
Definition: servicehost.h:69
QStringList GetBasePaths() override
const QMetaObject & GetServiceMetaObject()
Definition: servicehost.h:94
ServiceHost(const QMetaObject &metaObject, const QString &sExtensionName, QString sBaseUrl, const QString &sSharePath)
~ServiceHost() override=default
virtual QString GetServiceControlURL()
Definition: servicehost.h:92
QMetaObject m_oMetaObject
Definition: servicehost.h:71
HttpRequestType
Definition: httprequest.h:47
@ RequestTypePost
Definition: httprequest.h:52
@ RequestTypeGet
Definition: httprequest.h:50
@ RequestTypeHead
Definition: httprequest.h:51
QMap< QString, MethodInfo > MetaInfoMap
Definition: servicehost.h:53
QMap< QString, QString > QStringMap
Definition: upnputil.h:28