Skip to content

Commit a9ec516

Browse files
committed
fix: resolved nesting issue when uploading directory
1 parent b98e217 commit a9ec516

File tree

6 files changed

+67
-42
lines changed

6 files changed

+67
-42
lines changed

lighthouse/axios.py

Lines changed: 2 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
from typing import Dict, List, Tuple
55
import requests as req
66
from . import types as t
7+
from . import utils
78

89

910
class Axios:
@@ -38,45 +39,12 @@ def post(
3839
except Exception as e:
3940
raise e
4041

41-
def extract_file_name(self, file: str) -> str:
42-
return file.split("/")[-1]
43-
44-
def extract_file_last_dir(self, file: str) -> str:
45-
return file.split("/")[-2]
46-
47-
def read_files(self, files: t.FileDict) -> List[Tuple[BufferedReader]]:
48-
file_list = []
49-
for file in files["files"]:
50-
if files["is_dir"]:
51-
file_list.append(
52-
(
53-
"file",
54-
(
55-
file,
56-
open(file, "rb"),
57-
"application/octet-stream",
58-
),
59-
)
60-
)
61-
else:
62-
file_list.append(
63-
(
64-
"file",
65-
(
66-
self.extract_file_name(file),
67-
open(file, "rb"),
68-
"application/octet-stream",
69-
),
70-
),
71-
)
72-
return file_list
73-
7442
def post_files(
7543
self, file: t.FileDict, headers: Dict[str, str] = None, **kwargs
7644
) -> dict | Exception:
7745
try:
7846
self.parse_url_query(kwargs.get("query", None))
79-
files = self.read_files(file)
47+
files = utils.read_files_for_upload(file)
8048
r = req.post(self.url, headers=headers, files=files)
8149
r.raise_for_status()
8250
try:

lighthouse/deploy.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,12 @@ def deploy(source: str, token: str) -> t.Deploy:
2323
# walk directory tree and add files to list
2424
file_dict["files"] = walk_dir_tree(source)
2525
file_dict["is_dir"] = True
26+
file_dict["path"] = source
2627
else:
2728
# add file to list
2829
file_dict["files"] = [source]
2930
file_dict["is_dir"] = False
31+
file_dict["path"] = source
3032

3133
# create headers
3234
headers = {

lighthouse/types.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,3 +16,4 @@ class FileDict(TypedDict):
1616

1717
files: List[str]
1818
is_dir: bool
19+
path: str

lighthouse/utils.py

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
#!/usr/bin/env python3
22

3+
from io import BufferedReader
34
import os
4-
from typing import List
5+
from typing import List, Tuple
6+
from . import types as t
57

68
# walk path and return list of file paths
79
def walk_dir_tree(path: str) -> List[str]:
@@ -15,3 +17,40 @@ def walk_dir_tree(path: str) -> List[str]:
1517
# check if file is a directory
1618
def is_dir(path: str) -> bool:
1719
return os.path.isdir(path)
20+
21+
22+
def extract_file_name(file: str) -> str:
23+
return file.split("/")[-1]
24+
25+
26+
def extract_file_name_with_source(file: str, source: str) -> str:
27+
base = source.split("/")[-1]
28+
return base + file.split(base)[-1]
29+
30+
31+
def read_files_for_upload(files: t.FileDict) -> List[Tuple[BufferedReader]]:
32+
file_list = []
33+
for file in files["files"]:
34+
if files["is_dir"]:
35+
file_list.append(
36+
(
37+
"file",
38+
(
39+
extract_file_name_with_source(file, files["path"]),
40+
open(file, "rb"),
41+
"application/octet-stream",
42+
),
43+
)
44+
)
45+
else:
46+
file_list.append(
47+
(
48+
"file",
49+
(
50+
extract_file_name(file),
51+
open(file, "rb"),
52+
"application/octet-stream",
53+
),
54+
),
55+
)
56+
return file_list

requirements.txt

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
black==22.8.0
2+
certifi==2022.9.14
3+
charset-normalizer==2.1.1
4+
click==8.1.3
5+
idna==3.4
6+
mypy-extensions==0.4.3
7+
pathspec==0.10.1
8+
platformdirs==2.5.2
9+
requests==2.28.1
10+
tomli==2.0.1
11+
urllib3==1.26.12

tests/setup.py

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,22 @@
66

77
def parse_env():
88
"""parse .env file"""
9-
with open(".env", "r") as f:
10-
for line in f.readlines():
11-
if line.startswith("#"):
12-
continue
13-
key, value = line.split("=")
14-
os.environ[key] = value.strip()
9+
try:
10+
with open(".env", "r") as f:
11+
for line in f.readlines():
12+
if line.startswith("#"):
13+
continue
14+
key, value = line.split("=")
15+
os.environ[key] = value.strip()
16+
except FileNotFoundError:
17+
print("No .env file found")
18+
print("Defaulting to preset environment variables...")
1519

1620

1721
def run_test():
1822
"""setup test environment and run tests"""
1923
parse_env()
20-
dt.test_deploy_file()
24+
# dt.test_deploy_file()
2125
dt.test_deploy_dir()
2226

2327

0 commit comments

Comments
 (0)