Skip to content

Commit 39f6383

Browse files
authored
Merge pull request #2945 from OpenNeuroOrg/fix/git-annex-cli-bugs
Fix git-annex access issues for CLI
2 parents a49b7af + d90691a commit 39f6383

File tree

1 file changed

+12
-7
lines changed

1 file changed

+12
-7
lines changed

packages/openneuro-cli/src/transferKey.js

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { stat } from "fs/promises"
12
import { createReadStream, createWriteStream } from "fs"
23
import { once } from "events"
34
import fetch, { Request } from "node-fetch"
@@ -12,13 +13,15 @@ import fetch, { Request } from "node-fetch"
1213
* @returns {Request} Configured fetch Request object
1314
*/
1415
export function keyRequest(state, key, options) {
15-
const headers = new Headers()
16+
const headers = new Headers(
17+
"headers" in options && options.headers || undefined,
18+
)
1619
headers.set(
1720
"Authorization",
1821
"Basic " + Buffer.from(`openneuro-cli:${state.token}`).toString("base64"),
1922
)
2023
const requestUrl = `${state.url}/annex/${key}`
21-
return new Request(requestUrl, { headers, ...options })
24+
return new Request(requestUrl, { ...options, headers })
2225
}
2326

2427
/**
@@ -30,13 +33,16 @@ export function keyRequest(state, key, options) {
3033
* @param {string} file File path
3134
*/
3235
export async function storeKey(state, key, file) {
36+
const fileStat = await stat(file)
3337
const body = createReadStream(file)
3438
const requestOptions = {
35-
body,
3639
method: "POST",
40+
headers: {
41+
"Content-Length": fileStat.size,
42+
},
3743
}
3844
const request = keyRequest(state, key, requestOptions)
39-
const response = await fetch(request)
45+
const response = await fetch(request, { body })
4046
if (response.status === 200) {
4147
return true
4248
} else {
@@ -58,9 +64,8 @@ export async function retrieveKey(state, key, file) {
5864
const response = await fetch(request)
5965
if (response.status === 200) {
6066
const writable = createWriteStream(file)
61-
const readable = await response.readable()
62-
readable.pipe(writable)
63-
await once(readable, "close")
67+
response.body.pipe(writable)
68+
await once(response.body, "close")
6469
return true
6570
} else {
6671
return false

0 commit comments

Comments
 (0)