LeechCraft  0.6.70-15082-g543737046d
Modular cross-platform feature rich live environment.
serializejson.cpp
Go to the documentation of this file.
1 /**********************************************************************
2  * LeechCraft - modular cross-platform feature rich internet client.
3  * Copyright (C) 2006-2014 Georg Rudoy
4  *
5  * Distributed under the Boost Software License, Version 1.0.
6  * (See accompanying file LICENSE or copy at https://www.boost.org/LICENSE_1_0.txt)
7  **********************************************************************/
8 
9 #include "serializejson.h"
10 #include <QJsonDocument>
11 #include <QFile>
12 #include "either.h"
13 
14 namespace LC
15 {
16 namespace Util
17 {
18  QByteArray SerializeJson (const QVariant& var, bool compact)
19  {
20  return QJsonDocument::fromVariant (var)
21  .toJson (compact ? QJsonDocument::Compact : QJsonDocument::Indented);
22  }
23 
24  using SerializeResult_t = Either<QString, Void>;
25 
26  SerializeResult_t SerializeJsonToFile (const QString& filename, const QVariant& var, bool compact)
27  {
28  QFile file { filename };
29  if (!file.open (QIODevice::WriteOnly))
30  {
31  qWarning () << Q_FUNC_INFO
32  << "unable to open file"
33  << file.fileName ()
34  << "for writing:"
35  << file.errorString ();
36  return SerializeResult_t::Left (file.errorString ());
37  }
38 
39  if (!file.write (SerializeJson (var, compact)))
40  {
41  qWarning () << Q_FUNC_INFO
42  << "unable to write to file"
43  << file.fileName ()
44  << ":"
45  << file.errorString ();
46  return SerializeResult_t::Left (file.errorString ());
47  }
48 
49  return SerializeResult_t::Right ({});
50  }
51 }
52 }
LC::Util::SerializeJsonToFile
SerializeResult_t SerializeJsonToFile(const QString &filename, const QVariant &var, bool compact)
Definition: serializejson.cpp:38
LC::Util::Either::Right
static Either Right(const R &r)
Definition: either.h:132
either.h
LC::Util::Either::Left
static Either Left(const L &l)
Definition: either.h:127
LC::Util::SerializeResult_t
Either< QString, Void > SerializeResult_t
Definition: serializejson.cpp:36
LC::Util::SerializeJson
QByteArray SerializeJson(const QVariant &var, bool compact)
Serializes the given var to JSON representation.
Definition: serializejson.cpp:30
serializejson.h
LC
Definition: constants.h:14