#include "pch.h"
#include "System/UriParser.h"
#include "System/Uri.h"
#include <map>
#include <utility>

namespace DotNetDupe {
    namespace System {
        std::map<String, std::pair<UriParser*, int>> UriParser::_parsers;

        UriParser::UriParser() { }

        void UriParser::Register(UriParser* uriParser, const String& schemeName, int defaultPort) {
            _parsers [schemeName] = std::make_pair(uriParser, defaultPort);
        }

        bool UriParser::IsKnownScheme(const String& schemeName) {
            return _parsers.find(schemeName) != _parsers.end();
        }

        UriParser* UriParser::GetParser(const String& schemeName) {
            auto it = _parsers.find(schemeName);
            if (it != _parsers.end()) {
                return it->second.first;
            }
            return nullptr;
        }

        String UriParser::GetComponents(const Uri& uri, UriComponents components, UriFormat format) {
            // This is a base implementation that can be overridden.
            // It's not fully featured, but provides a starting point.
            return uri.GetAbsoluteUri();
        }

        GenericUriParser::GenericUriParser() : UriParser() { }
    }
}

Generated by OpenCppCoverage (Version: 0.9.9.0)