Skip to content

Commit 2d2175e

Browse files
Improved send file
1 parent f45c0a9 commit 2d2175e

File tree

1 file changed

+12
-13
lines changed

1 file changed

+12
-13
lines changed

flask_apidoc/apidoc.py

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@ def __init__(self, folder_path=None, url_path=None, app=None):
3535
self.url_path = '/apidoc'
3636

3737
self.app = None
38-
self.__project_data = None
3938

4039
if app:
4140
self.init_app(app)
@@ -47,20 +46,19 @@ def init_app(self, app):
4746
if not self.url_path.endswith('/'):
4847
url += '/'
4948

50-
app.add_url_rule(url, 'apidoc', self.__view)
51-
app.add_url_rule(url + '<path:path>', 'apidoc', self.__view)
49+
app.add_url_rule(url, 'apidoc', self.__send_static_file)
50+
app.add_url_rule(url + '<path:path>', 'apidoc', self.__send_static_file)
5251

53-
self.__project_data = self.__load_project_info()
54-
55-
def __load_project_info(self):
52+
@lru_cache()
53+
def __get_project_info(self):
5654
file_name = join(self.app.static_folder, self.folder_path, 'api_project.json')
5755

5856
with open(file_name, 'rt') as file:
5957
data = file.read()
6058

6159
return json.loads(data)
6260

63-
def __view(self, path=None):
61+
def __send_static_file(self, path=None):
6462
if not path:
6563
path = 'index.html'
6664

@@ -78,14 +76,15 @@ def __send_api_file(self, file_name):
7876
with open(file_name, 'rt') as file:
7977
data = file.read()
8078

81-
self.__project_data.get('url').find('')
79+
project_info = self.__get_project_info()
80+
url = project_info.get('url')
8281

83-
data = self.__replace_api_url(data, self.__project_data.get('url'))
82+
data = self.__replace_url(data, url, request.url_root)
8483

85-
url = self.__project_data.get('sampleUrl')
84+
url = project_info.get('sampleUrl')
8685

8786
if isinstance(url, str):
88-
data = self.__replace_api_url(data, self.__project_data.get('sampleUrl'))
87+
data = self.__replace_url(data, url, request.url_root)
8988

9089
headers = Headers()
9190
headers['Content-Length'] = getsize(file_name)
@@ -100,12 +99,12 @@ def __send_api_file(self, file_name):
10099
return response
101100

102101
@staticmethod
103-
def __replace_api_url(data, old_url):
102+
def __replace_url(data, old_url, new_url):
104103
i = old_url.find('/', 8)
105104

106105
if i > -1:
107106
old_url = old_url[:i]
108107

109-
new_url = request.url_root.strip('/')
108+
new_url = new_url.strip('/')
110109

111110
return data.replace(old_url, new_url)

0 commit comments

Comments
 (0)