Classes Attachment, PhotoSize, Audio, Document and Sticker implemented.

This commit is contained in:
Kirill Kirilenko 2016-10-15 01:55:17 +03:00
parent 10dda01a61
commit d5fce8062a
3 changed files with 571 additions and 1 deletions

View file

@ -0,0 +1,195 @@
#ifndef TELEBOTXX_ATTACHMENT_HPP
#define TELEBOTXX_ATTACHMENT_HPP
#include <string>
#include <ctime>
#include <memory>
#include <vector>
namespace telebotxx
{
class Attachment
{
public:
enum class Type
{
Audio,
Document,
Game,
PhotoSize,
Sticker,
Video,
Voice,
Contact,
Location,
Venue
};
Attachment(Type type);
Attachment(const Attachment&);
Attachment(Attachment&&);
virtual ~Attachment() = 0;
Type getType() const;
void swap(Attachment& other) noexcept;
private:
Type attachmentType_;
};
using AttachmentPtr = std::shared_ptr<Attachment>;
class PhotoSize : public Attachment
{
public:
PhotoSize();
PhotoSize(const PhotoSize&);
PhotoSize(PhotoSize&&);
~PhotoSize();
const std::string& getFileId() const;
void setFileId(const std::string& fileId);
int getWidth() const;
void setWidth(int width);
int getHeight() const;
void setHeight(int height);
int getFileSize() const;
void setFileSize(int fileSize);
void swap(PhotoSize& other) noexcept;
const PhotoSize& operator=(PhotoSize other) noexcept;
private:
std::string fileId_;
int width_;
int height_;
int fileSize_;
};
using PhotoSizePtr = std::shared_ptr<PhotoSize>;
class Audio : public Attachment
{
public:
Audio();
Audio(const Audio&);
Audio(Audio&&);
~Audio();
const std::string& getFileId() const;
void setFileId(const std::string& fileId);
int getDuration() const;
void setDuration(int duration);
const std::string& getPerformer() const;
void setPerformer(const std::string& performer);
const std::string& getTitle() const;
void setTitle(const std::string& title);
const std::string& getMimeType() const;
void setMimeType(const std::string& mimeType);
int getFileSize() const;
void setFileSize(int fileSize);
void swap(Audio& other) noexcept;
const Audio& operator=(Audio other) noexcept;
private:
std::string fileId_;
int duration_;
std::string performer_;
std::string title_;
std::string mimeType_;
int fileSize_;
};
class Document : public Attachment
{
public:
Document();
Document(const Document&);
Document(Document&&);
~Document();
const std::string& getFileId() const;
void setFileId(const std::string& fileId);
const PhotoSizePtr getThumb() const;
void setThumb(const PhotoSizePtr& thumb);
const std::string& getFileName() const;
void setFileName(const std::string& fileName);
const std::string& getMimeType() const;
void setMimeType(const std::string& mimeType);
int getFileSize() const;
void setFileSize(int fileSize);
void swap(Document& other) noexcept;
const Document& operator=(Document other) noexcept;
private:
std::string fileId_;
PhotoSizePtr thumb_;
std::string fileName_;
std::string mimeType_;
int fileSize_;
};
class Sticker : public Attachment
{
public:
Sticker();
Sticker(const Sticker&);
Sticker(Sticker&&);
~Sticker();
const std::string& getFileId() const;
void setFileId(const std::string& fileId);
int getWidth() const;
void setWidth(int width);
int getHeight() const;
void setHeight(int height);
const PhotoSizePtr getThumb() const;
void setThumb(const PhotoSizePtr& thumb);
const std::string& getEmoji() const;
void setEmoji(const std::string& emoji);
int getFileSize() const;
void setFileSize(int fileSize);
void swap(Sticker& other) noexcept;
const Sticker& operator=(Sticker other) noexcept;
private:
std::string fileId_;
int width_;
int height_;
PhotoSizePtr thumb_;
std::string emoji_;
int fileSize_;
};
void swap(PhotoSize& lhs, PhotoSize& rhs);
void swap(Audio& lhs, Audio& rhs);
void swap(Document& lhs, Document& rhs);
void swap(Sticker& lhs, Sticker& rhs);
}
#endif // TELEBOTXX_ATTACHMENT_HPP

