#pragma once

#include "nlohmann/json_fwd.hpp"
#include <map>
#include <string>
#include <vector>
#include <yaml-cpp/yaml.h>
#include <fstream>
#include <curlpp/Easy.hpp>
#include <curlpp/Options.hpp>
#include <kubecontrol/WriterMemoryClass.hpp>
#include <loguru.hpp>
#include <nlohmann/json.hpp>

#include <curlpp/cURLpp.hpp>
#include <filesystem>
#include <map>
#include <vector>


namespace kubecontrol 
{
    class KubePod
    {
        public: 
            KubePod(std::string Label, std::string Uuid, std::string ContainerImage);
            std::string getUUID();
            std::string getLabel();

            void setEnvironmentVar(std::string key, std::string val);
            std::map<std::string, std::string> GetEnvironmentVars();
            std::string GetEnvironmentVar(std::string key);

            void setArgs(std::string args);
            std::vector<std::string> GetArgs();

            void setCommand(std::string command);
            std::string getCommand();


            std::string createYAML();
            std::string start(std::string apiAddress,std::string token);
            std::string stop(std::string apiAddress,std::string token);
            std::string getInfo(std::string apiAddress,std::string token);


            
        private:
            std::string Label_;
            std::string Uuid_;
            std::string ContainerImage_;
            std::string ContainerRegistry_;
            std::string PathToYaml_;

            std::string PodCommand_;

            std::map<std::string, std::string> EnvirmonentVars_;
            std::vector<std::string> Args_;



    };
}