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