Skip to content

Commit

Permalink
upload stream
Browse files Browse the repository at this point in the history
  • Loading branch information
horta committed Nov 2, 2023
1 parent 4812b02 commit 1d60d27
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 9 deletions.
19 changes: 11 additions & 8 deletions control/deciphonctl/sched.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
from __future__ import annotations

from requests_toolbelt import MultipartEncoder
import urllib.parse
from pathlib import Path
from typing import Any, Optional
Expand Down Expand Up @@ -44,11 +45,11 @@ def get(self, url, params=None):
self.handle_http_response(response)
return response

def post(self, url: str, data=None, json=None, params=None, files=None):
def post(self, url: str, data=None, json=None, params=None, headers=None):
logger.debug(f"POST url={url} data={data} json={json}")
response = requests.post(url, data=data, json=json, params=params, files=files)
self.handle_http_response(response)
return response
r = requests.post(url, data=data, json=json, params=params, headers=headers)
self.handle_http_response(r)
return r

def patch(self, url: str, data=None, json=None):
logger.debug(f"PATCH url={url} data={data} json={json}")
Expand All @@ -66,8 +67,10 @@ def presigned(self):
def upload(self, file: Path, post: UploadPost):
logger.info(f"uploading {file} to {post.url_string}")
with open(file, "rb") as f:
files = {"file": (file.name, f)}
self.post(post.url_string, data=post.fields, files=files)
fields = post.fields
fields["file"] = (file.name, f)
m = MultipartEncoder(fields=fields)
self.post(post.url_string, data=m, headers={"content-type": m.content_type})

def hmm_post(self, file: HMMFile, gencode: Gencode, epsilon: float):
self.post(
Expand Down Expand Up @@ -118,8 +121,8 @@ def seq_list(self):
return self.get(self.url("seqs")).json()

def snap_post(self, scan_id: int, snap: FilePath):
files = {"file": open(snap, "rb")}
self.post(self.url(f"scans/{scan_id}/snap.dcs"), files=files)
post = UploadPost(url=HttpUrl(self.url(f"scans/{scan_id}/snap.dcs")), fields={})
self.upload(snap, post)

def snap_get(self, scan_id: int):
return self.get(self.url(f"scans/{scan_id}/snap.dcs")).content
Expand Down
3 changes: 2 additions & 1 deletion control/pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[tool.poetry]
name = "deciphonctl"
version = "0.3.6"
version = "0.3.7"
description = "Control Deciphon server."
authors = ["Danilo Horta <[email protected]>"]
license = "MIT"
Expand All @@ -19,6 +19,7 @@ deciphon-core = ">=0.18.5"
loguru = "^0"
deciphon-sched = ">=0.11.2"
paho-mqtt = "^1.6.1"
requests-toolbelt = "^1.0.0"

[tool.poetry.group.dev.dependencies]
pytest = "^7.3.2"
Expand Down

0 comments on commit 1d60d27

Please sign in to comment.