ooni-probe-cli/internal/model/ooapi.go
Simone Basso d3c5196474
fix(ooniprobe): use ooniprobe-cli-unattended for unattended runs (#714)
This diff changes the software name used by unattended runs for which
we did not override the default software name (`ooniprobe-cli`).

It will become `ooniprobe-cli-unattended`. This software name is in line
with the one we use for Android, iOS, and desktop unattended runs.

While working in this diff, I introduced string constants for the run
types and a string constant for the default software name.

See https://github.com/ooni/probe/issues/2081.
2022-04-29 13:41:09 +02:00

85 lines
3.4 KiB
Go

package model
//
// Data structures used to speak with the OONI API.
//
// OOAPICheckInConfigWebConnectivity is the configuration for the WebConnectivity test
type OOAPICheckInConfigWebConnectivity struct {
CategoryCodes []string `json:"category_codes"` // CategoryCodes is an array of category codes
}
// OOAPICheckInConfig contains configuration for calling the checkin API.
type OOAPICheckInConfig struct {
Charging bool `json:"charging"` // Charging indicate if the phone is actually charging
OnWiFi bool `json:"on_wifi"` // OnWiFi indicate if the phone is actually connected to a WiFi network
Platform string `json:"platform"` // Platform of the probe
ProbeASN string `json:"probe_asn"` // ProbeASN is the probe country code
ProbeCC string `json:"probe_cc"` // ProbeCC is the probe country code
RunType RunType `json:"run_type"` // RunType
SoftwareName string `json:"software_name"` // SoftwareName of the probe
SoftwareVersion string `json:"software_version"` // SoftwareVersion of the probe
WebConnectivity OOAPICheckInConfigWebConnectivity `json:"web_connectivity"` // WebConnectivity class contain an array of categories
}
// OOAPICheckInInfoWebConnectivity contains the array of URLs returned by the checkin API
type OOAPICheckInInfoWebConnectivity struct {
ReportID string `json:"report_id"`
URLs []OOAPIURLInfo `json:"urls"`
}
// OOAPICheckInInfo contains the return test objects from the checkin API
type OOAPICheckInInfo struct {
WebConnectivity *OOAPICheckInInfoWebConnectivity `json:"web_connectivity"`
}
// OOAPIService describes a backend service.
//
// The fields of this struct have the meaning described in v2.0.0 of the OONI
// bouncer specification defined by
// https://github.com/ooni/spec/blob/master/backends/bk-004-bouncer.md.
type OOAPIService struct {
// Address is the address of the server.
Address string `json:"address"`
// Type is the type of the service.
Type string `json:"type"`
// Front is the front to use with "cloudfront" type entries.
Front string `json:"front,omitempty"`
}
// OOAPITorTarget is a target for the tor experiment.
type OOAPITorTarget struct {
// Address is the address of the target.
Address string `json:"address"`
// Name is the name of the target.
Name string `json:"name"`
// Params contains optional params for, e.g., pluggable transports.
Params map[string][]string `json:"params"`
// Protocol is the protocol to use with the target.
Protocol string `json:"protocol"`
// Source is the source from which we fetched this specific
// target. Whenever the source is non-empty, we will treat
// this specific target as a private target.
Source string `json:"source"`
}
// OOAPIURLInfo contains info on a test lists URL
type OOAPIURLInfo struct {
CategoryCode string `json:"category_code"`
CountryCode string `json:"country_code"`
URL string `json:"url"`
}
// OOAPIURLListConfig contains configuration for fetching the URL list.
type OOAPIURLListConfig struct {
Categories []string // Categories to query for (empty means all)
CountryCode string // CountryCode is the optional country code
Limit int64 // Max number of URLs (<= 0 means no limit)
}