Skip to content

Commit 05a95f5

Browse files
add: update_overview, get_file_names, get_files
1 parent 5fc2d73 commit 05a95f5

File tree

3 files changed

+174
-0
lines changed

3 files changed

+174
-0
lines changed

flow_prompt/prompt/flow_prompt.py

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -199,6 +199,59 @@ def add_ideal_answer(
199199

200200
return response
201201

202+
def update_overview(self, overview: str, user_id: str = None):
203+
"""Update user's overview
204+
205+
Args:
206+
user_id (str): user id,
207+
overview (str): new overview to replace the old one
208+
"""
209+
210+
response = FlowPromptService.update_user_overview(user_id, overview, self.api_token)
211+
212+
return response
213+
214+
def get_file_names(self, prefix: str, user_id: str = None):
215+
"""Fetch all filenames of the given user
216+
217+
Args:
218+
prefix (str): s3 bucket folder name to fetch from
219+
user_id (str): user identifier
220+
221+
Returns:
222+
list: list of file names
223+
"""
224+
response = FlowPromptService.get_file_names(prefix, user_id, self.api_token)
225+
226+
return response
227+
228+
def get_files(self, paths: list[str], user_id: str = None):
229+
"""Method to fetch file contents by the provided s3 paths
230+
231+
Args:
232+
paths (list[str]): paths to s3 bucket files
233+
user_id (str): user identifier
234+
235+
Returns:
236+
dict: key = path, value: file content
237+
"""
238+
239+
response = FlowPromptService.get_files(paths, user_id, self.api_token)
240+
241+
return response
242+
243+
def save_files(self, files: dict, user_id: str = None):
244+
"""Method to save files into FPS S3 bucket
245+
246+
Args:
247+
files (dict): dictionary where key = file_name (relative path), val = file_content
248+
"""
249+
250+
response = FlowPromptService.save_files(files, user_id, self.api_token)
251+
252+
return response
253+
254+
202255
def get_pipe_prompt(self, prompt_id: str, version: str = None) -> PipePrompt:
203256
"""
204257
if the user has keys: lib -> service: get_actual_prompt(local_prompt) -> Service:

flow_prompt/services/flow_prompt/__init__.py

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,3 +194,91 @@ def create_test_with_ideal_answer(
194194
json_data = json.dumps(data)
195195
requests.post(url, headers=headers, data=json_data)
196196
logger.info(f"Created Ci/CD for prompt {prompt_data['prompt_id']}")
197+
198+
@classmethod
199+
def update_user_overview(
200+
cls,
201+
user_id: str,
202+
overview: str,
203+
api_token: str
204+
):
205+
url = f"{cls.url}lib/files?updateOverview"
206+
headers = {"Authorization": f"Token {api_token}"}
207+
data = {
208+
'user_id': user_id,
209+
"overview": overview,
210+
}
211+
json_data = json.dumps(data)
212+
logger.debug(f"Request to {url} with data: {data}")
213+
response = requests.post(url, headers=headers, data=json_data)
214+
logger.info(f"Update overview of the user: ${user_id}")
215+
216+
return response
217+
218+
@classmethod
219+
def get_file_names(
220+
cls,
221+
prefix: str,
222+
user_id: str,
223+
api_token: str,
224+
):
225+
url = f"{cls.url}lib/files?getFileNames&prefix={prefix}&user_id={user_id}"
226+
headers = {"Authorization": f"Token {api_token}"}
227+
228+
logger.debug(f"Request to {url}")
229+
response = requests.get(url, headers=headers)
230+
231+
if response.status_code == 200:
232+
logger.info(f"Fetched filenames for user - ${user_id} from {prefix}")
233+
return response.json()
234+
else:
235+
logger.error(response)
236+
return response
237+
238+
@classmethod
239+
def get_files(
240+
cls,
241+
paths: list,
242+
user_id: str,
243+
api_token: str,
244+
):
245+
url = f"{cls.url}lib/files?getFiles"
246+
headers = {"Authorization": f"Token {api_token}"}
247+
data = {
248+
'user_id': user_id,
249+
'paths': paths
250+
}
251+
252+
json_data = json.dumps(data)
253+
response = requests.post(url=url, headers=headers, data=json_data)
254+
255+
if response.status_code == 200:
256+
logger.info(f"Fetched files for user - ${user_id}")
257+
return response.json()
258+
else:
259+
logger.error(response)
260+
return response
261+
262+
@classmethod
263+
def save_files(
264+
cls,
265+
files: dict,
266+
user_id: str,
267+
api_token: str,
268+
):
269+
url = f"{cls.url}lib/files?saveFiles"
270+
headers = {"Authorization": f"Token {api_token}"}
271+
data = {
272+
'user_id': user_id,
273+
'files': files,
274+
}
275+
276+
json_data = json.dumps(data)
277+
response = requests.post(url=url, headers=headers, data=json_data)
278+
279+
if response.status_code == 200:
280+
logger.info(f"Saved files for user - ${user_id}")
281+
return response.json()
282+
else:
283+
logger.error(response)
284+
return response

tests/prompts/test_files.py

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
import logging
2+
import os
3+
from pytest import fixture
4+
from flow_prompt import FlowPrompt
5+
logger = logging.getLogger(__name__)
6+
7+
@fixture
8+
def fp():
9+
api_token = os.getenv("FLOW_PROMPT_API_TOKEN")
10+
flow_prompt = FlowPrompt(
11+
api_token=api_token
12+
)
13+
return flow_prompt
14+
15+
16+
def test_elytimes(fp):
17+
18+
user_id = '94187488-9041-7011-ac07-58581cb3f737'
19+
overview = "I'm handsome"
20+
21+
# response = fp.get_file_names('/user', user_id)
22+
response = fp.update_overview(overview)
23+
# response = fp.get_files([
24+
# 'user/file1.txt', 'company/file1.txt'
25+
# ], user_id)
26+
27+
# print(response)
28+
# fp.save_files({
29+
# 'user/file1.txt': 'Hello world',
30+
# 'company/file1.txt': 'Hello company!'
31+
# }, user_id)
32+
33+
# assert 'file_contents' in response

0 commit comments

Comments
 (0)