/* * Copyright (c) Meta Platforms, Inc. and affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #pragma once #define FOLLY_URI_H_ #include <string> #include <vector> #include <folly/Expected.h> #include <folly/String.h> namespace folly { /** * Error codes for parsing issues. Used by tryFromString() */ enum class UriFormatError { … }; /** * Class representing a URI. * * Consider http://www.facebook.com/foo/bar?key=foo#anchor * * The URI is broken down into its parts: scheme ("http"), authority * (ie. host and port, in most cases: "www.facebook.com"), path * ("/foo/bar"), query ("key=foo") and fragment ("anchor"). The scheme is * lower-cased. * * If this Uri represents a URL, note that, to prevent ambiguity, the component * parts are NOT percent-decoded; you should do this yourself with * uriUnescape() (for the authority and path) and uriUnescape(..., * UriEscapeMode::QUERY) (for the query, but probably only after splitting at * '&' to identify the individual parameters). */ class Uri { … }; } // namespace folly #include <folly/Uri-inl.h>