// 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 ethcore::client::BlockChainClient; use parity_ipfs_api::{self, error::ServerError, AccessControlAllowOrigin, Host, Listening}; use std::sync::Arc; #[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) }