LCOV - code coverage report
Current view: top level - model - Vault.hpp (source / functions) Coverage Total Hit
Test: lcov.info Lines: 88.9 % 9 8
Test Date: 2026-05-23 14:27:44 Functions: 80.0 % 5 4

            Line data    Source code
       1              : /*
       2              :  ___________________________________________
       3              : |    _     ___                        _     |
       4              : |   | |   |__ \                      | |    |
       5              : |   | |__    ) |__ _  __ _  ___ _ __ | |_   |
       6              : |   | '_ \  / // _` |/ _` |/ _ \ '_ \| __|  |  HTTP/2 AGENT FOR MOCK TESTING
       7              : |   | | | |/ /| (_| | (_| |  __/ | | | |_   |  Version 0.0.z
       8              : |   |_| |_|____\__,_|\__, |\___|_| |_|\__|  |  https://github.com/testillano/h2agent
       9              : |                     __/ |                 |
      10              : |                    |___/                  |
      11              : |___________________________________________|
      12              : 
      13              : Licensed under the MIT License <http://opensource.org/licenses/MIT>.
      14              : SPDX-License-Identifier: MIT
      15              : Copyright (c) 2021 Eduardo Ramos
      16              : 
      17              : Permission is hereby  granted, free of charge, to any  person obtaining a copy
      18              : of this software and associated  documentation files (the "Software"), to deal
      19              : in the Software  without restriction, including without  limitation the rights
      20              : to  use, copy,  modify, merge,  publish, distribute,  sublicense, and/or  sell
      21              : copies  of  the Software,  and  to  permit persons  to  whom  the Software  is
      22              : furnished to do so, subject to the following conditions:
      23              : 
      24              : The above copyright notice and this permission notice shall be included in all
      25              : copies or substantial portions of the Software.
      26              : 
      27              : THE SOFTWARE  IS PROVIDED "AS  IS", WITHOUT WARRANTY  OF ANY KIND,  EXPRESS OR
      28              : IMPLIED,  INCLUDING BUT  NOT  LIMITED TO  THE  WARRANTIES OF  MERCHANTABILITY,
      29              : FITNESS FOR  A PARTICULAR PURPOSE AND  NONINFRINGEMENT. IN NO EVENT  SHALL THE
      30              : AUTHORS  OR COPYRIGHT  HOLDERS  BE  LIABLE FOR  ANY  CLAIM,  DAMAGES OR  OTHER
      31              : LIABILITY, WHETHER IN AN ACTION OF  CONTRACT, TORT OR OTHERWISE, ARISING FROM,
      32              : OUT OF OR IN CONNECTION WITH THE SOFTWARE  OR THE USE OR OTHER DEALINGS IN THE
      33              : SOFTWARE.
      34              : */
      35              : 
      36              : #pragma once
      37              : 
      38              : #include <nlohmann/json.hpp>
      39              : 
      40              : #include <Map.hpp>
      41              : #include <JsonSchema.hpp>
      42              : 
      43              : 
      44              : namespace h2agent
      45              : {
      46              : namespace model
      47              : {
      48              : 
      49              : class WaitManager;
      50              : class SseManager;
      51              : 
      52              : /**
      53              :  * Converts a json value to its string representation for variable substitution.
      54              :  * Strings are returned without quotes (backward compatible with former string storage).
      55              :  */
      56           19 : inline std::string jsonToString(const nlohmann::json &j) {
      57           19 :     if (j.is_string()) return j.get<std::string>();
      58            8 :     if (j.is_null()) return "";
      59            5 :     return j.dump();
      60              : }
      61              : 
      62              : /**
      63              :  * This class stores the vault list.
      64              :  */
      65              : class Vault : public Map<std::string, nlohmann::json>
      66              : {
      67              :     h2agent::jsonschema::JsonSchema vault_schema_{};
      68              :     WaitManager *wait_manager_{};
      69              :     SseManager *sse_manager_{};
      70              : 
      71              : public:
      72              :     Vault();
      73          302 :     ~Vault() = default;
      74              : 
      75            5 :     void setWaitManager(WaitManager *p) { wait_manager_ = p; }
      76            0 :     void setSseManager(SseManager *p) { sse_manager_ = p; }
      77              : 
      78              :     /**
      79              :      * Loads variable with a json value.
      80              :      *
      81              :      * @param variable variable name
      82              :      * @param value json value to store
      83              :      */
      84              :     void load(const std::string &variable, const nlohmann::json &value);
      85              :     void load(const std::string &variable, nlohmann::json &&value);
      86              : 
      87              :     /**
      88              :      * Loads a value at a specific path within an existing json variable.
      89              :      * Creates the variable as an empty object if it does not exist.
      90              :      *
      91              :      * @param variable variable name
      92              :      * @param path json pointer path (e.g. "/request/headers/auth")
      93              :      * @param value json value to set at path
      94              :      */
      95              :     void loadAtPath(const std::string &variable, const std::string &path, const nlohmann::json &value);
      96              : 
      97              :     /**
      98              :      * Loads server data global operation data
      99              :      *
     100              :      * @param j Json document from operation body request
     101              :      *
     102              :      * @return Load operation result
     103              :      */
     104              :     bool loadJson(const nlohmann::json &j);
     105              : 
     106              :     /**
     107              :      * Json string representation for class information (json object)
     108              :      *
     109              :      * @return Json string representation ('{}' for empty object).
     110              :      */
     111              :     std::string asJsonString() const;
     112              : 
     113              :     /**
     114              :      * Builds json document for class information
     115              :      *
     116              :      * @return Json object
     117              :      */
     118              :     nlohmann::json getJson() const;
     119              : 
     120              :     /**
     121              :     * Gets vault schema
     122              :     */
     123            1 :     const h2agent::jsonschema::JsonSchema& getSchema() const {
     124            1 :         return vault_schema_;
     125              :     }
     126              : };
     127              : 
     128              : }
     129              : }
     130              : 
        

Generated by: LCOV version 2.0-1