#include "stdafx.h" #include "Uri.h" namespace Net { Uri::Uri(const char* Url) : Uri(String(Url)) { } Uri::Uri(const String& Url) : InternetPort(InternetPortType::Default), Host(""), Path("") { this->ParseUri(Url); } String Uri::GetUrl() { auto Base = (InternetPort == InternetPortType::Http) ? "http://" : "https://"; return Base + Host + Path; } void Uri::ParseUri(const String& Url) { auto LowerCaseUrl = Url.ToLower(); uint32_t ParsePoint = 0; if (LowerCaseUrl.StartsWith("https://")) { this->InternetPort = InternetPortType::Https; ParsePoint = 8; } else if (LowerCaseUrl.StartsWith("http://")) { this->InternetPort = InternetPortType::Http; ParsePoint = 7; } else if (LowerCaseUrl.StartsWith("//")) { ParsePoint = 2; } auto PathStart = Url.IndexOf("/", ParsePoint); if (PathStart != String::InvalidPosition) { this->Host = Url.SubString(ParsePoint, PathStart - ParsePoint); this->Path = Url.SubString(PathStart + 1); } else { this->Host = Url.SubString(ParsePoint); } } }