Merge pull request #349 from trails-cool/stigi/wahoo-data-uri
This commit is contained in:
commit
7752cea7d0
2 changed files with 8 additions and 3 deletions
|
|
@ -114,7 +114,9 @@ describe("wahooProvider.pushRoute", () => {
|
||||||
expect(body.get("route[name]")).toBe("Test route");
|
expect(body.get("route[name]")).toBe("Test route");
|
||||||
expect(body.get("route[description]")).toBe("A test");
|
expect(body.get("route[description]")).toBe("A test");
|
||||||
expect(body.get("route[start_lat]")).toBe("52.52");
|
expect(body.get("route[start_lat]")).toBe("52.52");
|
||||||
expect(body.get("route[file]")).toBe(Buffer.from(fit).toString("base64"));
|
expect(body.get("route[file]")).toBe(
|
||||||
|
`data:application/vnd.fit;base64,${Buffer.from(fit).toString("base64")}`,
|
||||||
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
it.each([
|
it.each([
|
||||||
|
|
|
||||||
|
|
@ -181,7 +181,10 @@ export const wahooProvider: SyncProvider = {
|
||||||
},
|
},
|
||||||
|
|
||||||
async pushRoute(tokens: TokenSet, payload: PushRoutePayload): Promise<PushRouteResult> {
|
async pushRoute(tokens: TokenSet, payload: PushRoutePayload): Promise<PushRouteResult> {
|
||||||
const fitBase64 = Buffer.from(payload.fit).toString("base64");
|
// Wahoo expects route[file] as a data URI, not raw base64. Sending plain
|
||||||
|
// base64 results in a route record where file.url is null and the Wahoo
|
||||||
|
// app shows the route in the list (with metadata) but renders no track.
|
||||||
|
const fitDataUri = `data:application/vnd.fit;base64,${Buffer.from(payload.fit).toString("base64")}`;
|
||||||
const body = new URLSearchParams({
|
const body = new URLSearchParams({
|
||||||
"route[external_id]": payload.externalId,
|
"route[external_id]": payload.externalId,
|
||||||
"route[provider_updated_at]": payload.providerUpdatedAt.toISOString(),
|
"route[provider_updated_at]": payload.providerUpdatedAt.toISOString(),
|
||||||
|
|
@ -191,7 +194,7 @@ export const wahooProvider: SyncProvider = {
|
||||||
"route[start_lng]": payload.startLng.toString(),
|
"route[start_lng]": payload.startLng.toString(),
|
||||||
"route[distance]": payload.distance.toString(),
|
"route[distance]": payload.distance.toString(),
|
||||||
"route[ascent]": payload.ascent.toString(),
|
"route[ascent]": payload.ascent.toString(),
|
||||||
"route[file]": fitBase64,
|
"route[file]": fitDataUri,
|
||||||
});
|
});
|
||||||
if (payload.description) body.set("route[description]", payload.description);
|
if (payload.description) body.set("route[description]", payload.description);
|
||||||
if (payload.filename) body.set("route[filename]", payload.filename);
|
if (payload.filename) body.set("route[filename]", payload.filename);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue