// // dolmetschctl // // // Copyright (C) 2019 Christian Pointner // // This file is part of dolmetschctl. // // dolmetschctl 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 // any later version. // // dolmetschctl 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 dolmetschctl. If not, see . // package types import ( "fmt" ) // State Machine type State int const ( StateNew = iota StateSettling StateSettled ) func (s State) String() string { switch s { case StateNew: return "new" case StateSettling: return "settling" case StateSettled: return "settled" default: return "unknown" } } func (s *State) FromString(str string) error { switch str { case "new": *s = StateNew case "settling": *s = StateSettling case "settled": *s = StateSettled default: return fmt.Errorf("invalid state '%s'", str) } return nil } func (s State) MarshalText() (data []byte, err error) { data = []byte(s.String()) return } func (s *State) UnmarshalText(data []byte) error { return s.FromString(string(data)) } type Language string func (l Language) String() string { if l == "" { return "none" } return string(l) } func (l *Language) FromString(str string) error { if str == "none" { *l = "" } else { *l = Language(str) } return nil } func (l Language) MarshalText() (data []byte, err error) { data = []byte(l.String()) return } func (l *Language) UnmarshalText(data []byte) error { return l.FromString(string(data)) } type FullState struct { State State Ratio float32 Language Language } // Web Interface type WebError struct { ResponseCode int `json:"response-code"` Error string `json:"error"` } type WebLanguage struct { Lang Language `json:"language"` } type WebState struct { State State `json:"state"` Ratio float32 `json:"original-to-interpreter-ratio"` Lang Language `json:"language"` } type WebSocketRequest struct { Command string `json:"command"` Args []string `json:"arguments"` } type WebSocketResponseBase struct { ResponseCode int `json:"response-code"` Type string `json:"type"` } type WebSocketResponseError struct { WebSocketResponseBase ErrorString string `json:"error"` } type WebSocketResponseState struct { WebSocketResponseBase WebState } type WebSocketResponseLanguages struct { WebSocketResponseBase Languages []Language `json:"languages"` } type WebSocketResponseFull struct { WebSocketResponseBase ErrorString string `json:"error"` WebState Languages []Language `json:"languages"` }