Package gfit: Add a list of activities.
authorFlorian Forster <ff@octo.it>
Sun, 4 Feb 2018 08:27:56 +0000 (09:27 +0100)
committerFlorian Forster <ff@octo.it>
Sun, 4 Feb 2018 08:27:56 +0000 (09:27 +0100)
gfit/activities.go [new file with mode: 0644]
gfit/activities_test.go [new file with mode: 0644]

diff --git a/gfit/activities.go b/gfit/activities.go
new file mode 100644 (file)
index 0000000..02b424e
--- /dev/null
@@ -0,0 +1,150 @@
+package gfit
+
+var Activities = map[string]int64{
+       "Aerobics":                       9,
+       "Archery":                        119,
+       "Awake (during sleep cycle)":     112,
+       "Back-country skiing":            66,
+       "Badminton":                      10,
+       "Baseball":                       11,
+       "Basketball":                     12,
+       "Biathlon":                       13,
+       "Biking":                         1,
+       "Boxing":                         20,
+       "Calisthenics":                   21,
+       "Circuit training":               22,
+       "Cricket":                        23,
+       "Cross-country skiing":           67,
+       "Crossfit":                       113,
+       "Cross skating":                  63,
+       "Curling":                        106,
+       "Dancing":                        24,
+       "Deep sleep":                     110,
+       "Diving":                         102,
+       "Downhill skiing":                68,
+       "Elevator":                       117,
+       "Elliptical":                     25,
+       "Ergometer":                      103,
+       "Escalator":                      118,
+       "Fencing":                        26,
+       "Football (American)":            27,
+       "Football (Australian)":          28,
+       "Football (Soccer)":              29,
+       "Frisbee":                        30,
+       "Gardening":                      31,
+       "Golf":                           32,
+       "Gymnastics":                     33,
+       "Handball":                       34,
+       "Handbiking":                     14,
+       "HIIT":                           114,
+       "Hiking":                         35,
+       "Hockey":                         36,
+       "Horseback riding":               37,
+       "Housework":                      38,
+       "Ice skating":                    104,
+       "Indoor skating":                 105,
+       "Inline skating (rollerblading)": 64,
+       "Interval Training":              115,
+       "In vehicle":                     0,
+       "Jogging":                        56,
+       "Jumping rope":                   39,
+       "Kayaking":                       40,
+       "Kettlebell training":            41,
+       "Kickboxing":                     42,
+       "Kite skiing":                    69,
+       "Kitesurfing":                    43,
+       "Light sleep":                    109,
+       "Martial arts":                   44,
+       "Meditation":                     45,
+       "Mixed martial arts":             46,
+       "Mountain biking":                15,
+       "Nording walking":                94,
+       "On foot":                        2,
+       "Other (unclassified fitness activity)": 108,
+       "P90X exercises":                        47,
+       "Paragliding":                           48,
+       "Pilates":                               49,
+       "Polo":                                  50,
+       "Racquetball":                           51,
+       "REM sleep":                             111,
+       "Road biking":                           16,
+       "Rock climbing":                         52,
+       "Roller skiing":                         70,
+       "Rowing":                                53,
+       "Rowing machine":                        54,
+       "Rugby":                                 55,
+       "Running":                               8,
+       "Running on sand":                       57,
+       "Running (treadmill)":                   58,
+       "Sailing":                               59,
+       "Scuba diving":                          60,
+       "Skateboarding":                         61,
+       "Skating":                               62,
+       "Skiing":                                65,
+       "Sledding":                              71,
+       "Sleeping":                              72,
+       "Snowboarding":                          73,
+       "Snowmobile":                            74,
+       "Snowshoeing":                           75,
+       "Softball":                              120,
+       "Spinning":                              17,
+       "Squash":                                76,
+       "Stair climbing":                        77,
+       "Stair-climbing machine":                78,
+       "Stand-up paddleboarding":               79,
+       "Stationary biking":                     18,
+       "Still (not moving)":                    3,
+       "Strength training":                     80,
+       "Surfing":                               81,
+       "Swimming":                              82,
+       "Swimming (open water)":                 84,
+       "Swimming (swimming pool)":              83,
+       "Table tennis (ping pong)":              85,
+       "Team sports":                           86,
+       "Tennis":                                87,
+       "Tilting (sudden device gravity change)": 5,
+       "Treadmill (walking or running)":         88,
+       "Unknown (unable to detect activity)":    4,
+       "Utility biking":                         19,
+       "Volleyball":                             89,
+       "Volleyball (beach)":                     90,
+       "Volleyball (indoor)":                    91,
+       "Wakeboarding":                           92,
+       "Walking":                                7,
+       "Walking (fitness)":                      93,
+       "Walking (stroller)":                     116,
+       "Walking (treadmill)":                    95,
+       "Waterpolo":                              96,
+       "Weightlifting":                          97,
+       "Wheelchair":                             98,
+       "Windsurfing":                            99,
+       "Yoga":                                   100,
+       "Zumba":                                  101,
+}
+
+var fitbitMapping = map[string]string{
+       "Bike":                 "Biking",
+       "Cross Country Skiing": "Cross-country skiing",
+       "Football":             "Football (Soccer)",
+       "Hike":                 "Hiking",
+       "Mountain Bike":        "Mountain biking",
+       "Run":                  "Running",
+       "Sport":                "Other (unclassified fitness activity)",
+       "Swim":                 "Swimming",
+       "Treadmill":            "Treadmill (walking or running)",
+       "Ultimate frisbee":     "Frisbee",
+       "Walk":                 "Walking",
+       "Weights":              "Weightlifting",
+       "Workout":              "Other (unclassified fitness activity)",
+}
+
+func ParseFitbitActivity(s string) int64 {
+       if a, ok := Activities[s]; ok {
+               return a
+       }
+       if name, ok := fitbitMapping[s]; ok {
+               return Activities[name]
+       }
+
+       return Activities["Unknown (unable to detect activity)"]
+}
diff --git a/gfit/activities_test.go b/gfit/activities_test.go
new file mode 100644 (file)
index 0000000..1e8c175
--- /dev/null
@@ -0,0 +1,13 @@
+package gfit
+
+import (
+       "testing"
+)
+
+func TestFitbitMapping(t *testing.T) {
+       for _, v := range fitbitMapping {
+               if _, ok := Activities[v]; !ok {
+                       t.Errorf("Activities[%q] does not exist", v)
+               }
+       }
+}