Mercurial > gemma
view pkg/soap/nts/service.go @ 5291:d62587503a39
Client: add bottlenecks filter for the soundingresults import
* Get each bottleneck unique with its latest time.
author | Fadi Abbud <fadi.abbud@intevation.de> |
---|---|
date | Thu, 09 Jul 2020 16:33:25 +0200 |
parents | cb74aa69954e |
children |
line wrap: on
line source
// This is Free Software under GNU Affero General Public License v >= 3.0 // without warranty, see README.md and license for details. // // SPDX-License-Identifier: AGPL-3.0-or-later // License-Filename: LICENSES/AGPL-3.0.txt // // Copyright (C) 2018 by via donau // – Österreichische Wasserstraßen-Gesellschaft mbH // Software engineering by Intevation GmbH // // Author(s): // * Raimund Renkert <raimund.renkert@intevation.de> package nts import ( "crypto/tls" "encoding/xml" "time" "gemma.intevation.de/gemma/pkg/common" "gemma.intevation.de/gemma/pkg/soap" ) var guessDateTime = common.TimeParser([]string{ "2006-01-02T15:04:05", "2006-01-02T15:04:05-07:00", }).Parse type DateTime struct{ time.Time } type Date struct{ time.Time } func (dt *DateTime) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error { var value string if err := d.DecodeElement(&value, &start); err != nil { return err } t, err := guessDateTime(value) if err != nil { return err } *dt = DateTime{t} return nil } func (d *Date) MarshalXML(e *xml.Encoder, start xml.StartElement) error { formated := d.Format("2006-01-02") return e.EncodeElement(formated, start) } type Message_type_type string const ( Message_type_typeFTM Message_type_type = "FTM" Message_type_typeWRM Message_type_type = "WRM" Message_type_typeICEM Message_type_type = "ICEM" Message_type_typeWERM Message_type_type = "WERM" ) type Error_code_type string type NonNegativeInteger uint type GYear uint type Duration string const ( // Description: message type not supported, Explanation: web service does not support the requested message type Error_code_typeE010 Error_code_type = "e010" // Description: paging parameters inconsistent with messages, Explanation: parameters for paging mechanism do not fit the available messages, e.g. Offset >= Total Count Error_code_typeE030 Error_code_type = "e030" // Description: syntax error in request, Explanation: request violates the schema for requests Error_code_typeE100 Error_code_type = "e100" // Description: incorrect message type, Explanation: given message type is not known Error_code_typeE110 Error_code_type = "e110" // Description: incorrect type-specific parameters, Explanation: type-specific parameters are erroneous Error_code_typeE120 Error_code_type = "e120" // Description: incorrect paging parameters, Explanation: given parameters for the paging mechanism are erroneous Error_code_typeE130 Error_code_type = "e130" // Description: operation not known, Explanation: the requested operation is unknown Error_code_typeE200 Error_code_type = "e200" // Description: data source unavailable, Explanation: data source of the web service for the NtS data is temporarily unavailable Error_code_typeE300 Error_code_type = "e300" // Description: too many results for request, Explanation: server is unable to handle number of results Error_code_typeE310 Error_code_type = "e310" ) type Get_messages_query struct { XMLName xml.Name `xml:"http://www.ris.eu/nts.ms/2.0.4.0 get_messages_query"` Message_type *Message_type_type `xml:"http://www.ris.eu/nts.ms/2.0.4.0 message_type,omitempty"` Ids []*Id_pair `xml:"ids,omitempty"` Validity_period *Validity_period_type `xml:"validity_period,omitempty"` Dates_issue []*Date_pair `xml:"http://www.ris.eu/nts.ms/2.0.4.0 dates_issue,omitempty"` Paging_request *Paging_request_type `xml:"paging_request,omitempty"` } type Get_messages_result struct { XMLName xml.Name `xml:"http://www.ris.eu/nts.ms/2.0.4.0 get_messages_result"` Result_message []*RIS_Message_Type `xml:"result_message,omitempty"` Result_error []*Error_code_type `xml:"result_error,omitempty"` Paging_result *Paging_result_type `xml:"paging_result,omitempty"` } type Id_pair struct { XMLName xml.Name `xml:"http://www.ris.eu/nts.ms/2.0.4.0 ids"` Id *Isrs_code_type `xml:"http://www.ris.eu/nts.ms/2.0.4.0 id,omitempty"` } type Date_pair struct { XMLName xml.Name `xml:"http://www.ris.eu/nts.ms/2.0.4.0 dates_issue"` Date_start Date `xml:"http://www.ris.eu/nts.ms/2.0.4.0 date_start,omitempty"` Date_end Date `xml:"http://www.ris.eu/nts.ms/2.0.4.0 date_end,omitempty"` } type Paging_request_type struct { XMLName xml.Name `xml:"http://www.ris.eu/nts/4.0.4.0 paging_request"` Offset *NonNegativeInteger `xml:"offset,omitempty"` Limit *NonNegativeInteger `xml:"limit,omitempty"` Total_count bool `xml:"total_count,omitempty"` } type Paging_result_type struct { XMLName xml.Name `xml:"http://www.ris.eu/nts.ms/2.0.4.0 paging_result"` Offset *NonNegativeInteger `xml:"offset,omitempty"` Count *NonNegativeInteger `xml:"count,omitempty"` Total_count *NonNegativeInteger `xml:"total_count,omitempty"` } type Country_code_enum string const ( Country_code_enumAT Country_code_enum = "AT" Country_code_enumBE Country_code_enum = "BE" Country_code_enumBG Country_code_enum = "BG" Country_code_enumCH Country_code_enum = "CH" Country_code_enumCY Country_code_enum = "CY" Country_code_enumCZ Country_code_enum = "CZ" Country_code_enumDE Country_code_enum = "DE" Country_code_enumDK Country_code_enum = "DK" Country_code_enumEE Country_code_enum = "EE" Country_code_enumES Country_code_enum = "ES" Country_code_enumFI Country_code_enum = "FI" Country_code_enumFR Country_code_enum = "FR" Country_code_enumGB Country_code_enum = "GB" Country_code_enumGR Country_code_enum = "GR" Country_code_enumHR Country_code_enum = "HR" Country_code_enumHU Country_code_enum = "HU" Country_code_enumIE Country_code_enum = "IE" Country_code_enumIT Country_code_enum = "IT" Country_code_enumLT Country_code_enum = "LT" Country_code_enumLU Country_code_enum = "LU" Country_code_enumLV Country_code_enum = "LV" Country_code_enumMD Country_code_enum = "MD" Country_code_enumME Country_code_enum = "ME" Country_code_enumMT Country_code_enum = "MT" Country_code_enumNL Country_code_enum = "NL" Country_code_enumPL Country_code_enum = "PL" Country_code_enumPT Country_code_enum = "PT" Country_code_enumRO Country_code_enum = "RO" Country_code_enumRS Country_code_enum = "RS" Country_code_enumSE Country_code_enum = "SE" Country_code_enumSI Country_code_enum = "SI" Country_code_enumSK Country_code_enum = "SK" Country_code_enumRU Country_code_enum = "RU" Country_code_enumUA Country_code_enum = "UA" ) type Language_code_enum string const ( Language_code_enumDE Language_code_enum = "DE" Language_code_enumEN Language_code_enum = "EN" Language_code_enumFR Language_code_enum = "FR" Language_code_enumNL Language_code_enum = "NL" Language_code_enumSK Language_code_enum = "SK" Language_code_enumHU Language_code_enum = "HU" Language_code_enumHR Language_code_enum = "HR" Language_code_enumSR Language_code_enum = "SR" Language_code_enumBG Language_code_enum = "BG" Language_code_enumRO Language_code_enum = "RO" Language_code_enumRU Language_code_enum = "RU" Language_code_enumCS Language_code_enum = "CS" Language_code_enumPL Language_code_enum = "PL" Language_code_enumPT Language_code_enum = "PT" Language_code_enumES Language_code_enum = "ES" Language_code_enumSV Language_code_enum = "SV" Language_code_enumFI Language_code_enum = "FI" Language_code_enumDA Language_code_enum = "DA" Language_code_enumET Language_code_enum = "ET" Language_code_enumLV Language_code_enum = "LV" Language_code_enumLT Language_code_enum = "LT" Language_code_enumIT Language_code_enum = "IT" Language_code_enumMT Language_code_enum = "MT" Language_code_enumEL Language_code_enum = "EL" Language_code_enumSL Language_code_enum = "SL" ) type Subject_code_enum string const ( Subject_code_enumANNOUN Subject_code_enum = "ANNOUN" Subject_code_enumWARNIN Subject_code_enum = "WARNIN" Subject_code_enumCANCEL Subject_code_enum = "CANCEL" Subject_code_enumINFSER Subject_code_enum = "INFSER" Subject_code_enumOBSTRU Subject_code_enum = "OBSTRU" Subject_code_enumPAROBS Subject_code_enum = "PAROBS" Subject_code_enumDELAY Subject_code_enum = "DELAY" Subject_code_enumVESLEN Subject_code_enum = "VESLEN" Subject_code_enumVESHEI Subject_code_enum = "VESHEI" Subject_code_enumVESBRE Subject_code_enum = "VESBRE" Subject_code_enumVESDRA Subject_code_enum = "VESDRA" Subject_code_enumAVALEN Subject_code_enum = "AVALEN" Subject_code_enumCLEHEI Subject_code_enum = "CLEHEI" Subject_code_enumCLEWID Subject_code_enum = "CLEWID" Subject_code_enumAVADEP Subject_code_enum = "AVADEP" Subject_code_enumNOMOOR Subject_code_enum = "NOMOOR" Subject_code_enumSERVIC Subject_code_enum = "SERVIC" Subject_code_enumNOSERV Subject_code_enum = "NOSERV" Subject_code_enumSPEED Subject_code_enum = "SPEED" Subject_code_enumWAVWAS Subject_code_enum = "WAVWAS" Subject_code_enumPASSIN Subject_code_enum = "PASSIN" Subject_code_enumANCHOR Subject_code_enum = "ANCHOR" Subject_code_enumOVRTAK Subject_code_enum = "OVRTAK" Subject_code_enumMINPWR Subject_code_enum = "MINPWR" Subject_code_enumDREDGE Subject_code_enum = "DREDGE" Subject_code_enumWORK Subject_code_enum = "WORK" Subject_code_enumEVENT Subject_code_enum = "EVENT" Subject_code_enumCHGMAR Subject_code_enum = "CHGMAR" Subject_code_enumCHGSER Subject_code_enum = "CHGSER" Subject_code_enumSPCMAR Subject_code_enum = "SPCMAR" Subject_code_enumEXERC Subject_code_enum = "EXERC" Subject_code_enumLEADEP Subject_code_enum = "LEADEP" Subject_code_enumLEVDEC Subject_code_enum = "LEVDEC" Subject_code_enumLEVRIS Subject_code_enum = "LEVRIS" Subject_code_enumLIMITA Subject_code_enum = "LIMITA" Subject_code_enumMISECH Subject_code_enum = "MISECH" Subject_code_enumECDISU Subject_code_enum = "ECDISU" Subject_code_enumNEWOBJ Subject_code_enum = "NEWOBJ" Subject_code_enumCHWWY Subject_code_enum = "CHWWY" Subject_code_enumCONWWY Subject_code_enum = "CONWWY" Subject_code_enumDIVER Subject_code_enum = "DIVER" Subject_code_enumSPECTR Subject_code_enum = "SPECTR" Subject_code_enumLOCRUL Subject_code_enum = "LOCRUL" Subject_code_enumVHFCOV Subject_code_enum = "VHFCOV" Subject_code_enumHIGVOL Subject_code_enum = "HIGVOL" Subject_code_enumTURNIN Subject_code_enum = "TURNIN" Subject_code_enumCONBRE Subject_code_enum = "CONBRE" Subject_code_enumCONLEN Subject_code_enum = "CONLEN" Subject_code_enumREMOBJ Subject_code_enum = "REMOBJ" ) type Reason_code_enum string const ( Reason_code_enumEVENT Reason_code_enum = "EVENT" Reason_code_enumWORK Reason_code_enum = "WORK" Reason_code_enumDREDGE Reason_code_enum = "DREDGE" Reason_code_enumEXERC Reason_code_enum = "EXERC" Reason_code_enumHIGWAT Reason_code_enum = "HIGWAT" Reason_code_enumHIWAI Reason_code_enum = "HIWAI" Reason_code_enumHIWAII Reason_code_enum = "HIWAII" Reason_code_enumLOWWAT Reason_code_enum = "LOWWAT" Reason_code_enumSHALLO Reason_code_enum = "SHALLO" Reason_code_enumCALAMI Reason_code_enum = "CALAMI" Reason_code_enumLAUNCH Reason_code_enum = "LAUNCH" Reason_code_enumDECLEV Reason_code_enum = "DECLEV" Reason_code_enumFLOMEA Reason_code_enum = "FLOMEA" Reason_code_enumBLDWRK Reason_code_enum = "BLDWRK" Reason_code_enumREPAIR Reason_code_enum = "REPAIR" Reason_code_enumINSPEC Reason_code_enum = "INSPEC" Reason_code_enumFIRWRK Reason_code_enum = "FIRWRK" Reason_code_enumLIMITA Reason_code_enum = "LIMITA" Reason_code_enumCHGFWY Reason_code_enum = "CHGFWY" Reason_code_enumCONSTR Reason_code_enum = "CONSTR" Reason_code_enumDIVING Reason_code_enum = "DIVING" Reason_code_enumSPECTR Reason_code_enum = "SPECTR" Reason_code_enumEXT Reason_code_enum = "EXT" Reason_code_enumMIN Reason_code_enum = "MIN" Reason_code_enumSOUND Reason_code_enum = "SOUND" Reason_code_enumOTHER Reason_code_enum = "OTHER" Reason_code_enumSTRIKE Reason_code_enum = "STRIKE" Reason_code_enumFLOMAT Reason_code_enum = "FLOMAT" Reason_code_enumEXPLOS Reason_code_enum = "EXPLOS" Reason_code_enumICE Reason_code_enum = "ICE" Reason_code_enumOBSTAC Reason_code_enum = "OBSTAC" Reason_code_enumCHGMAR Reason_code_enum = "CHGMAR" Reason_code_enumDAMMAR Reason_code_enum = "DAMMAR" Reason_code_enumFALMAT Reason_code_enum = "FALMAT" Reason_code_enumMISECH Reason_code_enum = "MISECH" Reason_code_enumHEARIS Reason_code_enum = "HEARIS" Reason_code_enumHIGVOL Reason_code_enum = "HIGVOL" Reason_code_enumECDISU Reason_code_enum = "ECDISU" Reason_code_enumLOCRUL Reason_code_enum = "LOCRUL" Reason_code_enumNEWOBJ Reason_code_enum = "NEWOBJ" Reason_code_enumOBUNWA Reason_code_enum = "OBUNWA" Reason_code_enumVHFCOV Reason_code_enum = "VHFCOV" Reason_code_enumREMOBJ Reason_code_enum = "REMOBJ" Reason_code_enumLEVRIS Reason_code_enum = "LEVRIS" Reason_code_enumSPCMAR Reason_code_enum = "SPCMAR" Reason_code_enumWERMCO Reason_code_enum = "WERMCO" Reason_code_enumINFSER Reason_code_enum = "INFSER" ) type Reporting_code_enum string const ( Reporting_code_enumINF Reporting_code_enum = "INF" Reporting_code_enumADD Reporting_code_enum = "ADD" Reporting_code_enumREG Reporting_code_enum = "REG" ) type Communication_code_enum string const ( Communication_code_enumTE Communication_code_enum = "TE" Communication_code_enumAP Communication_code_enum = "AP" Communication_code_enumEM Communication_code_enum = "EM" Communication_code_enumAH Communication_code_enum = "AH" Communication_code_enumTT Communication_code_enum = "TT" Communication_code_enumFX Communication_code_enum = "FX" Communication_code_enumLS Communication_code_enum = "LS" Communication_code_enumFS Communication_code_enum = "FS" Communication_code_enumSO Communication_code_enum = "SO" Communication_code_enumEI Communication_code_enum = "EI" ) type Measure_code_enum string const ( Measure_code_enumDIS Measure_code_enum = "DIS" Measure_code_enumREG Measure_code_enum = "REG" Measure_code_enumBAR Measure_code_enum = "BAR" Measure_code_enumVER Measure_code_enum = "VER" Measure_code_enumLSD Measure_code_enum = "LSD" Measure_code_enumWAL Measure_code_enum = "WAL" Measure_code_enumNOM Measure_code_enum = "NOM" ) type Barrage_code_enum string const ( Barrage_code_enumCLD Barrage_code_enum = "CLD" Barrage_code_enumOPG Barrage_code_enum = "OPG" Barrage_code_enumCLG Barrage_code_enum = "CLG" Barrage_code_enumOPD Barrage_code_enum = "OPD" Barrage_code_enumOPN Barrage_code_enum = "OPN" ) type Regime_code_enum string const ( Regime_code_enumNO Regime_code_enum = "NO" Regime_code_enumHI Regime_code_enum = "HI" Regime_code_enumII Regime_code_enum = "II" Regime_code_enumI Regime_code_enum = "I" Regime_code_enumNN Regime_code_enum = "NN" Regime_code_enumLO Regime_code_enum = "LO" ) type Ice_condition_code_enum string const ( Ice_condition_code_enumA Ice_condition_code_enum = "A" Ice_condition_code_enumB Ice_condition_code_enum = "B" Ice_condition_code_enumC Ice_condition_code_enum = "C" Ice_condition_code_enumD Ice_condition_code_enum = "D" Ice_condition_code_enumE Ice_condition_code_enum = "E" Ice_condition_code_enumF Ice_condition_code_enum = "F" Ice_condition_code_enumG Ice_condition_code_enum = "G" Ice_condition_code_enumH Ice_condition_code_enum = "H" Ice_condition_code_enumK Ice_condition_code_enum = "K" Ice_condition_code_enumL Ice_condition_code_enum = "L" Ice_condition_code_enumM Ice_condition_code_enum = "M" Ice_condition_code_enumP Ice_condition_code_enum = "P" Ice_condition_code_enumR Ice_condition_code_enum = "R" Ice_condition_code_enumS Ice_condition_code_enum = "S" Ice_condition_code_enumU Ice_condition_code_enum = "U" Ice_condition_code_enumO Ice_condition_code_enum = "O" Ice_condition_code_enumV Ice_condition_code_enum = "V" ) type Ice_accessibility_code_enum string const ( Ice_accessibility_code_enumA Ice_accessibility_code_enum = "A" Ice_accessibility_code_enumB Ice_accessibility_code_enum = "B" Ice_accessibility_code_enumF Ice_accessibility_code_enum = "F" Ice_accessibility_code_enumL Ice_accessibility_code_enum = "L" Ice_accessibility_code_enumC Ice_accessibility_code_enum = "C" Ice_accessibility_code_enumD Ice_accessibility_code_enum = "D" Ice_accessibility_code_enumE Ice_accessibility_code_enum = "E" Ice_accessibility_code_enumG Ice_accessibility_code_enum = "G" Ice_accessibility_code_enumH Ice_accessibility_code_enum = "H" Ice_accessibility_code_enumM Ice_accessibility_code_enum = "M" Ice_accessibility_code_enumK Ice_accessibility_code_enum = "K" Ice_accessibility_code_enumT Ice_accessibility_code_enum = "T" Ice_accessibility_code_enumP Ice_accessibility_code_enum = "P" Ice_accessibility_code_enumV Ice_accessibility_code_enum = "V" Ice_accessibility_code_enumX Ice_accessibility_code_enum = "X" ) type Ice_classification_code_enum string const ( Ice_classification_code_enumA Ice_classification_code_enum = "A" Ice_classification_code_enumB Ice_classification_code_enum = "B" Ice_classification_code_enumC Ice_classification_code_enum = "C" Ice_classification_code_enumD Ice_classification_code_enum = "D" Ice_classification_code_enumE Ice_classification_code_enum = "E" ) type Ice_situation_code_enum string const ( Ice_situation_code_enumNOL Ice_situation_code_enum = "NOL" Ice_situation_code_enumLIM Ice_situation_code_enum = "LIM" Ice_situation_code_enumNON Ice_situation_code_enum = "NON" ) type Weather_class_code_enum string const ( Weather_class_code_enumCLR Weather_class_code_enum = "CLR" Weather_class_code_enumCLDY Weather_class_code_enum = "CLDY" Weather_class_code_enumOCST Weather_class_code_enum = "OCST" Weather_class_code_enumDZZL Weather_class_code_enum = "DZZL" Weather_class_code_enumRAIN Weather_class_code_enum = "RAIN" Weather_class_code_enumLRAIN Weather_class_code_enum = "LRAIN" Weather_class_code_enumORAIN Weather_class_code_enum = "ORAIN" Weather_class_code_enumHRAIN Weather_class_code_enum = "HRAIN" Weather_class_code_enumSLEET Weather_class_code_enum = "SLEET" Weather_class_code_enumSNOW Weather_class_code_enum = "SNOW" Weather_class_code_enumSNFALL Weather_class_code_enum = "SNFALL" Weather_class_code_enumHAIL Weather_class_code_enum = "HAIL" Weather_class_code_enumSHWRS Weather_class_code_enum = "SHWRS" Weather_class_code_enumTHSTRM Weather_class_code_enum = "THSTRM" Weather_class_code_enumHAZY Weather_class_code_enum = "HAZY" Weather_class_code_enumFOG Weather_class_code_enum = "FOG" Weather_class_code_enumFOGPAT Weather_class_code_enum = "FOGPAT" Weather_class_code_enumGALE Weather_class_code_enum = "GALE" Weather_class_code_enumSTRM Weather_class_code_enum = "STRM" Weather_class_code_enumHURRC Weather_class_code_enum = "HURRC" Weather_class_code_enumFZRA Weather_class_code_enum = "FZRA" ) type Weather_item_code_enum string const ( Weather_item_code_enumWI Weather_item_code_enum = "WI" Weather_item_code_enumWA Weather_item_code_enum = "WA" Weather_item_code_enumFG Weather_item_code_enum = "FG" Weather_item_code_enumRN Weather_item_code_enum = "RN" Weather_item_code_enumSN Weather_item_code_enum = "SN" Weather_item_code_enumAT Weather_item_code_enum = "AT" Weather_item_code_enumWT Weather_item_code_enum = "WT" ) type Weather_category_code_enum string const ( Weather_category_code_enum0 Weather_category_code_enum = "0" Weather_category_code_enum1 Weather_category_code_enum = "1" Weather_category_code_enum2 Weather_category_code_enum = "2" Weather_category_code_enum3 Weather_category_code_enum = "3" Weather_category_code_enum4 Weather_category_code_enum = "4" Weather_category_code_enum5 Weather_category_code_enum = "5" Weather_category_code_enum6 Weather_category_code_enum = "6" Weather_category_code_enum7 Weather_category_code_enum = "7" Weather_category_code_enum8 Weather_category_code_enum = "8" Weather_category_code_enum9 Weather_category_code_enum = "9" Weather_category_code_enum10 Weather_category_code_enum = "10" Weather_category_code_enum11 Weather_category_code_enum = "11" Weather_category_code_enum12 Weather_category_code_enum = "12" Weather_category_code_enum13 Weather_category_code_enum = "13" Weather_category_code_enum14 Weather_category_code_enum = "14" Weather_category_code_enum15 Weather_category_code_enum = "15" Weather_category_code_enum16 Weather_category_code_enum = "16" Weather_category_code_enum17 Weather_category_code_enum = "17" Weather_category_code_enum18 Weather_category_code_enum = "18" Weather_category_code_enum19 Weather_category_code_enum = "19" Weather_category_code_enum20 Weather_category_code_enum = "20" Weather_category_code_enum21 Weather_category_code_enum = "21" Weather_category_code_enum22 Weather_category_code_enum = "22" ) type Weather_direction_code_enum string const ( Weather_direction_code_enumN Weather_direction_code_enum = "N" Weather_direction_code_enumNE Weather_direction_code_enum = "NE" Weather_direction_code_enumE Weather_direction_code_enum = "E" Weather_direction_code_enumSE Weather_direction_code_enum = "SE" Weather_direction_code_enumS Weather_direction_code_enum = "S" Weather_direction_code_enumSW Weather_direction_code_enum = "SW" Weather_direction_code_enumW Weather_direction_code_enum = "W" Weather_direction_code_enumNW Weather_direction_code_enum = "NW" Weather_direction_code_enumWRB Weather_direction_code_enum = "WRB" ) // Internal ID - best practice: global unique identifier type Internal_id_type string // ISRS location code, unique identification of the geo object as defined in RIS Index encoding guide type Isrs_code_type string type Type_code_enum string const ( Type_code_enumRIV Type_code_enum = "RIV" Type_code_enumCAN Type_code_enum = "CAN" Type_code_enumLAK Type_code_enum = "LAK" Type_code_enumFWY Type_code_enum = "FWY" Type_code_enumLCK Type_code_enum = "LCK" Type_code_enumBRI Type_code_enum = "BRI" Type_code_enumRMP Type_code_enum = "RMP" Type_code_enumBAR Type_code_enum = "BAR" Type_code_enumBNK Type_code_enum = "BNK" Type_code_enumGAU Type_code_enum = "GAU" Type_code_enumBUO Type_code_enum = "BUO" Type_code_enumBEA Type_code_enum = "BEA" Type_code_enumANC Type_code_enum = "ANC" Type_code_enumBER Type_code_enum = "BER" Type_code_enumMOO Type_code_enum = "MOO" Type_code_enumTER Type_code_enum = "TER" Type_code_enumHAR Type_code_enum = "HAR" Type_code_enumFDO Type_code_enum = "FDO" Type_code_enumCAB Type_code_enum = "CAB" Type_code_enumFER Type_code_enum = "FER" Type_code_enumPIP Type_code_enum = "PIP" Type_code_enumPPO Type_code_enum = "PPO" Type_code_enumHFA Type_code_enum = "HFA" Type_code_enumHMO Type_code_enum = "HMO" Type_code_enumSHY Type_code_enum = "SHY" Type_code_enumREF Type_code_enum = "REF" Type_code_enumMAR Type_code_enum = "MAR" Type_code_enumLIG Type_code_enum = "LIG" Type_code_enumSIG Type_code_enum = "SIG" Type_code_enumTUR Type_code_enum = "TUR" Type_code_enumCBR Type_code_enum = "CBR" Type_code_enumTUN Type_code_enum = "TUN" Type_code_enumBCO Type_code_enum = "BCO" Type_code_enumREP Type_code_enum = "REP" Type_code_enumFLO Type_code_enum = "FLO" Type_code_enumSLI Type_code_enum = "SLI" Type_code_enumDUK Type_code_enum = "DUK" Type_code_enumVTC Type_code_enum = "VTC" Type_code_enumRES Type_code_enum = "RES" Type_code_enumLKB Type_code_enum = "LKB" Type_code_enumBRO Type_code_enum = "BRO" Type_code_enumBNS Type_code_enum = "BNS" ) type Interval_code_enum string const ( Interval_code_enumCON Interval_code_enum = "CON" Interval_code_enumDAY Interval_code_enum = "DAY" Interval_code_enumWRK Interval_code_enum = "WRK" Interval_code_enumWKN Interval_code_enum = "WKN" Interval_code_enumSUN Interval_code_enum = "SUN" Interval_code_enumMON Interval_code_enum = "MON" Interval_code_enumTUE Interval_code_enum = "TUE" Interval_code_enumWED Interval_code_enum = "WED" Interval_code_enumTHU Interval_code_enum = "THU" Interval_code_enumFRI Interval_code_enum = "FRI" Interval_code_enumSAT Interval_code_enum = "SAT" Interval_code_enumDTI Interval_code_enum = "DTI" Interval_code_enumNTI Interval_code_enum = "NTI" Interval_code_enumRVI Interval_code_enum = "RVI" Interval_code_enumEXC Interval_code_enum = "EXC" Interval_code_enumWRD Interval_code_enum = "WRD" ) type Limitation_code_enum string const ( Limitation_code_enumOBSTRU Limitation_code_enum = "OBSTRU" Limitation_code_enumPAROBS Limitation_code_enum = "PAROBS" Limitation_code_enumDELAY Limitation_code_enum = "DELAY" Limitation_code_enumVESLEN Limitation_code_enum = "VESLEN" Limitation_code_enumVESHEI Limitation_code_enum = "VESHEI" Limitation_code_enumVESBRE Limitation_code_enum = "VESBRE" Limitation_code_enumVESDRA Limitation_code_enum = "VESDRA" Limitation_code_enumAVALEN Limitation_code_enum = "AVALEN" Limitation_code_enumCLEHEI Limitation_code_enum = "CLEHEI" Limitation_code_enumCLEWID Limitation_code_enum = "CLEWID" Limitation_code_enumAVADEP Limitation_code_enum = "AVADEP" Limitation_code_enumNOMOOR Limitation_code_enum = "NOMOOR" Limitation_code_enumSERVIC Limitation_code_enum = "SERVIC" Limitation_code_enumNOSERV Limitation_code_enum = "NOSERV" Limitation_code_enumSPEED Limitation_code_enum = "SPEED" Limitation_code_enumWAVWAS Limitation_code_enum = "WAVWAS" Limitation_code_enumPASSIN Limitation_code_enum = "PASSIN" Limitation_code_enumANCHOR Limitation_code_enum = "ANCHOR" Limitation_code_enumOVRTAK Limitation_code_enum = "OVRTAK" Limitation_code_enumMINPWR Limitation_code_enum = "MINPWR" Limitation_code_enumALTER Limitation_code_enum = "ALTER" Limitation_code_enumCAUTIO Limitation_code_enum = "CAUTIO" Limitation_code_enumNOLIM Limitation_code_enum = "NOLIM" Limitation_code_enumTURNIN Limitation_code_enum = "TURNIN" Limitation_code_enumNOSHORE Limitation_code_enum = "NOSHORE" Limitation_code_enumCONBRE Limitation_code_enum = "CONBRE" Limitation_code_enumCONLEN Limitation_code_enum = "CONLEN" Limitation_code_enumLEADEP Limitation_code_enum = "LEADEP" Limitation_code_enumNOBERT Limitation_code_enum = "NOBERT" ) type Position_code_enum string const ( Position_code_enumAL Position_code_enum = "AL" Position_code_enumLE Position_code_enum = "LE" Position_code_enumMI Position_code_enum = "MI" Position_code_enumRI Position_code_enum = "RI" Position_code_enumLB Position_code_enum = "LB" Position_code_enumRB Position_code_enum = "RB" Position_code_enumN Position_code_enum = "N" Position_code_enumNE Position_code_enum = "NE" Position_code_enumE Position_code_enum = "E" Position_code_enumSE Position_code_enum = "SE" Position_code_enumS Position_code_enum = "S" Position_code_enumSW Position_code_enum = "SW" Position_code_enumW Position_code_enum = "W" Position_code_enumNW Position_code_enum = "NW" Position_code_enumBI Position_code_enum = "BI" Position_code_enumSM Position_code_enum = "SM" Position_code_enumOL Position_code_enum = "OL" Position_code_enumEW Position_code_enum = "EW" Position_code_enumMP Position_code_enum = "MP" Position_code_enumFP Position_code_enum = "FP" Position_code_enumVA Position_code_enum = "VA" Position_code_enumRY Position_code_enum = "RY" Position_code_enumGY Position_code_enum = "GY" ) type Reference_code_enum string const ( Reference_code_enumNAP Reference_code_enum = "NAP" Reference_code_enumKP Reference_code_enum = "KP" Reference_code_enumFZP Reference_code_enum = "FZP" Reference_code_enumADR Reference_code_enum = "ADR" Reference_code_enumTAW Reference_code_enum = "TAW" Reference_code_enumPUL Reference_code_enum = "PUL" Reference_code_enumNGM Reference_code_enum = "NGM" Reference_code_enumETRS Reference_code_enum = "ETRS" Reference_code_enumPOT Reference_code_enum = "POT" Reference_code_enumLDC Reference_code_enum = "LDC" Reference_code_enumHDC Reference_code_enum = "HDC" Reference_code_enumZPG Reference_code_enum = "ZPG" Reference_code_enumGLW Reference_code_enum = "GLW" Reference_code_enumHSW Reference_code_enum = "HSW" Reference_code_enumLNW Reference_code_enum = "LNW" Reference_code_enumHNW Reference_code_enum = "HNW" Reference_code_enumIGN Reference_code_enum = "IGN" Reference_code_enumWGS Reference_code_enum = "WGS" Reference_code_enumRN Reference_code_enum = "RN" Reference_code_enumHBO Reference_code_enum = "HBO" ) type Indication_code_enum string const ( Indication_code_enumMAX Indication_code_enum = "MAX" Indication_code_enumMIN Indication_code_enum = "MIN" Indication_code_enumRED Indication_code_enum = "RED" ) type Target_group_code_enum string const ( Target_group_code_enumALL Target_group_code_enum = "ALL" Target_group_code_enumCDG Target_group_code_enum = "CDG" Target_group_code_enumCOM Target_group_code_enum = "COM" Target_group_code_enumPAX Target_group_code_enum = "PAX" Target_group_code_enumPLE Target_group_code_enum = "PLE" Target_group_code_enumCNV Target_group_code_enum = "CNV" Target_group_code_enumPUS Target_group_code_enum = "PUS" Target_group_code_enumNNU Target_group_code_enum = "NNU" Target_group_code_enumLOA Target_group_code_enum = "LOA" Target_group_code_enumSMA Target_group_code_enum = "SMA" Target_group_code_enumCND Target_group_code_enum = "CND" Target_group_code_enumWOC Target_group_code_enum = "WOC" Target_group_code_enumMOV Target_group_code_enum = "MOV" Target_group_code_enumNMV Target_group_code_enum = "NMV" ) type Direction_code_enum string const ( Direction_code_enumALL Direction_code_enum = "ALL" Direction_code_enumUPS Direction_code_enum = "UPS" Direction_code_enumDWN Direction_code_enum = "DWN" ) type Unit_enum string const ( Unit_enumCm Unit_enum = "cm" Unit_enumM3s Unit_enum = "m³/s" Unit_enumH Unit_enum = "h" Unit_enumKmh Unit_enum = "km/h" Unit_enumKW Unit_enum = "kW" Unit_enumMs Unit_enum = "m/s" Unit_enumMmh Unit_enum = "mm/h" Unit_enumC Unit_enum = "°C" ) type RIS_Message_Type struct { XMLName xml.Name `xml:"http://www.ris.eu/nts.ms/2.0.4.0 result_message"` // Identification section Identification *Identification_type `xml:"identification,omitempty"` // Fairway and traffic related section Ftm []*Ftm_type `xml:"ftm,omitempty"` // Water related section Wrm []*Wrm_type `xml:"wrm,omitempty"` // Ice related section Icem []*Icem_type `xml:"icem,omitempty"` // Weather related section Werm []*Werm_type `xml:"werm,omitempty"` } type Identification_type struct { XMLName xml.Name `xml:"http://www.ris.eu/nts/4.0.4.0 identification"` // Internal ID Internal_id *Internal_id_type `xml:"internal_id,omitempty"` // Sender (System) of the message From string `xml:"from,omitempty"` // Originator (initiator) of the information in this message Originator string `xml:"originator,omitempty"` // Country where message is valid Country_code *Country_code_enum `xml:"country_code,omitempty"` // Original language used in the textual info. (contents) Language_code *Language_code_enum `xml:"language_code,omitempty"` // District / Region within the specified country, where the message is applicable District string `xml:"district,omitempty"` // Date and time of publication including time zone Date_issue DateTime `xml:"date_issue,omitempty"` } type Ftm_type struct { XMLName xml.Name `xml:"http://www.ris.eu/nts/4.0.4.0 ftm_type"` // Internal ID Internal_id *Internal_id_type `xml:"internal_id,omitempty"` // NtS Number Nts_number *Nts_number_type `xml:"nts_number,omitempty"` // Target group information Target_group []*Target_group_type `xml:"target_group,omitempty"` // Subject code must contain one of the following: Announcement (ANNOUN), Warning (WARNIN), Notice withdrawn (CANCEL) or Information service (INFSER). More information on the use of codes can be found in the NtS Encoding Guide. Subject_code *Subject_code_enum `xml:"subject_code,omitempty"` // Overall period of validity Validity_period *Validity_period_type `xml:"validity_period,omitempty"` // Additional information in local language Contents string `xml:"contents,omitempty"` // Notice source (name of authority) Source string `xml:"source,omitempty"` // Reason / justification of the notice Reason_code *Reason_code_enum `xml:"reason_code,omitempty"` // Communication channel information Communication []*Communication_type `xml:"communication,omitempty"` // Fairway section Fairway_section *Fairway_section_type `xml:"fairway_section,omitempty"` // Object section Object *Object_type `xml:"object,omitempty"` } type Communication_type struct { XMLName xml.Name `xml:"http://www.ris.eu/nts/4.0.4.0 communication_type"` // Reporting regime (information, or duty to report) Reporting_code *Reporting_code_enum `xml:"reporting_code,omitempty"` // Communication code (telephone, VHF etc.) Communication_code *Communication_code_enum `xml:"communication_code,omitempty"` // Telephone, VHF number (including callsign), e-mail address, URL or teletext Number string `xml:"number,omitempty"` // Name of the attachment or additional information Label string `xml:"label,omitempty"` // Additional remarks concerning the communication Remark string `xml:"remark,omitempty"` } type Object_type struct { XMLName xml.Name `xml:"http://www.ris.eu/nts/4.0.4.0 object_type"` // Geo Information of object Geo_object *Geo_object_type `xml:"geo_object,omitempty"` // Object limitation section Limitation []*Limitation_type `xml:"limitation,omitempty"` } type Wrm_type struct { XMLName xml.Name `xml:"http://www.ris.eu/nts/4.0.4.0 wrm"` // Internal ID Internal_id *Internal_id_type `xml:"internal_id,omitempty"` // NtS Number Nts_number *Nts_number_type `xml:"nts_number,omitempty"` // Overall period of validity Validity_period *Validity_period_type `xml:"validity_period,omitempty"` // Object section Geo_object *Geo_object_type `xml:"geo_object,omitempty"` // Value reference (measurement reference) Reference_code *Reference_code_enum `xml:"reference_code,omitempty"` // Measurements (normal or predicted values) Measure []*Measure_type `xml:"measure,omitempty"` } type Measure_type struct { XMLName xml.Name `xml:"http://www.ris.eu/nts/4.0.4.0 measure"` // Predicted measurement (1 or true) or real measurement (0 or false) Predicted bool `xml:"predicted,omitempty"` // Kind of water related information Measure_code *Measure_code_enum `xml:"measure_code,omitempty"` // Measured or predicted value Value *float32 `xml:"value,omitempty"` // Lowest value of confidence interval Value_min *float32 `xml:"value_min,omitempty"` // Highest value of confidence interval Value_max *float32 `xml:"value_max,omitempty"` // Unit of the water related value Unit *Unit_enum `xml:"unit,omitempty"` // Barrage status Barrage_code *Barrage_code_enum `xml:"barrage_code,omitempty"` // Regime applicable Regime_code *Regime_code_enum `xml:"regime_code,omitempty"` // Date and Time of measurement or predicted value including time zone Measuredate DateTime `xml:"measuredate,omitempty"` // Difference with comparative value Difference *Difference_type `xml:"difference,omitempty"` } type Difference_type struct { XMLName xml.Name `xml:"http://www.ris.eu/nts/4.0.4.0 difference"` // Difference with comparative value Value_difference float32 `xml:"value_difference,omitempty"` // Time difference with measuredata of comparative measurement Time_difference *Duration `xml:"time_difference,omitempty"` } type Icem_type struct { XMLName xml.Name `xml:"http://www.ris.eu/nts/4.0.4.0 icem_type"` // Internal ID Internal_id *Internal_id_type `xml:"internal_id,omitempty"` // NtS Number Nts_number *Nts_number_type `xml:"nts_number,omitempty"` // Overall period of validity Validity_period *Validity_period_type `xml:"validity_period,omitempty"` // Fairway section - the limitation inside the fairway section cannot be used in the ICEM Fairway_section *Fairway_section_type `xml:"fairway_section,omitempty"` // Ice conditions Ice_condition []*Ice_condition_type `xml:"ice_condition,omitempty"` } type Ice_condition_type struct { XMLName xml.Name `xml:"http://www.ris.eu/nts/4.0.4.0 ice_condition_type"` // Date and Time of measurement or prediction including time zone Measuredate DateTime `xml:"measuredate,omitempty"` // Condition code Ice_condition_code *Ice_condition_code_enum `xml:"ice_condition_code,omitempty"` // Accessibility code Ice_accessibility_code *Ice_accessibility_code_enum `xml:"ice_accessibility_code,omitempty"` // Classification code Ice_classification_code *Ice_classification_code_enum `xml:"ice_classification_code,omitempty"` // Situation code Ice_situation_code *Ice_situation_code_enum `xml:"ice_situation_code,omitempty"` } type Werm_type struct { XMLName xml.Name `xml:"http://www.ris.eu/nts/4.0.4.0 werm_type"` // Internal ID Internal_id *Internal_id_type `xml:"internal_id,omitempty"` // NtS Number Nts_number *Nts_number_type `xml:"nts_number,omitempty"` // Overall period of validity Validity_period *Validity_period_type `xml:"validity_period,omitempty"` // Fairway section Fairway_section *Fairway_section_werm_type `xml:"fairway_section,omitempty"` // Actual or Forecast report sections Weather_report *Weather_report_type `xml:"weather_report,omitempty"` } type Fairway_section_werm_type struct { XMLName xml.Name `xml:"http://www.ris.eu/nts/4.0.4.0 fairway_section_werm_type"` // Geo Information of fairway Geo_object *Geo_object_type `xml:"geo_object,omitempty"` } type Weather_report_type struct { XMLName xml.Name `xml:"http://www.ris.eu/nts/4.0.4.0 weather_report_type"` // Date and time of measurement or predicted value including timezone Measuredate DateTime `xml:"measuredate,omitempty"` // Forecast (true or 1) OR Actual report (false or 0) Forecast bool `xml:"forecast,omitempty"` // Classification of weather report Weather_class_code []*Weather_class_code_enum `xml:"weather_class_code,omitempty"` // Weather items Weather_item []*Weather_item_type `xml:"weather_item,omitempty"` } type Weather_item_type struct { XMLName xml.Name `xml:"http://www.ris.eu/nts/4.0.4.0 weather_item_type"` // Weather item type (Wind, Wave etc) Weather_item_code *Weather_item_code_enum `xml:"weather_item_code,omitempty"` // Actual or Minimum value Value_min float32 `xml:"value_min,omitempty"` // Maximum value Value_max float32 `xml:"value_max,omitempty"` // Gusts value (Wind) Value_gusts float32 `xml:"value_gusts,omitempty"` // Unit of the value Unit *Unit_enum `xml:"unit,omitempty"` // Classification of wind report Weather_category_code *Weather_category_code_enum `xml:"weather_category_code,omitempty"` // Direction of wind or wave Direction_code_min *Weather_direction_code_enum `xml:"direction_code_min,omitempty"` // Direction of wind or wave Direction_code_max *Weather_direction_code_enum `xml:"direction_code_max,omitempty"` } type Nts_number_type struct { XMLName xml.Name `xml:"http://www.ris.eu/nts/4.0.4.0 nts_number"` // Name of the publishing organisation (NtS Provider) Organisation string `xml:"organisation,omitempty"` // Year of first issuing of the notice Year *GYear `xml:"year,omitempty"` // Number of the notice (per year, starting with: 1, 0 shall not be used for published notices) Number int32 `xml:"number,omitempty"` // Serial number of notice (replacements and withdrawals), original notice: 0 Serial_number int32 `xml:"serial_number,omitempty"` } type Validity_period_type struct { XMLName xml.Name `xml:"http://www.ris.eu/nts/4.0.4.0 validity_period"` // Start date of validity period including time zone Date_start string `xml:"date_start,omitempty"` // End date of validity period including time zone Date_end string `xml:"date_end,omitempty"` } type Fairway_section_type struct { XMLName xml.Name `xml:"http://www.ris.eu/nts/4.0.4.0 fairway_section_type"` // Geo information of fairway Geo_object *Geo_object_type `xml:"geo_object,omitempty"` // Fairway section limitations Limitation []*Limitation_type `xml:"limitation,omitempty"` } type Geo_object_type struct { XMLName xml.Name `xml:"http://www.ris.eu/nts/4.0.4.0 geo_object"` // ISRS Location Code of the fairway/object Id *Isrs_code_type `xml:"id,omitempty"` // Local name of the fairway section Name string `xml:"name,omitempty"` // Type of geographical object Type_code *Type_code_enum `xml:"type_code,omitempty"` // Describes the position related to the fairway Position_code *Position_code_enum `xml:"position_code,omitempty"` // Fairway section begin and end coordinates Coordinate *Coordinate_type `xml:"coordinate,omitempty"` // Waterway name (usefull if no RIS Index is available) Fairway_name string `xml:"fairway_name,omitempty"` } type Coordinate_type struct { XMLName xml.Name `xml:"http://www.ris.eu/nts/4.0.4.0 coordinate"` Lat string `xml:"lat,omitempty"` Long string `xml:"long,omitempty"` } type Limitation_type struct { XMLName xml.Name `xml:"http://www.ris.eu/nts/4.0.4.0 limitation_type"` // Limitation periods / intervals Limitation_period []*Limitation_period_type `xml:"limitation_period,omitempty"` // Kind of limitation Limitation_code *Limitation_code_enum `xml:"limitation_code,omitempty"` // Describes the position of the limitation related to the fairway Position_code *Position_code_enum `xml:"position_code,omitempty"` // Value of limitation (i.e. max draught) Value float32 `xml:"value,omitempty"` // Unit of the value of the limitation Unit *Unit_enum `xml:"unit,omitempty"` // Value reference Reference_code *Reference_code_enum `xml:"reference_code,omitempty"` // Minimum or maximum or reduced by Indication_code *Indication_code_enum `xml:"indication_code,omitempty"` // Target group information Target_group []*Target_group_type `xml:"target_group,omitempty"` } type Limitation_period_type struct { XMLName xml.Name `xml:"http://www.ris.eu/nts/4.0.4.0 limitation_period_type"` // Start date of limitation period including time zone Date_start time.Time `xml:"date_start,omitempty"` // End date of limitation period including time zone Date_end time.Time `xml:"date_end,omitempty"` // Start time of limitation period without time zone Time_start time.Time `xml:"time_start,omitempty"` // End time of limitation period without time zone Time_end time.Time `xml:"time_end,omitempty"` // Interval for limitation if applicable Interval_code *Interval_code_enum `xml:"interval_code,omitempty"` } type Target_group_type struct { XMLName xml.Name `xml:"http://www.ris.eu/nts/4.0.4.0 target_group_type"` // Target group (vessel type) Target_group_code *Target_group_code_enum `xml:"target_group_code,omitempty"` // Upstream or downstream traffic, or both Direction_code *Direction_code_enum `xml:"direction_code,omitempty"` } type NtS_message_service interface { Get_messages(request *Get_messages_query) (*Get_messages_result, error) } type INtSMessageService struct { client *soap.SOAPClient } func NewINtSMessageService(url string, tls bool, auth *soap.BasicAuth) *INtSMessageService { client := soap.NewSOAPClient(url, tls, auth) return &INtSMessageService{ client: client, } } func NewINtSMessageServiceWithTLSConfig(url string, tlsCfg *tls.Config, auth *soap.BasicAuth) *INtSMessageService { client := soap.NewSOAPClientWithTLSConfig(url, tlsCfg, auth) return &INtSMessageService{ client: client, } } func (service *INtSMessageService) Get_messages(request *Get_messages_query) (*Get_messages_result, error) { response := new(Get_messages_result) err := service.client.Call("http://www.ris.eu/nts.ms/get_messages", request, response) if err != nil { return nil, err } return response, nil }