/* * Copyright (c) 2021, The SerenityOS developers. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #pragma once #include #include #include #include #include #include namespace WebSocket { class ConnectionInfo final { public: ConnectionInfo(URL); URL const& url() const { return m_url; } String const& origin() const { return m_origin; } void set_origin(String origin) { m_origin = move(origin); } Vector const& protocols() const { return m_protocols; } void set_protocols(Vector protocols) { m_protocols = move(protocols); } Vector const& extensions() const { return m_extensions; } void set_extensions(Vector extensions) { m_extensions = move(extensions); } struct Header { String name; String value; }; Vector
const& headers() const { return m_headers; } void set_headers(Vector
headers) { m_headers = move(headers); } // secure flag - defined in RFC 6455 Section 3 bool is_secure() const; // "resource-name" or "/resource name/" - defined in RFC 6455 Section 3 String resource_name() const; private: URL m_url; String m_origin; Vector m_protocols {}; Vector m_extensions {}; Vector
m_headers {}; }; }