Skip to content

Commit 9197911

Browse files
authored
Merge pull request #18 from snandasena/dev
Dev
2 parents 6ec9f65 + 98a65b9 commit 9197911

File tree

14 files changed

+273
-4
lines changed

14 files changed

+273
-4
lines changed

app/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
project(server)
22

3-
set(CMAKE_CXX_FLAGS "-std=c++17 -O3 -pedantic -Wall -Werror")
3+
set(CMAKE_CXX_FLAGS "-std=c++17 -fsanitize=address -ggdb3 -Wall -Wextra -pedantic -Werror")
44

55
add_subdirectory(external)
66
add_subdirectory(common)

app/interfaces/include/interfaces/parsers/ICredentialsParser.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ namespace parsers
1515
class ICredentialsParser
1616
{
1717
public:
18-
virtual ~ICredentialParser() = default;
18+
virtual ~ICredentialsParser() = default;
1919

2020
virtual std::optional<types::User> parseCredentials(const std::string &) const = 0;
2121
};

app/interfaces/include/interfaces/parsers/IReportParser.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ namespace parsers
1717
public:
1818
virtual ~IReportParser() = default;
1919

20-
virtual std::optional<types::Report> parseRepost(const std::string &) const = 0;
20+
virtual std::optional<types::Report> parseReport(const std::string &) const = 0;
2121
};
2222
}
2323

app/parsers/CMakeLists.txt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,24 @@
11
project(Parsers)
22

3+
add_subdirectory(test)
4+
35
find_package(Boost REQUIRED)
46

57
include_directories(${Boost_INCLUDE_DIRS})
68

79
set(HEADERS
810
${PROJECT_SOURCE_DIR}/include/parsers/JsonParser.h
11+
${PROJECT_SOURCE_DIR}/include/parsers/XmlParser.h
12+
${PROJECT_SOURCE_DIR}/include/parsers/ParsersFactory.h
13+
${PROJECT_SOURCE_DIR}/include/parsers/ValidatedReportParser.h
914
)
1015

1116

1217
set(SOURCES
1318
${PROJECT_SOURCE_DIR}/src/JsonParser.cpp
19+
${PROJECT_SOURCE_DIR}/src/ParsersFactory.cpp
20+
${PROJECT_SOURCE_DIR}/src/XmlParser.cpp
21+
${PROJECT_SOURCE_DIR}/src/ValidatedReportParser.cpp
1422
)
1523

1624
add_library(${PROJECT_NAME} STATIC ${SOURCES} ${HEADERS})

app/parsers/include/parsers/JsonParser.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
namespace parsers
1212
{
13-
class JsonParser : public IReportParser, public ICredentialParser
13+
class JsonParser : public IReportParser, public ICredentialsParser
1414
{
1515
public:
1616
std::optional <types::Report> parseReport(const std::string &) const override;
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
//
2+
// Created by sajith on 6/21/22.
3+
//
4+
5+
#ifndef DESIGN_PATTERNS_PARSERSFACTORY_H
6+
#define DESIGN_PATTERNS_PARSERSFACTORY_H
7+
8+
#endif //DESIGN_PATTERNS_PARSERSFACTORY_H
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
//
2+
// Created by sajith on 6/21/22.
3+
//
4+
5+
#ifndef DESIGN_PATTERNS_VALIDATEDREPORTPARSER_H
6+
#define DESIGN_PATTERNS_VALIDATEDREPORTPARSER_H
7+
8+
#endif //DESIGN_PATTERNS_VALIDATEDREPORTPARSER_H

app/parsers/include/parsers/XmlParser.h

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,18 @@
55
#ifndef DESIGN_PATTERNS_XMLPARSER_H
66
#define DESIGN_PATTERNS_XMLPARSER_H
77

8+
9+
#include "parsers/ICredentialsParser.h"
10+
#include "parsers/IReportParser.h"
11+
12+
13+
namespace parsers
14+
{
15+
class XmlParser : public IReportParser, public ICredentialsParser
16+
{
17+
std::optional<types::Report> parseReport(const std::string &) const override;
18+
19+
std::optional<types::User> parseCredentials(const std::string &) const override;
20+
};
21+
}
822
#endif //DESIGN_PATTERNS_XMLPARSER_H

app/parsers/src/JsonParser.cpp

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,46 @@
44

55
#include "parsers/JsonParser.h"
66

7+
#include <iostream>
8+
#include <stdexcept>
9+
10+
#include "nlohmann/json.hpp"
11+
12+
namespace parsers
13+
{
14+
std::optional<types::Report> JsonParser::parseReport(const std::string &rawReport) const try
15+
{
16+
if (const auto json = nlohmann::json::parse(rawReport); !json.empty())
17+
{
18+
return types::Report{
19+
json.at("payer"),
20+
json.at("tax"),
21+
json.at("amount"),
22+
json.at("year")};
23+
}
24+
return std::nullopt;
25+
} catch (const std::exception &e)
26+
{
27+
std::cerr << __FILE__ << ' ' << e.what() << '\n';
28+
return std::nullopt;
29+
}
30+
31+
std::optional<types::User> JsonParser::parseCredentials(const std::string &rawCredentials) const try
32+
{
33+
if (const auto json = nlohmann::json::parse(rawCredentials); !json.empty())
34+
{
35+
return types::User
36+
{
37+
{json.at("login")},
38+
{json.at("password")},
39+
{}
40+
};
41+
}
42+
return std::nullopt;
43+
44+
} catch (const std::exception &e)
45+
{
46+
std::cerr << __FILE__ << ' ' << e.what() << '\n';
47+
return std::nullopt;
48+
}
49+
}

app/parsers/src/ParsersFactory.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
//
2+
// Created by sajith on 6/22/22.
3+
//
4+
5+
#include "parsers/ParsersFactory.h"
6+
#include "parsers/JsonParser.h"
7+
#include "parsers/ValidatedReportParser.h"
8+
#include "parsers/XmlParser.h"

0 commit comments

Comments
 (0)