LeechCraft Azoth  0.6.70-6645-gcd10d7e
Modular multiprotocol IM plugin for LeechCraft
gpgexceptions.h
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  * Boost Software License - Version 1.0 - August 17th, 2003
6  *
7  * Permission is hereby granted, free of charge, to any person or organization
8  * obtaining a copy of the software and accompanying documentation covered by
9  * this license (the "Software") to use, reproduce, display, distribute,
10  * execute, and transmit the Software, and to prepare derivative works of the
11  * Software, and to permit third-parties to whom the Software is furnished to
12  * do so, all subject to the following:
13  *
14  * The copyright notices in the Software and this entire statement, including
15  * the above license grant, this restriction and the following disclaimer,
16  * must be included in all copies of the Software, in whole or in part, and
17  * all derivative works of the Software, unless such copies or derivative
18  * works are solely in the form of machine-executable object code generated by
19  * a source language processor.
20  *
21  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23  * FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
24  * SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
25  * FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
26  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
27  * DEALINGS IN THE SOFTWARE.
28  **********************************************************************/
29 
30 #pragma once
31 
32 #include <stdexcept>
33 #include <boost/variant.hpp>
34 #include <boost/optional.hpp>
35 
36 namespace LeechCraft
37 {
38 namespace Azoth
39 {
40 namespace GPGExceptions
41 {
58  class General : public std::runtime_error
59  {
60  QString Context_;
61  int Code_ = -1;
62  QString Message_;
63  public:
69  General (const QString& context)
70  : std::runtime_error { context.toStdString () }
71  , Context_ { context }
72  {
73  }
74 
82  General (const QString& context, int code, const QString& message)
83  : std::runtime_error
84  {
85  context.toStdString () + std::to_string (code) + ": " + message.toStdString ()
86  }
87  , Context_ { context }
88  , Code_ { code }
89  , Message_ { message }
90  {
91  }
92 
99  General (int code, const QString& msg)
100  : General { "Azoth GPG error", code, msg }
101  {
102  }
103 
108  const QString& GetContext () const
109  {
110  return Context_;
111  }
112 
117  int GetCode () const
118  {
119  return Code_;
120  }
121 
126  const QString& GetMessage () const
127  {
128  return Message_;
129  }
130  };
131 
134  class NullPubkey : public General
135  {
136  public:
140  : General { "Azoth GPG: null pubkey" }
141  {
142  }
143  };
144 
147  class Encryption : public General
148  {
149  public:
157  Encryption (int code, const QString& message)
158  : General { "Azoth GPG encryption error", code, message }
159  {
160  }
161  };
162 
165  using AnyException_t = boost::variant<Encryption, NullPubkey, General>;
166 
169  using MaybeException_t = boost::optional<AnyException_t>;
170 }
171 }
172 }
NullPubkey()
Constructs the error object.
STL namespace.
An error resulting from a null (or unset) public key.
boost::optional< AnyException_t > MaybeException_t
A type representing a possibility of a GPG-related error.
General(const QString &context, int code, const QString &message)
Constructs the error with the given context, code and error message.
Definition: gpgexceptions.h:82
int GetCode() const
Returns the error code, if applicable.
General(const QString &context)
Constructs the error with the given context description.
Definition: gpgexceptions.h:69
boost::variant< Encryption, NullPubkey, General > AnyException_t
A sum type of all the possible GPG-related errors.
General(int code, const QString &msg)
Constructs the error with the given code and error message.
Definition: gpgexceptions.h:99
const QString & GetMessage() const
Returns the human-readable error message.
const QString & GetContext() const
Returns the context of the error.
Encryption(int code, const QString &message)
Constructs the error object using the error code and message.