mirror of
https://github.com/sstent/go-garth.git
synced 2026-01-26 09:03:00 +00:00
sync - build broken
This commit is contained in:
75
python-garmin-connect/ActivityFormat.go
Normal file
75
python-garmin-connect/ActivityFormat.go
Normal file
@@ -0,0 +1,75 @@
|
||||
package connect
|
||||
|
||||
import (
|
||||
"path/filepath"
|
||||
"strings"
|
||||
)
|
||||
|
||||
// ActivityFormat is a file format for importing and exporting activities.
|
||||
type ActivityFormat int
|
||||
|
||||
const (
|
||||
// ActivityFormatFIT is the "original" Garmin format.
|
||||
ActivityFormatFIT ActivityFormat = iota
|
||||
|
||||
// ActivityFormatTCX is Training Center XML (TCX) format.
|
||||
ActivityFormatTCX
|
||||
|
||||
// ActivityFormatGPX will export as GPX - the GPS Exchange Format.
|
||||
ActivityFormatGPX
|
||||
|
||||
// ActivityFormatKML will export KML files compatible with Google Earth.
|
||||
ActivityFormatKML
|
||||
|
||||
// ActivityFormatCSV will export splits as CSV.
|
||||
ActivityFormatCSV
|
||||
|
||||
activityFormatMax
|
||||
activityFormatInvalid
|
||||
)
|
||||
|
||||
const (
|
||||
// ErrUnknownFormat will be returned if the activity file format is unknown.
|
||||
ErrUnknownFormat = Error("Unknown format")
|
||||
)
|
||||
|
||||
var (
|
||||
activityFormatTable = map[string]ActivityFormat{
|
||||
"fit": ActivityFormatFIT,
|
||||
"tcx": ActivityFormatTCX,
|
||||
"gpx": ActivityFormatGPX,
|
||||
"kml": ActivityFormatKML,
|
||||
"csv": ActivityFormatCSV,
|
||||
}
|
||||
)
|
||||
|
||||
// Extension returns an appropriate filename extension for format.
|
||||
func (f ActivityFormat) Extension() string {
|
||||
for extension, format := range activityFormatTable {
|
||||
if format == f {
|
||||
return extension
|
||||
}
|
||||
}
|
||||
|
||||
return ""
|
||||
}
|
||||
|
||||
// FormatFromExtension tries to guess the format from a file extension.
|
||||
func FormatFromExtension(extension string) (ActivityFormat, error) {
|
||||
extension = strings.ToLower(extension)
|
||||
|
||||
format, found := activityFormatTable[extension]
|
||||
if !found {
|
||||
return activityFormatInvalid, ErrUnknownFormat
|
||||
}
|
||||
|
||||
return format, nil
|
||||
}
|
||||
|
||||
// FormatFromFilename tries to guess the format based on a filename (or path).
|
||||
func FormatFromFilename(filename string) (ActivityFormat, error) {
|
||||
extension := filepath.Ext(filename)
|
||||
extension = strings.TrimPrefix(extension, ".")
|
||||
|
||||
return FormatFromExtension(extension)
|
||||
}
|
||||
Reference in New Issue
Block a user