// Copyright 2015-2017 Parity Technologies (UK) Ltd. // This file is part of Parity. // Parity is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // Parity is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License // along with Parity. If not, see . //! URL Endpoint traits use std::collections::BTreeMap; use futures::Future; use hyper; #[derive(Debug, PartialEq, Default, Clone)] pub struct EndpointPath { pub app_id: String, pub app_params: Vec, pub query: Option, pub host: String, pub port: u16, pub using_dapps_domains: bool, } impl EndpointPath { pub fn has_no_params(&self) -> bool { self.app_params.is_empty() || self.app_params.iter().all(|x| x.is_empty()) } } pub type EndpointInfo = ::apps::App; pub type Endpoints = BTreeMap>; pub type Response = Box + Send>; pub type Request = hyper::Request; pub trait Endpoint : Send + Sync { fn info(&self) -> Option<&EndpointInfo> { None } fn respond(&self, path: EndpointPath, req: Request) -> Response; }