Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

NativeImplV1 failed to upload workout - Temporary Solution Found #683

Open
LMFChicago opened this issue Nov 26, 2024 Discussed in #682 · 21 comments · May be fixed by #687
Open

NativeImplV1 failed to upload workout - Temporary Solution Found #683

LMFChicago opened this issue Nov 26, 2024 Discussed in #682 · 21 comments · May be fixed by #687
Assignees
Milestone

Comments

@LMFChicago
Copy link

Discussed in #682

Originally posted by michaelromero November 25, 2024
Was previously uploading workouts fine. Took a few weeks off, and now receiving the following error. Wondering if anyone else is coming across it? I refreshed my peloton and garmin passwords, then updated to the latest p2g version in docker. It read my list of workouts fine, but when I try to upload:

2024-11-25 14:32:29 [14:32:29 INF] Found 1 workouts remaining after filtering ExcludedWorkoutTypes.
2024-11-25 14:32:29 [14:32:29 INF] Converting workouts...
2024-11-25 14:32:29 [14:32:29 INF] Uploading workouts to Garmin...
2024-11-25 14:32:29 [14:32:29 INF] Uploading to Garmin: /app/working/upload/74a79e4085bf41899340023931f0f466_30_min_Metallica_Ride_with_Erik_Jäger.fit
2024-11-25 14:32:29 [14:32:29 INF] HTTP Request: POST - https://connectapi.garmin.com/upload-service/upload/.fit - Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImRpLW9hdXRoLXNpZ25lci1wcm9kLTIwMjQtcTEifQ.eyJzY29wZSI6WyJBVFBfUkVBRCIsIkFUUF9XUklURSIsIkNPTU1VTklUWV9DT1VSU0VfUkVBRCIsIkNPTU1VTklUWV9DT1VSU0VfV1JJVEUiLCJDT05ORUNUX1JFQUQiLCJDT05ORUNUX1dSSVRFIiwiRFRfQ0xJRU5UX0FOQUxZVElDU19XUklURSIsIkdBUk1JTlBBWV9SRUFEIiwiR0FSTUlOUEFZX1dSSVRFIiwiR0NPRkZFUl9SRUFEIiwiR0NPRkZFUl9XUklURSIsIkdIU19TQU1EIiwiR0hTX1VQTE9BRCIsIkdPTEZfQVBJX1JFQUQiLCJHT0xGX0FQSV9XUklURSIsIklOU0lHSFRTX1JFQUQiLCJJTlNJR0hUU19XUklURSIsIk9NVF9DQU1QQUlHTl9SRUFEIiwiT01UX1NVQlNDUklQVElPTl9SRUFEIiwiUFJPRFVDVF9TRUFSQ0hfUkVBRCJdLCJpc3MiOiJodHRwczovL2RpYXV0aC5nYXJtaW4uY29tIiwicmV2b2NhdGlvbl9lbGlnaWJpbGl0eSI6WyJHTE9CQUxfU0lHTk9VVCJdLCJjbGllbnRfdHlwZSI6IlVOREVGSU5FRCIsImV4cCI6MTczMjY1MjE0MCwiaWF0IjoxNzMyNTY0MDc5LCJnYXJtaW5fZ3VpZCI6ImYxNzVhMjJiLTg3YzMtNGE3YS1hZTJhLWVlZjQzNmU3MDJmYyIsImp0aSI6ImUwMGJkMDFmLTBmNGUtNDNiZS04YTExLTY4Mzg3OTk4ZDFkNSIsImNsaWVudF9pZCI6IkdBUk1JTl9DT05ORUNUX01PQklMRV9BTkRST0lEX0RJIn0.jr-M8z2TL57HO8JouVZL83xKCavDdJjxmaeInzk6v5ONsrSwwL2aL7D4Y9VfGH3kkAxX3jA0ZABk_1L309RykiQ8Q40V7Kwrz7cx9xvyYY2xNvvkSalyq2i4_XZRlySe34DJjRXY54fuqq-4TCS_sOqAkQNGSeopMjAg55voAubjFxOgqKqF3187_cy54O5HM6cFCxsFY41NfN9QjmMNq8g0HJI-BoaPDkwoqH9n_UNnPs87kPaqAY1Ejq5cbMlXJjSl64aGPHlgCV671XqK9zD6JdC8mYYmHpP7dNbCUBxrj20RAjIkflugQu7PIK7Qt_BTT82-cT6Q3yY-clwkhA
2024-11-25 14:32:29 NK: NT
2024-11-25 14:32:29 Origin: https://sso.garmin.com
2024-11-25 14:32:29 User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 16_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148
2024-11-25 14:32:29 Transfer-Encoding: chunked
2024-11-25 14:32:29 Accept-Encoding: gzip, deflate
2024-11-25 14:32:29 traceparent: 00-6513e4d394f79ceedbe8325f5a9e47fb-9088e372f1cca920-00
2024-11-25 14:32:29  - Flurl.Http.Content.CapturedMultipartContent
2024-11-25 14:32:29 [14:32:29 INF] HTTP Response: 0 - POST - https://connectapi.garmin.com/upload-service/upload/.fit -  - 
2024-11-25 14:32:29 [14:32:29 ERR] Garmin Uploader failed to upload to Garmin Connect. GUpload Exit Code: -1 - NativeImplV1 failed to upload workout /app/working/upload/74a79e4085bf41899340023931f0f466_30_min_Metallica_Ride_with_Erik_Jäger.fit, Call failed. Error while copying content to a stream: POST https://connectapi.garmin.com/upload-service/upload/.fit
2024-11-25 14:32:29 Garmin.GarminUploadException: GUpload Exit Code: -1 - NativeImplV1 failed to upload workout /app/working/upload/74a79e4085bf41899340023931f0f466_30_min_Metallica_Ride_with_Erik_Jäger.fit, Call failed. Error while copying content to a stream: POST https://connectapi.garmin.com/upload-service/upload/.fit
2024-11-25 14:32:29  ---> Flurl.Http.FlurlHttpException: Call failed. Error while copying content to a stream: POST https://connectapi.garmin.com/upload-service/upload/.fit
2024-11-25 14:32:29  ---> System.Net.Http.HttpRequestException: Error while copying content to a stream.
2024-11-25 14:32:29  ---> System.IO.IOException: The response ended prematurely.
2024-11-25 14:32:29    at System.Net.Http.HttpConnection.FillAsync(Boolean async)
2024-11-25 14:32:29    at System.Net.Http.HttpConnection.ChunkedEncodingReadStream.CopyToAsyncCore(Stream destination, CancellationToken cancellationToken)
2024-11-25 14:32:29    at System.IO.Compression.DeflateStream.CopyToStream.CopyFromSourceToDestinationAsync()
2024-11-25 14:32:29    at System.Net.Http.DecompressionHandler.DecompressedContent.SerializeToStreamAsync(Stream stream, TransportContext context, CancellationToken cancellationToken)
2024-11-25 14:32:29    at System.Net.Http.HttpContent.LoadIntoBufferAsyncCore(Task serializeToStreamTask, MemoryStream tempBuffer)
2024-11-25 14:32:29    --- End of inner exception stack trace ---
2024-11-25 14:32:29    at System.Net.Http.HttpContent.LoadIntoBufferAsyncCore(Task serializeToStreamTask, MemoryStream tempBuffer)
2024-11-25 14:32:29    at System.Net.Http.HttpClient.<SendAsync>g__Core|83_0(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationTokenSource cts, Boolean disposeCts, CancellationTokenSource pendingRequestsCts, CancellationToken originalCancellationToken)
2024-11-25 14:32:29    at Flurl.Http.FlurlClient.SendAsync(IFlurlRequest request, HttpCompletionOption completionOption, CancellationToken cancellationToken)
2024-11-25 14:32:29    --- End of inner exception stack trace ---
2024-11-25 14:32:29    at Flurl.Http.FlurlClient.HandleExceptionAsync(FlurlCall call, Exception ex, CancellationToken token)
2024-11-25 14:32:29    at Flurl.Http.FlurlClient.SendAsync(IFlurlRequest request, HttpCompletionOption completionOption, CancellationToken cancellationToken)
2024-11-25 14:32:29    at Flurl.Http.FlurlClient.SendAsync(IFlurlRequest request, HttpCompletionOption completionOption, CancellationToken cancellationToken)
2024-11-25 14:32:29    at Flurl.Http.ResponseExtensions.ReceiveJson[T](Task`1 response)
2024-11-25 14:32:29    at Garmin.ApiClient.UploadActivity(String filePath, String format, GarminApiAuthentication auth, String userAgent) in /build/src/Garmin/ApiClient.cs:line 124
2024-11-25 14:32:29    at Garmin.GarminUploader.UploadAsync(String[] files, Settings settings) in /build/src/Garmin/GarminUploader.cs:line 102
2024-11-25 14:32:29    --- End of inner exception stack trace ---
2024-11-25 14:32:29    at Garmin.GarminUploader.UploadAsync(String[] files, Settings settings) in /build/src/Garmin/GarminUploader.cs:line 106
2024-11-25 14:32:29    at Garmin.GarminUploader.UploadToGarminAsync() in /build/src/Garmin/GarminUploader.cs:line 74
2024-11-25 14:32:29    at Sync.SyncService.SyncAsync(IEnumerable`1 workoutIds, ICollection`1 exclude) in /build/src/Sync/SyncService.cs:line 171
2024-11-25 14:32:29 info: Microsoft.AspNetCore.Mvc.Infrastructure.ObjectResultExecutor[1]
2024-11-25 14:32:29       Executing OkObjectResult, writing value of type 'Api.Contract.SyncPostResponse'.
2024-11-25 14:32:29 info: Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker[105]
2024-11-25 14:32:29       Executed action Api.Controllers.SyncController.SyncAsync (Api) in 1766.7962ms
2024-11-25 14:32:29 info: Microsoft.AspNetCore.Routing.EndpointMiddleware[1]
2024-11-25 14:32:29       Executed endpoint 'Api.Controllers.SyncController.SyncAsync (Api)'
2024-11-25 14:32:29 info: Microsoft.AspNetCore.Hosting.Diagnostics[2]
2024-11-25 14:32:29       Request finished HTTP/1.1 POST http://p2g-api:8080/api/sync application/json;+charset=UTF-8 51 - 200 - application/json;+charset=utf-8 1767.6077ms
``` </div>
@mkmeller
Copy link

I get

GUpload Exit Code: -1 - NativeImplV1 failed to upload workout , Response could not be deserialized to JSON: POST https://connectapi.garmin.com/upload-service/upload/.fit

@manc74
Copy link

manc74 commented Nov 26, 2024

I'm getting the same as @mkmeller today.was working ok yesterday.

@indymba-github
Copy link

indymba-github commented Nov 26, 2024

I've got the same issue @mkmeller. I had two successful syncs yesterday but this morning it's failed with the same error the two times that I've attempted.

Here's what the GarminAPI responded to with from the NativeImplV1 failure:
{"clientMessage":"Reference Error ID in error logs for further information","errorId":"51bfb0c8-e8bf-4c8d-b723-65639ccb33a9","error":"NotAllowedException"}

@adamperez
Copy link

I am also seeing this error whenever I try to sync workouts from Peloton to Garmin. Maybe the API has changed on Garmin's side?

Full output from the sync job is here:

[10:04:57 ERR] Failed to init default Sync Status to Db for default user.
[10:04:57 INF] *********************************************
[10:04:57 INF] P2G Version: p2g_console 4.3.0
[10:04:57 INF] Operating System: Unix
[10:04:57 INF] OS Version: Unix 6.5.0.1025
[10:04:57 INF] DotNet Runtime: 7.0.20
[10:04:57 INF] Docker Deployment: True
[10:04:57 INF] Config path: /app/configuration.local.json
[10:04:57 INF] *********************************************
[10:04:57 INF] Application started. Press Ctrl+C to shut down.
[10:04:57 INF] Hosting environment: Production
[10:04:57 INF] Content root path: /app
[10:04:57 INF] *********************************************
[10:04:57 INF] *********************************************
[10:04:58 INF] Found 5 completed workouts.
[10:05:00 INF] Found 5 workouts remaining after filtering ExcludedWorkoutTypes.
[10:05:00 INF] Converting workouts...
[10:05:00 INF] Found Peloton Strength exercise with no Garmin mapping: Dumbbell Lat Pull Over 25f1731b59e040989452ff1598991340
[10:05:00 INF] Found Peloton Strength exercise with no Garmin mapping: Dumbbell Lat Pull Over 25f1731b59e040989452ff1598991340
[10:05:00 INF] Found Peloton Strength exercise with no Garmin mapping: Dumbbell Lat Pull Over 25f1731b59e040989452ff1598991340
[10:05:00 INF] Uploading workouts to Garmin...
[10:05:03 INF] Uploading to Garmin: /app/working/upload/62a429f6bcaf474f8eeaf9aeffc40af2_20_min_Classic_Rock_Ride_with_Denis_Morton.fit
[10:05:03 ERR] Http Failed to deserialize response to target type: JSON
Flurl.Http.FlurlParsingException: Response could not be deserialized to JSON: POST https://connectapi.garmin.com/upload-service/upload/.fit
 ---> System.Text.Json.JsonException: The JSON value could not be converted to Garmin.Dto.UploadResponse. Path: $ | LineNumber: 0 | BytePositionInLine: 1.
   at System.Text.Json.ThrowHelper.ThrowJsonException_DeserializeUnableToConvertValue(Type propertyType)
   at System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryRead(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options, ReadStack& state, T& value)
   at System.Text.Json.Serialization.JsonConverter`1.TryRead(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options, ReadStack& state, T& value, Boolean& isPopulatedValue)
   at System.Text.Json.Serialization.JsonConverter`1.ReadCore(Utf8JsonReader& reader, JsonSerializerOptions options, ReadStack& state)
   at System.Text.Json.Serialization.Metadata.JsonTypeInfo`1.ContinueDeserialize(ReadBufferState& bufferState, JsonReaderState& jsonReaderState, ReadStack& readStack)
   at System.Text.Json.Serialization.Metadata.JsonTypeInfo`1.Deserialize(Stream utf8Json)
   at System.Text.Json.JsonSerializer.Deserialize[TValue](Stream utf8Json, JsonSerializerOptions options)
   at Flurl.Http.Configuration.DefaultJsonSerializer.Deserialize[T](Stream stream)
   at Flurl.Http.FlurlResponse.GetJsonAsync[T]()
   --- End of inner exception stack trace ---
[10:05:03 INF] Response: OK - POST - https://connectapi.garmin.com/upload-service/upload/.fit - Date: Tue, 26 Nov 2024 16:05:03 GMT
Transfer-Encoding: chunked
Connection: keep-alive
Cache-Control: no-cache
CF-Cache-Status: DYNAMIC
Report-To: {"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v4?s=3UbP%2BY2LS5YCpVTXNbJIYWwyFGfgZvluPi3z0%2FdiyS0vypaRmmNRTgmnu%2BbZEFosYTvHcWhvYtStcvLMDZE2iH%2Fbm4jDFYNzkeRtXCyqh1pVp49%2FHDb1kgNoKlp%2F6H1rMpYq2iDpuA%3D%3D"}],"group":"cf-nel","max_age":604800}
NEL: {"success_fraction":0.01,"report_to":"cf-nel","max_age":604800}
Set-Cookie: _cfuvid=ebjJhfvgspeRC_y0B_S.nlEj8r.t.FsLHuas3jZ6Fl4-1732637103947-0.0.1.1-604800000; path=/; domain=.connectapi.garmin.com; HttpOnly; Secure; SameSite=None
Server: cloudflare
CF-RAY: 8e8b1e2b3eafebe2-SJC
Alt-Svc: h3=":443"; ma=86400
 - []
