github.com/psiphon-labs/psiphon-tunnel-core@v2.0.28+incompatible/psiphon/common/api.go (about) 1 /* 2 * Copyright (c) 2018, Psiphon Inc. 3 * All rights reserved. 4 * 5 * This program is free software: you can redistribute it and/or modify 6 * it under the terms of the GNU General Public License as published by 7 * the Free Software Foundation, either version 3 of the License, or 8 * (at your option) any later version. 9 * 10 * This program is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU General Public License for more details. 14 * 15 * You should have received a copy of the GNU General Public License 16 * along with this program. If not, see <http://www.gnu.org/licenses/>. 17 * 18 */ 19 20 package common 21 22 // APIParameters is a set of API parameter values, typically received 23 // from a Psiphon client and used/logged by the Psiphon server. The 24 // values are of varying types: strings, ints, arrays, structs, etc. 25 type APIParameters map[string]interface{} 26 27 // APIParameterValidator is a function that validates API parameters 28 // for a particular request or context. 29 type APIParameterValidator func(APIParameters) error 30 31 // GeoIPData is type-compatible with psiphon/server.GeoIPData. 32 type GeoIPData struct { 33 Country string 34 City string 35 ISP string 36 ASN string 37 ASO string 38 } 39 40 // APIParameterLogFieldFormatter is a function that returns formatted 41 // LogFields containing the given GeoIPData and APIParameters. 42 type APIParameterLogFieldFormatter func(GeoIPData, APIParameters) LogFields