Ticket #11386: services-api.v2.patch

File services-api.v2.patch, 16.6 KB (added by Bill Meek <keemllib@…>, 6 years ago)

Built on: v0.28-pre-813-g501de62, adds language tests and SG size (and fixes typo in v1.)

  • new file mythtv/libs/libmythservicecontracts/datacontracts/buildInfo.h

    diff --git a/mythtv/libs/libmythservicecontracts/datacontracts/buildInfo.h b/mythtv/libs/libmythservicecontracts/datacontracts/buildInfo.h
    new file mode 100644
    index 0000000..ede9c3a
    - +  
     1//////////////////////////////////////////////////////////////////////////////
     2// Program Name: buildInfo.h
     3// Created     : Feb.  4, 2014
     4//
     5// Copyright (c) 2014 Bill Meek, from: 2010 David Blain <dblain@mythtv.org>
     6//
     7// Licensed under the GPL v2 or later, see COPYING for details
     8//
     9//////////////////////////////////////////////////////////////////////////////
     10
     11#ifndef BUILDINFO_H_
     12#define BUILDINFO_H_
     13
     14#include <QString>
     15
     16#include "serviceexp.h"
     17#include "datacontracthelper.h"
     18
     19namespace DTC
     20{
     21
     22class SERVICE_PUBLIC BuildInfo : public QObject
     23{
     24    Q_OBJECT
     25
     26    Q_CLASSINFO( "version"    , "1.0" );
     27
     28    Q_PROPERTY( bool     LibX264      READ LibX264     WRITE setLibX264   )
     29    Q_PROPERTY( bool     LibDNS_SD    READ LibDNS_SD   WRITE setLibDNS_SD )
     30
     31    PROPERTYIMP( bool    , LibX264   )
     32    PROPERTYIMP( bool    , LibDNS_SD )
     33
     34    public:
     35
     36        static void InitializeCustomTypes()
     37        {
     38            qRegisterMetaType< BuildInfo   >();
     39            qRegisterMetaType< BuildInfo*  >();
     40        }
     41
     42    public:
     43
     44        BuildInfo(QObject *parent = 0)
     45            : QObject    ( parent ),
     46              m_LibX264  ( false  ),
     47              m_LibDNS_SD( false  )
     48        {
     49        }
     50
     51        BuildInfo( const BuildInfo &src )
     52        {
     53            Copy( src );
     54        }
     55
     56        void Copy( const BuildInfo &src )
     57        {
     58            m_LibX264   = src.m_LibX264  ;
     59            m_LibDNS_SD = src.m_LibDNS_SD;
     60        }
     61};
     62
     63typedef BuildInfo* BuildInfoPtr;
     64
     65} // namespace DTC
     66
     67Q_DECLARE_METATYPE( DTC::BuildInfo  )
     68Q_DECLARE_METATYPE( DTC::BuildInfo* )
     69
     70
     71#endif
  • new file mythtv/libs/libmythservicecontracts/datacontracts/configurationInfo.h

    diff --git a/mythtv/libs/libmythservicecontracts/datacontracts/configurationInfo.h b/mythtv/libs/libmythservicecontracts/datacontracts/configurationInfo.h
    new file mode 100644
    index 0000000..1aa1920
    - +  
     1//////////////////////////////////////////////////////////////////////////////
     2// Program Name: configurationInfo.h
     3// Created     : Feb.  4, 2014
     4//
     5// Copyright (c) 2014 Bill Meek, from: 2010 David Blain <dblain@mythtv.org>
     6//
     7// Licensed under the GPL v2 or later, see COPYING for details
     8//
     9//////////////////////////////////////////////////////////////////////////////
     10
     11#ifndef CONFIGURATIONINFO_H_
     12#define CONFIGURATIONINFO_H_
     13
     14#include "serviceexp.h"
     15#include "datacontracthelper.h"
     16
     17#include "buildInfo.h"
     18#include "envInfo.h"
     19#include "logInfo.h"
     20
     21namespace DTC
     22{
     23
     24class SERVICE_PUBLIC ConfigurationInfo : public QObject
     25{
     26    Q_OBJECT
     27
     28    Q_CLASSINFO( "version"    , "1.0" );
     29
     30    Q_PROPERTY( QObject*    Build   READ Build )
     31    Q_PROPERTY( QObject*    Env     READ Env   )
     32    Q_PROPERTY( QObject*    Log     READ Log   )
     33
     34    PROPERTYIMP_PTR( BuildInfo, Build )
     35    PROPERTYIMP_PTR( EnvInfo,   Env   )
     36    PROPERTYIMP_PTR( LogInfo,   Log   )
     37
     38    public:
     39
     40        static void InitializeCustomTypes()
     41        {
     42            qRegisterMetaType< ConfigurationInfo   >();
     43            qRegisterMetaType< ConfigurationInfo*  >();
     44
     45            BuildInfo::InitializeCustomTypes();
     46            EnvInfo  ::InitializeCustomTypes();
     47            LogInfo  ::InitializeCustomTypes();
     48        }
     49
     50    public:
     51
     52        ConfigurationInfo(QObject *parent = 0)
     53            : QObject   ( parent ),
     54              m_Build   ( NULL   ),
     55              m_Env     ( NULL   ),
     56              m_Log     ( NULL   )
     57        {
     58        }
     59
     60        ConfigurationInfo( const ConfigurationInfo &src )
     61            : m_Build  ( NULL ),
     62              m_Env    ( NULL ),
     63              m_Log    ( NULL )
     64        {
     65            Copy( src );
     66        }
     67
     68        void Copy( const ConfigurationInfo &src )
     69        {
     70            // We always need to make sure the child object is
     71            // created with the correct parent *
     72
     73            if (src.m_Build)
     74                Build()->Copy( src.m_Build );
     75
     76            if (src.m_Env)
     77                Env()->Copy( src.m_Env  );
     78
     79            if (src.m_Log)
     80                Log()->Copy( src.m_Log  );
     81
     82        }
     83};
     84
     85typedef ConfigurationInfo* ConfigurationInfoPtr;
     86
     87} // namespace DTC
     88
     89Q_DECLARE_METATYPE( DTC::ConfigurationInfo  )
     90Q_DECLARE_METATYPE( DTC::ConfigurationInfo* )
     91
     92#endif
  • new file mythtv/libs/libmythservicecontracts/datacontracts/envInfo.h

    diff --git a/mythtv/libs/libmythservicecontracts/datacontracts/envInfo.h b/mythtv/libs/libmythservicecontracts/datacontracts/envInfo.h
    new file mode 100644
    index 0000000..e71c511
    - +  
     1//////////////////////////////////////////////////////////////////////////////
     2// Program Name: envInfo.h
     3// Created     : Feb.  4, 2014
     4//
     5// Copyright (c) 2014 Bill Meek, from: 2010 David Blain <dblain@mythtv.org>
     6//
     7// Licensed under the GPL v2 or later, see COPYING for details
     8//
     9//////////////////////////////////////////////////////////////////////////////
     10
     11#ifndef ENVINFO_H_
     12#define ENVINFO_H_
     13
     14#include <QString>
     15
     16#include "serviceexp.h"
     17#include "datacontracthelper.h"
     18
     19namespace DTC
     20{
     21
     22class SERVICE_PUBLIC EnvInfo : public QObject
     23{
     24    Q_OBJECT
     25
     26    Q_CLASSINFO( "version"    , "1.0" );
     27
     28    Q_PROPERTY( QString       LANG        READ LANG       WRITE setLANG     )
     29    Q_PROPERTY( QString       LC_ALL      READ LC_ALL     WRITE setLC_ALL   )
     30    Q_PROPERTY( QString       LC_CTYPE    READ LC_CTYPE   WRITE setLC_CTYPE )
     31
     32    PROPERTYIMP( QString,     LANG     )
     33    PROPERTYIMP( QString,     LC_ALL   )
     34    PROPERTYIMP( QString,     LC_CTYPE )
     35
     36    public:
     37
     38        static void InitializeCustomTypes()
     39        {
     40            qRegisterMetaType< EnvInfo   >();
     41            qRegisterMetaType< EnvInfo*  >();
     42        }
     43
     44    public:
     45
     46        EnvInfo(QObject *parent = 0)
     47            : QObject    ( parent ),
     48              m_LANG(      ""     ),
     49              m_LC_ALL(    ""     ),
     50              m_LC_CTYPE(  ""     )
     51        {
     52        }
     53
     54        EnvInfo( const EnvInfo &src )
     55        {
     56            Copy( src );
     57        }
     58
     59        void Copy( const EnvInfo &src )
     60        {
     61            m_LANG     = src.m_LANG;
     62            m_LC_ALL   = src.m_LC_ALL;
     63            m_LC_CTYPE = src.m_LC_CTYPE;
     64        }
     65};
     66
     67typedef EnvInfo* EnvInfoPtr;
     68
     69} // namespace DTC
     70
     71Q_DECLARE_METATYPE( DTC::EnvInfo  )
     72Q_DECLARE_METATYPE( DTC::EnvInfo* )
     73
     74
     75#endif
  • new file mythtv/libs/libmythservicecontracts/datacontracts/logInfo.h

    diff --git a/mythtv/libs/libmythservicecontracts/datacontracts/logInfo.h b/mythtv/libs/libmythservicecontracts/datacontracts/logInfo.h
    new file mode 100644
    index 0000000..347630e
    - +  
     1//////////////////////////////////////////////////////////////////////////////
     2// Program Name: logInfo.h
     3// Created     : Feb.  4, 2014
     4//
     5// Copyright (c) 2014 Bill Meek, from: 2010 David Blain <dblain@mythtv.org>
     6//
     7// Licensed under the GPL v2 or later, see COPYING for details
     8//
     9//////////////////////////////////////////////////////////////////////////////
     10
     11#ifndef LOGINFO_H_
     12#define LOGINFO_H_
     13
     14#include <QString>
     15
     16#include "serviceexp.h"
     17#include "datacontracthelper.h"
     18
     19namespace DTC
     20{
     21
     22class SERVICE_PUBLIC LogInfo : public QObject
     23{
     24    Q_OBJECT
     25
     26    Q_CLASSINFO( "version"    , "1.0" );
     27    Q_CLASSINFO( "defaultProp", "LogArgs" );
     28
     29    Q_PROPERTY( QString  LogArgs      READ LogArgs   WRITE setLogArgs   )
     30
     31    PROPERTYIMP( QString,  LogArgs   )
     32
     33    public:
     34
     35        static void InitializeCustomTypes()
     36        {
     37            qRegisterMetaType< LogInfo   >();
     38            qRegisterMetaType< LogInfo*  >();
     39        }
     40
     41    public:
     42
     43        LogInfo(QObject *parent = 0)
     44            : QObject    ( parent ),
     45              m_LogArgs  ( ""     )
     46        {
     47        }
     48
     49        LogInfo( const LogInfo &src )
     50        {
     51            Copy( src );
     52        }
     53
     54        void Copy( const LogInfo &src )
     55        {
     56            m_LogArgs   = src.m_LogArgs  ;
     57        }
     58};
     59
     60typedef LogInfo* LogInfoPtr;
     61
     62} // namespace DTC
     63
     64Q_DECLARE_METATYPE( DTC::LogInfo  )
     65Q_DECLARE_METATYPE( DTC::LogInfo* )
     66
     67
     68#endif
  • mythtv/libs/libmythservicecontracts/datacontracts/storageGroupDir.h

    diff --git a/mythtv/libs/libmythservicecontracts/datacontracts/storageGroupDir.h b/mythtv/libs/libmythservicecontracts/datacontracts/storageGroupDir.h
    index 8c38b1f..3f0049f 100644
    a b namespace DTC 
    1414class SERVICE_PUBLIC StorageGroupDir : public QObject
    1515{
    1616    Q_OBJECT
    17     Q_CLASSINFO( "version"    , "1.0" );
     17    Q_CLASSINFO( "version"    , "1.1" );
    1818
    1919    Q_PROPERTY( int             Id              READ Id               WRITE setId             )
    2020    Q_PROPERTY( QString         GroupName       READ GroupName        WRITE setGroupName      )
    2121    Q_PROPERTY( QString         HostName        READ HostName         WRITE setHostName       )
    2222    Q_PROPERTY( QString         DirName         READ DirName          WRITE setDirName        )
     23    Q_PROPERTY( bool            DirPerms        READ DirPerms         WRITE setDirPerms       )
     24    Q_PROPERTY( int             FreeSpace       READ FreeSpace        WRITE setFreeSpace      )
    2325
    2426    PROPERTYIMP    ( int        , Id             )
    2527    PROPERTYIMP    ( QString    , GroupName      )
    2628    PROPERTYIMP    ( QString    , HostName       )
    2729    PROPERTYIMP    ( QString    , DirName        )
     30    PROPERTYIMP    ( bool       , DirPerms       )
     31    PROPERTYIMP    ( int        , FreeSpace      )
    2832
    2933    public:
    3034
    class SERVICE_PUBLIC StorageGroupDir : public QObject 
    4953            m_GroupName     = src.m_GroupName     ;
    5054            m_HostName      = src.m_HostName      ;
    5155            m_DirName       = src.m_DirName       ;
     56            m_DirPerms      = src.m_DirPerms      ;
     57            m_FreeSpace     = src.m_FreeSpace     ;
    5258        }
    5359};
    5460
  • mythtv/libs/libmythservicecontracts/libmythservicecontracts.pro

    diff --git a/mythtv/libs/libmythservicecontracts/libmythservicecontracts.pro b/mythtv/libs/libmythservicecontracts/libmythservicecontracts.pro
    index dc3a7a8..6808f30 100644
    a b HEADERS += datacontracts/channelGroupList.h datacontracts/input.h 
    5050HEADERS += datacontracts/inputList.h
    5151HEADERS += datacontracts/recRuleFilter.h         datacontracts/recRuleFilterList.h
    5252HEADERS += datacontracts/castMember.h            datacontracts/castMemberList.h
     53HEADERS += datacontracts/buildInfo.h             datacontracts/logInfo.h
     54HEADERS += datacontracts/configurationInfo.h     datacontracts/envInfo.h
    5355
    5456SOURCES += service.cpp
    5557
    incDatacontracts.files += datacontracts/channelGroupList.h datacontracts/inpu 
    9698incDatacontracts.files += datacontracts/inputList.h
    9799incDatacontracts.files += datacontracts/recRuleFilter.h       datacontracts/recRuleFilterList.h
    98100incDatacontracts.files += datacontracts/castMember.h          datacontracts/castMemberList.h
     101incDatacontracts.files += datacontracts/buildInfo.h           datacontracts/logInfo.h
     102incDatacontracts.files += datacontracts/configurationInfo.h   datacontracts/envInfo.h
    99103
    100104INSTALLS += inc incServices incDatacontracts
    101105
  • mythtv/libs/libmythservicecontracts/services/mythServices.h

    diff --git a/mythtv/libs/libmythservicecontracts/services/mythServices.h b/mythtv/libs/libmythservicecontracts/services/mythServices.h
    index 5ded78c..a9b0399 100644
    a b  
    2222#include "datacontracts/timeZoneInfo.h"
    2323#include "datacontracts/logMessage.h"
    2424#include "datacontracts/logMessageList.h"
     25#include "datacontracts/configurationInfo.h"
    2526
    2627/////////////////////////////////////////////////////////////////////////////
    2728/////////////////////////////////////////////////////////////////////////////
     
    4243class SERVICE_PUBLIC MythServices : public Service  //, public QScriptable ???
    4344{
    4445    Q_OBJECT
    45     Q_CLASSINFO( "version"    , "3.0" );
     46    Q_CLASSINFO( "version"    , "4.0" );
    4647    Q_CLASSINFO( "PutSetting_Method",            "POST" )
    4748    Q_CLASSINFO( "AddStorageGroupDir_Method",    "POST" )
    4849    Q_CLASSINFO( "RemoveStorageGroupDir_Method", "POST" )
    class SERVICE_PUBLIC MythServices : public Service //, public QScriptable ??? 
    6667            DTC::TimeZoneInfo       ::InitializeCustomTypes();
    6768            DTC::LogMessage         ::InitializeCustomTypes();
    6869            DTC::LogMessageList     ::InitializeCustomTypes();
     70            DTC::ConfigurationInfo  ::InitializeCustomTypes();
    6971        }
    7072
    7173    public slots:
    class SERVICE_PUBLIC MythServices : public Service //, public QScriptable ??? 
    161163        virtual QString             ProfileUpdated      ( void ) = 0;
    162164
    163165        virtual QString             ProfileText         ( void ) = 0;
     166
     167        virtual DTC::ConfigurationInfo* GetConfigurationInfo  ( void ) = 0;
    164168};
    165169
    166170#endif
  • mythtv/programs/mythbackend/services/myth.cpp

    diff --git a/mythtv/programs/mythbackend/services/myth.cpp b/mythtv/programs/mythbackend/services/myth.cpp
    index 4645891..e77c18e 100644
    a b  
    2626#include "myth.h"
    2727
    2828#include <QDir>
     29#include <QFileInfo>
    2930#include <QCryptographicHash>
    3031#include <QHostAddress>
    3132#include <QUdpSocket>
    3233
     34#include "config.h"
    3335#include "version.h"
    3436#include "mythversion.h"
    3537#include "mythcorecontext.h"
     38#include "mythcoreutil.h"
    3639#include "mythdbcon.h"
    3740#include "mythlogging.h"
    3841#include "storagegroup.h"
    DTC::StorageGroupDirList *Myth::GetStorageGroupDirs( const QString &sGroupName, 
    249252    while (query.next())
    250253    {
    251254        DTC::StorageGroupDir *pStorageGroupDir = pList->AddNewStorageGroupDir();
     255        QFileInfo fi(query.value(3).toString());
     256        int64_t free, total, used;
     257
     258        free = getDiskSpace(query.value(3).toString(), total, used);
    252259
    253260        pStorageGroupDir->setId            ( query.value(0).toInt()       );
    254261        pStorageGroupDir->setGroupName     ( query.value(1).toString()    );
    255262        pStorageGroupDir->setHostName      ( query.value(2).toString()    );
    256263        pStorageGroupDir->setDirName       ( query.value(3).toString()    );
     264        pStorageGroupDir->setDirPerms    ( fi.isReadable() && fi.isWritable() );
     265        pStorageGroupDir->setFreeSpace     ( free                         );
    257266    }
    258267
    259268    return pList;
    QString Myth::ProfileText() 
    10551064    return sProfileText;
    10561065}
    10571066
     1067/////////////////////////////////////////////////////////////////////////////
     1068//
     1069/////////////////////////////////////////////////////////////////////////////
     1070
     1071DTC::ConfigurationInfo* Myth::GetConfigurationInfo( void )
     1072{
     1073
     1074    // ----------------------------------------------------------------------
     1075    // Create and populate a Configuration object
     1076    // ----------------------------------------------------------------------
     1077
     1078    DTC::ConfigurationInfo *pInfo      = new DTC::ConfigurationInfo();
     1079    DTC::BuildInfo         *pBuild     = pInfo->Build();
     1080    DTC::EnvInfo           *pEnv       = pInfo->Env();
     1081    DTC::LogInfo           *pLog       = pInfo->Log();
     1082
     1083    pBuild->setLibX264     ( CONFIG_LIBX264     );
     1084    pBuild->setLibDNS_SD   ( CONFIG_LIBDNS_SD   );
     1085    pEnv->setLANG          ( getenv("LANG")     );
     1086    pEnv->setLC_ALL        ( getenv("LC_ALL")   );
     1087    pEnv->setLC_CTYPE      ( getenv("LC_CTYPE") );
     1088    pLog->setLogArgs       ( logPropagateArgs   );
     1089
     1090    // ----------------------------------------------------------------------
     1091    // Return the pointer... caller is responsible to delete it!!!
     1092    // ----------------------------------------------------------------------
     1093
     1094    return pInfo;
     1095
     1096}
  • mythtv/programs/mythbackend/services/myth.h

    diff --git a/mythtv/programs/mythbackend/services/myth.h b/mythtv/programs/mythbackend/services/myth.h
    index f515d13..7e4a427 100644
    a b class Myth : public MythServices 
    132132        QString             ProfileUpdated      ( void );
    133133
    134134        QString             ProfileText         ( void );
     135
     136        DTC::ConfigurationInfo*   GetConfigurationInfo  ( void );
    135137};
    136138
    137139// --------------------------------------------------------------------------
    class ScriptableMyth : public QObject 
    300302        {
    301303            return m_obj.ProfileText();
    302304        }
     305
     306        QObject* GetConfigurationInfo  ( void )
     307        {
     308            return m_obj.GetConfigurationInfo();
     309        }
    303310};
    304311
    305312