[10:05:03 ERR] Garmin Uploader failed to upload to Garmin Connect. GUpload Exit Code: -1 - NativeImplV1 failed to upload workout /app/working/upload/62a429f6bcaf474f8eeaf9aeffc40af2_20_min_Classic_Rock_Ride_with_Denis_Morton.fit, Response could not be deserialized to JSON: POST https://connectapi.garmin.com/upload-service/upload/.fit
Garmin.GarminUploadException: GUpload Exit Code: -1 - NativeImplV1 failed to upload workout /app/working/upload/62a429f6bcaf474f8eeaf9aeffc40af2_20_min_Classic_Rock_Ride_with_Denis_Morton.fit, Response could not be deserialized to JSON: POST https://connectapi.garmin.com/upload-service/upload/.fit
 ---> Flurl.Http.FlurlParsingException: Response could not be deserialized to JSON: POST https://connectapi.garmin.com/upload-service/upload/.fit
 ---> System.Text.Json.JsonException: The JSON value could not be converted to Garmin.Dto.UploadResponse. Path: $ | LineNumber: 0 | BytePositionInLine: 1.
   at System.Text.Json.ThrowHelper.ThrowJsonException_DeserializeUnableToConvertValue(Type propertyType)
   at System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryRead(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options, ReadStack& state, T& value)
   at System.Text.Json.Serialization.JsonConverter`1.TryRead(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options, ReadStack& state, T& value, Boolean& isPopulatedValue)
   at System.Text.Json.Serialization.JsonConverter`1.ReadCore(Utf8JsonReader& reader, JsonSerializerOptions options, ReadStack& state)
   at System.Text.Json.Serialization.Metadata.JsonTypeInfo`1.ContinueDeserialize(ReadBufferState& bufferState, JsonReaderState& jsonReaderState, ReadStack& readStack)
   at System.Text.Json.Serialization.Metadata.JsonTypeInfo`1.Deserialize(Stream utf8Json)
   at System.Text.Json.JsonSerializer.Deserialize[TValue](Stream utf8Json, JsonSerializerOptions options)
   at Flurl.Http.Configuration.DefaultJsonSerializer.Deserialize[T](Stream stream)
   at Flurl.Http.FlurlResponse.GetJsonAsync[T]()
   --- End of inner exception stack trace ---
   at Flurl.Http.FlurlClient.HandleExceptionAsync(FlurlCall call, Exception ex, CancellationToken token)
   at Flurl.Http.FlurlResponse.GetJsonAsync[T]()
   at Flurl.Http.ResponseExtensions.ReceiveJson[T](Task`1 response)
   at Garmin.ApiClient.UploadActivity(String filePath, String format, GarminApiAuthentication auth, String userAgent) in /build/src/Garmin/ApiClient.cs:line [12](https://github.com/adamperez/peloton-to-garmin/actions/runs/12034487824/job/33551145076#step:6:13)4
   at Garmin.GarminUploader.UploadAsync(String[] files, Settings settings) in /build/src/Garmin/GarminUploader.cs:line 102
   --- End of inner exception stack trace ---
   at Garmin.GarminUploader.UploadAsync(String[] files, Settings settings) in /build/src/Garmin/GarminUploader.cs:line 106
   at Garmin.GarminUploader.UploadToGarminAsync() in /build/src/Garmin/GarminUploader.cs:line 74
   at Sync.SyncService.SyncAsync(IEnumerable`1 workoutIds, ICollection`1 exclude) in /build/src/Sync/SyncService.cs:line [17](https://github.com/adamperez/peloton-to-garmin/actions/runs/12034487824/job/33551145076#step:6:18)1
[10:05:03 INF] Done.

@philosowaffle
Copy link
Owner

Thank for all the info yall. This is on my radar. I'm hosting family for the holidays right now but then I'll try to dig into this and see what needs to be adjusted for Garmins API changes.

@k0ns013
Copy link

k0ns013 commented Nov 26, 2024

same problem as of today ......

GUpload Exit Code: -1 - NativeImplV1 failed to upload workout /app/working/upload/00ae2044333e49959057aa32a5914eb4_5_min_Cool_Down_Ride_with_Erik_Jäger.fit, Call failed. Error while copying content to a stream: POST https://connectapi.garmin.com/upload-service/upload/.fit

@darrenchartier
Copy link

Thank for all the info yall. This is on my radar. I'm hosting family for the holidays right now but then I'll try to dig into this and see what needs to be adjusted for Garmins API changes.

Garmin's little way of saying happy thanksgiving!

@benmwatson
Copy link

Just chiming in to say that I'm seeing the JSON exception as well. Happy Thanksgiving!

@jkramerilegv
Copy link

Same issue:
Errors during sync - GUpload Exit Code: -1 - NativeImplV1 failed to upload workout C:\Users\John\Documents\P2G\ui_win_4.3.0\working\upload\032a409fb2104491bd6582b3fbb80787_10_min_Full_Body_Stretch_with_Ben_Alldis.fit, Response could not be deserialized to JSON: POST https://connectapi.garmin.com/upload-service/upload/.fit

Periodic syncing is Not Running

@philosowaffle philosowaffle self-assigned this Nov 27, 2024
@philosowaffle philosowaffle added this to the 4.3.1 milestone Nov 27, 2024
@philosowaffle philosowaffle linked a pull request Nov 27, 2024 that will close this issue
@philosowaffle
Copy link
Owner

Possible quick workaround

Add or update your config.json file to have the following section.

"Developer": 
  {
    "UserAgent": "GCM-iOS-5.7.2.1"
  },

What does this do? When making HTTP requests, this will override the UserAgent header used on those requests. It appears that by simply changing this one header on the request, the Garmin API allows the upload to go through successfully.

Tip

If this works for you, react to this message with a Thumbs Up.

What if this doesn't work? No harm, no foul. Just delete the change and I'll go back to the drawing board.

Caution

If this doesn't work for you, react to this message with a Thumbs Down.

Docker WebUI Example

  1. Update your api.local.json config file << API config file only
  2. Restart P2G

The config file should look something like this after you edit it. Note we aren't modifying any existing values in your config, just adding the new Developer section:

{
  "Developer": 
  {
    "UserAgent": "GCM-iOS-5.7.2.1"
  },

  "Observability": {

    "Prometheus": {
      "Enabled": false
    },

    "Jaeger": {
      "Enabled": false,
      "AgentHost": "localhost",
      "AgentPort": 6831
    },

    "Serilog": {
      "Using": [ "Serilog.Sinks.Console", "Serilog.Sinks.File" ],
      "MinimumLevel": {
        "Default": "Information",
        "Override": {
          "Microsoft": "Error",
          "System": "Error"
        }
      },
      "WriteTo": [
        { "Name": "Console" }
      ]
    }
  }
}

Headless or Windows App Example

  1. Update your configuration.local.json file to have the new section
  2. Restart P2G

The config file should look something like this after you edit it. Note we aren't modifying any existing values in your config, just adding the new Developer section:

{
   "Developer": 
  {
    "UserAgent": "GCM-iOS-5.7.2.1"
  },

  "App": {
    "EnablePolling": true,
    "PollingIntervalSeconds": 86400,
    "CheckForUpdates": true
  },

  "Format": {
    "Fit": true,
    "Json": false,
    "Tcx": false,
    "SaveLocalCopy": true,
    "IncludeTimeInHRZones": false,
    "IncludeTimeInPowerZones": false
  },

  "Peloton": {
    "Email": "",
    "Password": "",
    "NumWorkoutsToDownload": 1,
    "ExcludeWorkoutTypes": [ ]
  },

  "Garmin": {
    "Email": "",
    "Password": "",
    "TwoStepVerificationEnabled": false,
    "Upload": false,
    "FormatToUpload": "fit"
  },

  "Observability": {

    "Prometheus": {
      "Enabled": false,
      "Port": 4000
    },

    "Jaeger": {
      "Enabled": false,
      "AgentHost": "localhost",
      "AgentPort": 6831
    },

    "Serilog": {
      "Using": [ "Serilog.Sinks.Console", "Serilog.Sinks.File" ],
      "MinimumLevel": {
        "Default": "Information",
        "Override": {
          "Microsoft": "Error",
          "System": "Error"
        }
      }
    }
  }
}

@patrickgans
Copy link

This worked for me. Windows app, Garmin w/ MFA. Thanks!

@CodyFran
Copy link

CodyFran commented Nov 27, 2024

Worked for me in Docker. Thanks and Happy Thanksgiving!

@philosowaffle philosowaffle changed the title NativeImplV1 failed to upload workout NativeImplV1 failed to upload workout - Temporary Solution Found Nov 27, 2024
@jkramerilegv
Copy link

jkramerilegv commented Nov 27, 2024 via email

@benmwatson
Copy link

Any way to fix this in the github workflow version?

@philosowaffle
Copy link
Owner

@benmwatson Similar changes for GitHub workflow, except you will edit this file and add the new Developer section right between lines 33&34 here.

@indymba-github
Copy link

@philosowaffle I had the same issue as @benmwatson and your suggestion for the YML fix worked for me. Thank you very much!

@Sewald001
Copy link

Sewald001 commented Nov 27, 2024

Thanks for the effort -- for me it is not working (Docker) -- I also dont get any error messages - e/th looks fine except the workout doesnt come across to Garmin

2024-11-27 22:08:24 [15:08:24 INF] Found 1 workouts remaining after filtering ExcludedWorkoutTypes.
2024-11-27 22:08:24 [15:08:24 INF] Converting workouts...
2024-11-27 22:08:24 info: Microsoft.AspNetCore.Mvc.Infrastructure.ObjectResultExecutor[1]
2024-11-27 22:08:24 Executing CreatedResult, writing value of type 'Api.Contract.SyncPostResponse'.
2024-11-27 22:08:24 info: Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker[105]
2024-11-27 22:08:24 Executed action Api.Controllers.SyncController.SyncAsync (Api) in 2159.5756ms
2024-11-27 22:08:24 info: Microsoft.AspNetCore.Routing.EndpointMiddleware[1]
2024-11-27 22:08:24 Executed endpoint 'Api.Controllers.SyncController.SyncAsync (Api)'
2024-11-27 22:08:24 info: Microsoft.AspNetCore.Hosting.Diagnostics[2]
2024-11-27 22:08:24 Request finished HTTP/1.1 POST http://p2g-api:8080/api/sync application/json;+charset=UTF-8 51 - 201 - application/json;+charset=utf-8 2160.1831ms

@run1206
Copy link

run1206 commented Nov 28, 2024

Quick fix worked for me as well!

App Version: 4.1.0 (will update after the holidays)
OS: Win11

Thanks!

@jameskyle
Copy link

The docker quick fix worked for me on stable.

@k0ns013
Copy link

k0ns013 commented Nov 28, 2024

This worked for me ;)) THX

@velozriding
Copy link

Worked for me as well, thanks @philosowaffle and happy thanksgiving everyone!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.