~aleteoryx/muditaos

muditaos/module-apps/application-onboarding/model/EULARepository.cpp -rw-r--r-- 1.2 KiB
a405cad6Aleteoryx trim readme 6 days ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
// Copyright (c) 2017-2024, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/blob/master/LICENSE.md

#include "EULARepository.hpp"
#include <gsl/util>
#include <i18n/i18n.hpp>
#include <fstream>
#include <sstream>

namespace app::onBoarding
{
    EULARepository::EULARepository(std::filesystem::path licensesPath, std::filesystem::path fileName)
        : licensesPath(std::move(licensesPath)), fileName(std::move(fileName))
    {}

    std::string EULARepository::getEulaText()
    {
        const auto &displayLanguageName = utils::getDisplayLanguage();
        auto eulaFile                   = std::ifstream(licensesPath / displayLanguageName / fileName);
        auto fileHandlerCleanup         = gsl::finally([&eulaFile]() { eulaFile.close(); });

        if (!eulaFile.is_open()) {
            eulaFile.open(licensesPath / utils::getDefaultLanguage() / fileName);

            if (!eulaFile.is_open()) {
                throw std::runtime_error("EULA assets missing in system!");
            }
        }
        std::ostringstream eulaText;
        eulaText << eulaFile.rdbuf();

        return eulaText.str();
    }
} // namespace app::onBoarding