// Copyright 2015-2019 Parity Technologies (UK) Ltd. // This file is part of Parity Ethereum. // Parity Ethereum 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 Ethereum 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 Ethereum. If not, see . use std::sync::Arc; use parity_ipfs_api::{self, AccessControlAllowOrigin, Host, Listening}; use parity_ipfs_api::error::ServerError; use client_traits::BlockChainClient; #[derive(Debug, PartialEq, Clone)] pub struct Configuration { pub enabled: bool, pub port: u16, pub interface: String, pub cors: Option>, pub hosts: Option>, } impl Default for Configuration { fn default() -> Self { Configuration { enabled: false, port: 5001, interface: "127.0.0.1".into(), cors: Some(vec![]), hosts: Some(vec![]), } } } pub fn start_server(conf: Configuration, client: Arc) -> Result, ServerError> { if !conf.enabled { return Ok(None); } let cors = conf.cors.map(|cors| cors.into_iter().map(AccessControlAllowOrigin::from).collect()); let hosts = conf.hosts.map(|hosts| hosts.into_iter().map(Host::from).collect()); parity_ipfs_api::start_server( conf.port, conf.interface, cors.into(), hosts.into(), client ).map(Some) }