diff options
Diffstat (limited to 'internal/types')
| -rw-r--r-- | internal/types/error.go | 116 | ||||
| -rw-r--r-- | internal/types/server.go | 69 |
2 files changed, 0 insertions, 185 deletions
diff --git a/internal/types/error.go b/internal/types/error.go deleted file mode 100644 index 0b3feae..0000000 --- a/internal/types/error.go +++ /dev/null @@ -1,116 +0,0 @@ -package types - -import ( - "encoding/json" - "errors" - "fmt" -) - -type ErrorLevel int8 - -const ( - // All other errors - ERR_OTHER ErrorLevel = iota - - // The error is just here as additional info - ERR_INFO -) - -type WrappedErrorMessage struct { - Level ErrorLevel - Message string - Err error -} - -func (e *WrappedErrorMessage) Unwrap() error { - return e.Err -} - -func (e *WrappedErrorMessage) Cause() error { - causeErr := e.Err - for errors.Unwrap(causeErr) != nil { - causeErr = errors.Unwrap(causeErr) - } - return causeErr -} - -func (e *WrappedErrorMessage) Traceback() string { - returnStr := fmt.Sprintf("%s\n%s", e.Message, "Traceback:") - causeErr := e.Err - for errors.Unwrap(causeErr) != nil { - causeErr = errors.Unwrap(causeErr) - var wrappedErr *WrappedErrorMessage - - errorStr := causeErr.Error() - - if errors.As(causeErr, &wrappedErr) { - errorStr = wrappedErr.Message - } - returnStr += fmt.Sprintf("\n - %s", errorStr) - } - return returnStr -} - -func (e *WrappedErrorMessage) Error() string { - return fmt.Sprintf("Got error: %s, with cause: %s", e.Message, e.Err) -} - -func GetErrorTraceback(err error) string { - var wrappedErr *WrappedErrorMessage - - if errors.As(err, &wrappedErr) { - return wrappedErr.Traceback() - } - return err.Error() -} - -func GetErrorCause(err error) error { - var wrappedErr *WrappedErrorMessage - - if errors.As(err, &wrappedErr) { - return wrappedErr.Cause() - } - return err -} - -func GetErrorLevel(err error) ErrorLevel { - var wrappedErr *WrappedErrorMessage - - if errors.As(err, &wrappedErr) { - return wrappedErr.Level - } - return ERR_OTHER -} - -type WrappedErrorMessageJSON struct { - Level ErrorLevel `json:"level"` - Cause string `json:"cause"` - Traceback string `json:"traceback"` -} - -func GetErrorJSONString(err error) (string, error) { - var wrappedErr *WrappedErrorMessage - - var level ErrorLevel - var cause error - var traceback string - - if errors.As(err, &wrappedErr) { - level = wrappedErr.Level - cause = wrappedErr.Cause() - traceback = wrappedErr.Traceback() - } else { - level = ERR_OTHER - cause = err - traceback = err.Error() - } - - json, jsonErr := json.Marshal( - &WrappedErrorMessageJSON{Level: level, Cause: cause.Error(), Traceback: traceback}, - ) - - if jsonErr != nil { - return "", jsonErr - } - return string(json), nil -} diff --git a/internal/types/server.go b/internal/types/server.go deleted file mode 100644 index 48f94fb..0000000 --- a/internal/types/server.go +++ /dev/null @@ -1,69 +0,0 @@ -package types - -import ( - "encoding/json" - "time" -) - -// Shared server types - -// Structs that define the json format for -// url: "https://disco.eduvpn.org/v2/organization_list.json" -type DiscoveryOrganizations struct { - Version uint64 `json:"v"` - List []DiscoveryOrganization `json:"organization_list"` - Timestamp time.Time `json:"go_timestamp"` - RawString string `json:"go_raw_string"` -} - -type DiscoveryOrganization struct { - DisplayName DiscoMapOrString `json:"display_name"` - OrgId string `json:"org_id"` - SecureInternetHome string `json:"secure_internet_home"` - KeywordList DiscoMapOrString `json:"keyword_list"` -} - -// Structs that define the json format for -// url: "https://disco.eduvpn.org/v2/server_list.json" -type DiscoveryServers struct { - Version uint64 `json:"v"` - List []DiscoveryServer `json:"server_list"` - Timestamp time.Time `json:"go_timestamp"` - RawString string `json:"go_raw_string"` -} - -type DiscoMapOrString map[string]string - -// The display name can either be a map or a string in the server list -// Unmarshal it by first trying a string and then the map -func (DN *DiscoMapOrString) UnmarshalJSON(data []byte) error { - var displayNameString string - - err := json.Unmarshal(data, &displayNameString) - - if err == nil { - *DN = map[string]string{"en": displayNameString} - return nil - } - - var resultingMap map[string]string - - err = json.Unmarshal(data, &resultingMap) - - if err == nil { - *DN = resultingMap - return nil - } - return err -} - -type DiscoveryServer struct { - AuthenticationURLTemplate string `json:"authentication_url_template"` - BaseURL string `json:"base_url"` - CountryCode string `json:"country_code"` - DisplayName DiscoMapOrString `json:"display_name,omitempty"` - KeywordList DiscoMapOrString `json:"keyword_list"` - PublicKeyList []string `json:"public_key_list"` - Type string `json:"server_type"` - SupportContact []string `json:"support_contact"` -} |
