2020-02-20 Fred Gleason <fredg@paravelsystems.com>

* Rebased 'RDUpload' to 'RDTransfer'.
This commit is contained in:
Fred Gleason
2020-02-20 11:42:32 -05:00
parent d7f395f7db
commit a75850637f
7 changed files with 33 additions and 58 deletions

View File

@@ -19571,3 +19571,5 @@
* Added 'file' support to 'RDDelete'.
* Refactored RSS generation to occur in 'RDFeed'.
* Added a 'delete_test' test harness.
2020-02-20 Fred Gleason <fredg@paravelsystems.com>
* Rebased 'RDUpload' to 'RDTransfer'.

View File

@@ -736,7 +736,7 @@ unsigned RDFeed::postCut(RDUser *user,RDStation *station,
unsigned cast_id=CreateCast(&destfile,length,cut->length());
delete cut;
cast=new RDPodcast(feed_config,cast_id);
upload=new RDUpload(this);
upload=new RDUpload(rda->config(),this);
upload->setSourceFile(tmpfile);
upload->setDestinationUrl(purgeUrl()+"/"+cast->audioFilename());
switch((upload_err=upload->runUpload(purgeUsername(),purgePassword(),
@@ -855,7 +855,7 @@ unsigned RDFeed::postFile(RDStation *station,const QString &srcfile,Error *err,
unsigned cast_id=CreateCast(&destfile,length,time_length);
RDPodcast *cast=new RDPodcast(feed_config,cast_id);
upload=new RDUpload(this);
upload=new RDUpload(rda->config(),this);
upload->setSourceFile(tmpfile);
upload->setDestinationUrl(purgeUrl()+"/"+cast->audioFilename());
switch((upload_err=upload->runUpload(purgeUsername(),purgePassword(),

View File

@@ -71,13 +71,25 @@ int UploadErrorCallback(CURL *curl,curl_infotype type,char *msg,size_t size,
}
RDUpload::RDUpload(QObject *parent)
: QObject(parent)
RDUpload::RDUpload(RDConfig *c,QObject *parent)
: RDTransfer(c,parent)
{
conv_aborting=false;
}
QStringList RDUpload::supportedSchemes() const
{
QStringList schemes;
schemes.push_back("file");
schemes.push_back("ftp");
schemes.push_back("sftp");
return schemes;
}
void RDUpload::setSourceFile(const QString &filename)
{
conv_src_filename=filename;
@@ -109,6 +121,10 @@ RDUpload::ErrorCode RDUpload::runUpload(const QString &username,
RDSystemUser *user=NULL;
char userpwd[256];
if(!urlIsSupported(conv_dst_url)) {
return RDUpload::ErrorUnsupportedProtocol;
}
//
// Validate User for file: transfers
//

View File

@@ -21,10 +21,11 @@
#ifndef RDUPLOAD_H
#define RDUPLOAD_H
#include <qobject.h>
#include <qurl.h>
class RDUpload : public QObject
#include <rdtransfer.h>
class RDUpload : public RDTransfer
{
Q_OBJECT;
public:
@@ -34,7 +35,8 @@ class RDUpload : public QObject
ErrorUnspecified=8,ErrorInvalidUser=9,ErrorAborted=10,
ErrorInvalidLogin=11,ErrorRemoteAccess=12,
ErrorRemoteConnection=13};
RDUpload(QObject *parent=0);
RDUpload(RDConfig *c,QObject *parent=0);
QStringList supportedSchemes() const;
void setSourceFile(const QString &filename);
void setDestinationUrl(const QString &url);
int totalSteps() const;

View File

@@ -2,7 +2,7 @@
//
// Batch Routines for the Rivendell netcatcher daemon
//
// (C) Copyright 2002-2019 Fred Gleason <fredg@paravelsystems.com>
// (C) Copyright 2002-2020 Fred Gleason <fredg@paravelsystems.com>
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License version 2 as
@@ -314,7 +314,7 @@ void MainObject::RunUpload(CatchEvent *evt)
(const char *)evt->tempName().toUtf8(),
(const char *)evt->resolvedUrl().toUtf8(),
evt->id());
RDUpload *conv=new RDUpload(this);
RDUpload *conv=new RDUpload(rda->config(),this);
conv->setSourceFile(evt->tempName());
conv->setDestinationUrl(evt->resolvedUrl());
QString url_username=evt->urlUsername();

View File

@@ -2,7 +2,7 @@
//
// Replicator implementation for the Citadel XDS Portal
//
// (C) Copyright 2010-2019 Fred Gleason <fredg@paravelsystems.com>
// (C) Copyright 2010-2020 Fred Gleason <fredg@paravelsystems.com>
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License version 2 as
@@ -366,7 +366,7 @@ bool CitadelXds::PostCut(const QString &cutname,const QString &filename)
//
// Upload File
//
RDUpload *upload=new RDUpload();
RDUpload *upload=new RDUpload(rda->config());
upload->setSourceFile(tempfile);
upload->setDestinationUrl(config()->url()+"/"+filename);
switch(upload_err=upload->runUpload(config()->urlUsername(),

View File

@@ -2,7 +2,7 @@
//
// Test Rivendell file uploading.
//
// (C) Copyright 2010,2016 Fred Gleason <fredg@paravelsystems.com>
// (C) Copyright 2010-2020 Fred Gleason <fredg@paravelsystems.com>
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License version 2 as
@@ -74,33 +74,6 @@ MainObject::MainObject(QObject *parent)
}
}
/*
//
// Read Command Options
//
RDCmdSwitch *cmd=
new RDCmdSwitch(qApp->argc(),qApp->argv(),"upload_test",
UPLOAD_TEST_USAGE);
for(unsigned i=0;i<cmd->keys();i++) {
if(cmd->key(i)=="--username") {
username=cmd->value(i);
cmd->setProcessed(i,true);
}
if(cmd->key(i)=="--password") {
password=cmd->value(i);
cmd->setProcessed(i,true);
}
if(cmd->key(i)=="--source-file") {
source_filename=cmd->value(i);
cmd->setProcessed(i,true);
}
if(cmd->key(i)=="--destination-url") {
destination_url=cmd->value(i);
cmd->setProcessed(i,true);
}
}
*/
//
// Sanity Checks
//
@@ -112,29 +85,11 @@ MainObject::MainObject(QObject *parent)
fprintf(stderr,"upload_test: missing destination-url\n");
exit(256);
}
/*
//
// Read Configuration
//
rdconfig=new RDConfig();
rdconfig->load();
rdconfig->setModuleName("upload_test");
//
// Open Database
//
QString err (tr("upload_test: "));
QSqlDatabase *db=RDInitDb(&schema,&err);
if(!db) {
fprintf(stderr,err.ascii());
delete cmd;
exit(256);
}
*/
//
// Run the Test
//
RDUpload *conv=new RDUpload(this);
RDUpload *conv=new RDUpload(rda->config(),this);
conv->setSourceFile(source_filename);
conv->setDestinationUrl(destination_url);
printf("Uploading...\n");