374
src/Attachment.cpp Normal file
View file

@ -0,0 +1,374 @@
#include <telebotxx/Attachment.hpp>
using namespace telebotxx;
Attachment::Attachment(Type type)
: attachmentType_(type)
{
}
Attachment::Attachment(const Attachment&) = default;
Attachment::Attachment(Attachment&&) = default;
Attachment::~Attachment() = default;
Attachment::Type Attachment::getType() const
{
return attachmentType_;
}
void Attachment::swap(Attachment& other) noexcept
{
std::swap(attachmentType_, other.attachmentType_);
}
////////////////////////////////////////////////////////////////
PhotoSize::PhotoSize()
: Attachment(Type::PhotoSize),
width_(-1),
height_(-1),
fileSize_(-1)
{
}
PhotoSize::PhotoSize(const PhotoSize&) = default;
PhotoSize::PhotoSize(PhotoSize&&) = default;
PhotoSize::~PhotoSize() = default;
const std::string& PhotoSize::getFileId() const
{
return fileId_;
}
void PhotoSize::setFileId(const std::string& fileId)
{
fileId_ = fileId;
}
int PhotoSize::getWidth() const
{
return width_;
}
void PhotoSize::setWidth(int width)
{
width_ = width;
}
int PhotoSize::getHeight() const
{
return height_;
}
void PhotoSize::setHeight(int height)
{
height_ = height;
}
int PhotoSize::getFileSize() const
{
return fileSize_;
}
void PhotoSize::setFileSize(int fileSize)
{
fileSize_ = fileSize;
}
void PhotoSize::swap(PhotoSize& other) noexcept
{
Attachment::swap(other);
using std::swap;
swap(fileId_, other.fileId_);
swap(width_, other.width_);
swap(height_, other.height_);
swap(fileSize_, other.fileSize_);
}
const PhotoSize& PhotoSize::operator=(PhotoSize other) noexcept
{
swap(other);
return *this;
}
////////////////////////////////////////////////////////////////
Audio::Audio()
: Attachment(Type::Audio),
duration_(-1),
fileSize_(-1)
{
}
Audio::Audio(const Audio&) = default;
Audio::Audio(Audio&&) = default;
Audio::~Audio() = default;
const std::string& Audio::getFileId() const
{
return fileId_;
}
void Audio::setFileId(const std::string& fileId)
{
fileId_ = fileId;
}
int Audio::getDuration() const
{
return duration_;
}
void Audio::setDuration(int duration)
{
duration_ = duration;
}
const std::string& Audio::getPerformer() const
{
return performer_;
}
void Audio::setPerformer(const std::string& performer)
{
performer_ = performer;
}
const std::string& Audio::getTitle() const
{
return title_;
}
void Audio::setTitle(const std::string& title)
{
title_ = title;
}
const std::string& Audio::getMimeType() const
{
return mimeType_;
}
void Audio::setMimeType(const std::string& mimeType)
{
mimeType_ = mimeType;
}
int Audio::getFileSize() const
{
return fileSize_;
}
void Audio::setFileSize(int fileSize)
{
fileSize_ = fileSize;
}
void Audio::swap(Audio& other) noexcept
{
Attachment::swap(other);
using std::swap;
swap(fileId_, other.fileId_);
swap(duration_, other.duration_);
swap(performer_, other.performer_);
swap(title_, other.title_);
swap(mimeType_, other.mimeType_);
swap(fileSize_, other.fileSize_);
}
const Audio& Audio::operator=(Audio other) noexcept
{
swap(other);
return *this;
}
////////////////////////////////////////////////////////////////
Document::Document()
: Attachment(Type::Document),
fileSize_(-1)
{
}
Document::Document(const Document&) = default;
Document::Document(Document&&) = default;
Document::~Document() = default;
const std::string& Document::getFileId() const
{
return fileId_;
}
void Document::setFileId(const std::string& fileId)
{
fileId_ = fileId;
}
const PhotoSizePtr Document::getThumb() const
{
return thumb_;
}
void Document::setThumb(const PhotoSizePtr& thumb)
{
thumb_ = thumb;
}
const std::string& Document::getFileName() const
{
return fileName_;
}
void Document::setFileName(const std::string& fileName)
{
fileName_ = fileName;
}
const std::string& Document::getMimeType() const
{
return mimeType_;
}
void Document::setMimeType(const std::string& mimeType)
{
mimeType_ = mimeType;
}
int Document::getFileSize() const
{
return fileSize_;
}
void Document::setFileSize(int fileSize)
{
fileSize_ = fileSize;
}
void Document::swap(Document& other) noexcept
{
Attachment::swap(other);
using std::swap;
swap(fileId_, other.fileId_);
swap(thumb_, other.thumb_);
swap(fileName_, other.fileName_);
swap(mimeType_, other.mimeType_);
swap(fileSize_, other.fileSize_);
}
const Document& Document::operator=(Document other) noexcept
{
swap(other);
return *this;
}
////////////////////////////////////////////////////////////////
Sticker::Sticker()
: Attachment(Type::Sticker),
fileSize_(-1)
{
}
Sticker::Sticker(const Sticker&) = default;
Sticker::Sticker(Sticker&&) = default;
Sticker::~Sticker() = default;
const std::string& Sticker::getFileId() const
{
return fileId_;
}
void Sticker::setFileId(const std::string& fileId)
{
fileId_ = fileId;
}
int Sticker::getWidth() const
{
return width_;
}
void Sticker::setWidth(int width)
{
width_ = width;
}
int Sticker::getHeight() const
{
return height_;
}
void Sticker::setHeight(int height)
{
height_ = height;
}
const PhotoSizePtr Sticker::getThumb() const
{
return thumb_;
}
void Sticker::setThumb(const PhotoSizePtr& thumb)
{
thumb_ = thumb;
}
const std::string& Sticker::getEmoji() const
{
return emoji_;
}
void Sticker::setEmoji(const std::string& emoji)
{
emoji_ = emoji;
}
int Sticker::getFileSize() const
{
return fileSize_;
}
void Sticker::setFileSize(int fileSize)
{
fileSize_ = fileSize;
}
void Sticker::swap(Sticker& other) noexcept
{
Attachment::swap(other);
using std::swap;
swap(fileId_, other.fileId_);
swap(width_, other.width_);
swap(height_, other.height_);
swap(thumb_, other.thumb_);
swap(emoji_, other.emoji_);
swap(fileSize_, other.fileSize_);
}
const Sticker& Sticker::operator=(Sticker other) noexcept
{
swap(other);
return *this;
}
////////////////////////////////////////////////////////////////
void telebotxx::swap(PhotoSize& lhs, PhotoSize& rhs)
{
lhs.swap(rhs);
}
void telebotxx::swap(Audio& lhs, Audio& rhs)
{
lhs.swap(rhs);
}
void telebotxx::swap(Document& lhs, Document& rhs)
{
lhs.swap(rhs);
}
void telebotxx::swap(Sticker& lhs, Sticker& rhs)
{
lhs.swap(rhs);
}

View file

@ -13,7 +13,8 @@ endif(NOT WIN32)
# Put compiled library to 'lib' directory # Put compiled library to 'lib' directory
set(LIBRARY_OUTPUT_PATH "../lib") set(LIBRARY_OUTPUT_PATH "../lib")
set(SOURCE_FILES BotApi.cpp set(SOURCE_FILES Attachment.cpp
BotApi.cpp
Chat.cpp Chat.cpp
Logging.cpp Logging.cpp
User.cpp User.cpp