summaryrefslogtreecommitdiff
path: root/responsememblk.h
blob: b119b8fa8383f9bbce882c2cda42a8b58008ee67 (plain)
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
/*
 * responsememblk.h: VDR on Smart TV plugin
 *
 * Copyright (C) 2012, 2013 T. Lohmar
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 * Or, point your browser to http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
 *
 */

#ifndef __RESPONSE_MEMBLK_H__
#define __RESPONSE_MEMBLK_H__

#include <cstdio>
#include <sys/stat.h>
#include <string>
#include <vector>
#include "responsebase.h"

#include <vdr/config.h>

using namespace std;

struct sFileEntry {
  bool sHaveMeta;
  string sName;
  string sPath;
  int sStart;
  string sMime;
  
  string sTitle;
  string sShortDesc;
  string sLongDesc;
  float sDuration;

sFileEntry(string n, string l, int s, string m) : sHaveMeta(false), sName(n), sPath(l), 
    sStart(s), sMime(m), sTitle(""), sShortDesc("NA"), sLongDesc("NA"), sDuration(0.0) {
};

sFileEntry(string n, string l, int s, string m, string t, string desc, string ldes, float dur) : sHaveMeta(true), 
    sName(n), sPath(l), sStart(s), sMime(m), sTitle(t), sShortDesc(desc), sLongDesc(ldes), sDuration(dur) {
};
};


class cResumeEntry;
class cHttpResource;

// create the complete response for the file request
// info on range request should be provided.
class cResponseMemBlk : public cResponseBase {
 public:
  cResponseMemBlk(cHttpResource* );
  virtual ~cResponseMemBlk(); // same as sendFile

  int fillDataBlk();

  int sendRecordingsXml (struct stat *statbuf);
  int GetRecordings ();

  int sendChannelsXml (struct stat *statbuf);
  int sendResumeXml ();
  int sendMarksXml ();
  int sendVdrStatusXml (struct stat *statbuf);
  void sendServerNameXml ();
  int sendYtBookmarkletJs();
  int sendBmlInstHtml();

  int sendMp4Covr();
  void sendWidgetConf();

  int sendEpgXml (struct stat *statbuf);
  int sendUrlsXml ();
  int sendMediaXml (struct stat *statbuf);
  int sendManifest (struct stat *statbuf, bool is_hls = true);
  void sendTimersXml();
  void sendRecCmds();
  void sendCmds();
  void receiveExecRecCmdReq();
  void receiveExecCmdReq();

  void receiveAddTimerReq();
  void receiveActTimerReq();
  void receiveDelTimerReq();

  void receiveDelFileReq();

  void receiveClientInfo();

  int receiveResume();
  int receiveDelRecReq();

  int receiveYtUrl();
  int receiveDelYtUrl();

  int receiveCfgServerAddrs();

  void writeM3U8(double duration, int bitrate, float seg_dur, int end_seg);
  void writeMPD(double duration, int bitrate, float seg_dur, int end_seg);

  int parseResume(cResumeEntry &entry, string &id);
  int parseFiles(vector<sFileEntry> *entries, string prefix, string dir_base, string dir_name, struct stat *statbuf);
  int sendDir(struct stat *statbuf);
  int writeXmlItem(string title, string link, string programme, bool add_desc, string desc, string guid, 
		   int no, time_t start, int dur, double fps, int is_pes, int is_new, string mime);
  uint64_t getVdrFileSize();

  void post_addToBlacklist();
  void post_removeFromBlacklist();
  void get_blacklist();

 private:
  string *mResponseMessage;
  int mResponseMessagePos;

};

#endif