예제 #1
0
 def UploadActivity(self, svcRecord, activity):
     pwxdata = PWXIO.Dump(activity)
     params = self._authData(svcRecord)
     resp = requests.post(
         "https://www.trainingpeaks.com/TPWebServices/EasyFileUpload.ashx",
         params=params,
         data=pwxdata.encode("UTF-8"))
     if resp.text != "OK":
         raise APIException("Unable to upload activity response " +
                            resp.text + " status " + str(resp.status_code))
    def UploadActivity(self, svcRecord, activity):
        pwxdata_gz = BytesIO()
        with gzip.GzipFile(fileobj=pwxdata_gz, mode="w") as gzf:
          gzf.write(PWXIO.Dump(activity).encode("utf-8"))

        headers = self._apiHeaders(svcRecord)
        headers.update({"Content-Type": "application/json"})
        data = {
            "UploadClient": "tapiriik",
            "Filename": "tap-%s.pwx" % activity.UID,
            "SetWorkoutPublic": not activity.Private,
            # NB activity notes and name are in the PWX.
            "Data": base64.b64encode(pwxdata_gz.getvalue()).decode("ascii")
        }

        resp = requests.post(TRAININGPEAKS_API_BASE_URL + "/v1/file", data=json.dumps(data), headers=headers)
        if resp.status_code != 200:
            raise APIException("Unable to upload activity response " + resp.text + " status " + str(resp.status_code))
        return resp.json()[0]["Id"]