Skip to content

Commit

Permalink
Merge pull request #3 from RikudouSage/feature/local-manifest
Browse files Browse the repository at this point in the history
fixes #2 - add local manifest support
  • Loading branch information
RikudouSage authored Sep 2, 2020
2 parents 997a6e0 + b7e4de8 commit 1a4d3f4
Show file tree
Hide file tree
Showing 4 changed files with 74 additions and 21 deletions.
5 changes: 2 additions & 3 deletions androidprojectmodifier.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -123,8 +123,7 @@ QString AndroidProjectModifier::randomString(int length)
const auto possibleCharacters = QStringLiteral("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789");

QString randomString;
for(int i = 0; i < length; ++i)
{
for(int i = 0; i < length; ++i) {
int index = qrand() % possibleCharacters.length();
QChar nextChar = possibleCharacters.at(index);
randomString.append(nextChar);
Expand All @@ -147,7 +146,7 @@ QString AndroidProjectModifier::resizeImage(const QHash<QString, QString> imageD
convert.waitForFinished();

if (convert.exitCode() != 0) {
throw QString("Warning: could not resize the image. Do you have the 'convert' utility installed?");
throw QString("Error: could not resize the image. Do you have the 'convert' utility installed?");
}

return tmpFile.fileName();
Expand Down
27 changes: 21 additions & 6 deletions main.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
#include <QCoreApplication>
#include <QScopedPointer>

#include "inputoutput.h"
#include "githelper.h"
Expand All @@ -15,21 +16,31 @@ int main(int argc, char *argv[])
if (app.arguments().count() < 4 || app.arguments().contains("--help")) {
const auto binaryName = app.arguments().at(0);

io.writeError("Usage: " + binaryName + " androidPackageName pwaUrl outputPath [--manifest path-to-manifest]");
io.writeError("Usage: " + binaryName + " androidPackageName pwaUrl outputPath [--manifest path-to-manifest] [--local-manifest path-to-manifest]");
io.writeError("Example: " + binaryName + " com.vendor.pwa https://pwa.vendor.com ./my-cool-pwa");
io.writeError("Example: " + binaryName + " com.vendor.pwa https://pwa.vendor.com ./my-cool-pwa --manifest relative/path/to/manifest");
io.writeError("Example: " + binaryName + " com.vendor.pwa https://pwa.vendor.com ./my-cool-pwa --local-manifest ./manifest.json");
return app.arguments().contains("--help") ? 0 : 1;
}

QString manifestPath;
QFile *localManifestFile = nullptr;

if (app.arguments().contains("--manifest")) {
auto index = app.arguments().indexOf("--manifest") + 1;
if (app.arguments().count() <= index) {
qCritical() << "You must set a value for --manifest";
return 1;
throw QString("You must set a value for --manifest");
}
manifestPath = app.arguments().at(index);
} else if (app.arguments().contains("--local-manifest")) {
auto index = app.arguments().indexOf("--local-manifest") + 1;
if (app.arguments().count() <= index) {
throw QString("You must set a value for --local-manifest");
}
localManifestFile = new QFile(app.arguments().at(index), &app);
if (!localManifestFile->exists()) {
throw QString("The specified local manifest file does not exist");
}
}

auto url = app.arguments().at(2);
Expand All @@ -42,11 +53,15 @@ int main(int argc, char *argv[])
gitHelper.checkout(outputDirectory);
gitHelper.reinitGitDirectory(outputDirectory);

WebsiteParser parser(url, manifestPath);
QScopedPointer<WebsiteParser> parser(
localManifestFile == nullptr
? new WebsiteParser(url, manifestPath)
: new WebsiteParser(url, *localManifestFile)
);

auto basicData = parser.getData();
auto basicData = parser->getData();
basicData.insert("package", packageName);
auto icons = parser.getImages();
auto icons = parser->getImages();

AndroidProjectModifier androidProject(outputDirectory);
androidProject.addSupportLibrary();
Expand Down
57 changes: 45 additions & 12 deletions websiteparser.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,19 @@ WebsiteParser::WebsiteParser(QString url, QString manifestPath)
m_manifestPath = manifestPath;
}

WebsiteParser::WebsiteParser(QString url, QFile &manifestFile)
{
m_url.setUrl(url);
m_manifestFile = &manifestFile;
}

WebsiteParser::~WebsiteParser()
{
if (m_manifestFile != nullptr) {
delete m_manifestFile;
}
}

const QString WebsiteParser::getWebsiteContent()
{
if(!m_websiteContent.isNull() && !m_websiteContent.isEmpty()) {
Expand Down Expand Up @@ -60,27 +73,47 @@ const QString WebsiteParser::getManifestUrl()

const QJsonDocument WebsiteParser::getManifestContent()
{
if(m_manifestContent.isNull() || m_manifestContent.isEmpty()) {
QUrl manifestUrl = getManifestUrl();
if (m_manifestContent.isNull() || m_manifestContent.isEmpty()) {
if (m_manifestFile == nullptr) {
m_manifestContent = getDownloadedManifestContent();
} else {
m_manifestContent = getLocalManifestContent();
}
}

QNetworkAccessManager networkManager;
QNetworkRequest request(manifestUrl);
QEventLoop loop;
return QJsonDocument::fromJson(m_manifestContent.toUtf8());
}

QObject::connect(&networkManager, &QNetworkAccessManager::finished, &loop, &QEventLoop::quit);
const QString WebsiteParser::getDownloadedManifestContent()
{
QUrl manifestUrl = getManifestUrl();

auto reply = networkManager.get(request);
QNetworkAccessManager networkManager;
QNetworkRequest request(manifestUrl);
QEventLoop loop;

loop.exec();
QObject::connect(&networkManager, &QNetworkAccessManager::finished, &loop, &QEventLoop::quit);

QString response = reply->readAll();
auto reply = networkManager.get(request);

delete reply;
loop.exec();

m_manifestContent = response;
QString response = reply->readAll();

delete reply;

return response.toUtf8();
}

const QString WebsiteParser::getLocalManifestContent()
{
if (!m_manifestFile->open(QIODevice::ReadOnly)) {
throw QString("Could not open local manifest file for writing");
}
auto result = m_manifestFile->readAll();
m_manifestFile->close();

return QJsonDocument::fromJson(m_manifestContent.toUtf8());
return result;
}

const QHash<QString, QString> WebsiteParser::getData()
Expand Down
6 changes: 6 additions & 0 deletions websiteparser.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
#define WEBSITEPARSER_H

#include <memory>
#include <QFile>
#include <QString>
#include <QNetworkAccessManager>
#include <QNetworkRequest>
Expand All @@ -17,6 +18,8 @@ class WebsiteParser
{
public:
WebsiteParser(QString url, QString manifestPath);
WebsiteParser(QString url, QFile &manifestFile);
~WebsiteParser();

const QHash<QString, QString> getData();
const QList<QHash<QString, QString>> getImages();
Expand All @@ -26,11 +29,14 @@ class WebsiteParser
const QString getWebsiteContent();
const QString getManifestUrl();
const QJsonDocument getManifestContent();
const QString getDownloadedManifestContent();
const QString getLocalManifestContent();

QString m_websiteContent;
QString m_manifestContent;
QString m_manifestPath;
QUrl m_url;
QFile *m_manifestFile = nullptr;
};

#endif // WEBSITEPARSER_H

0 comments on commit 1a4d3f4

Please sign in to comment.