Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit7fa871b

Browse files
authored
Merge pull requesttypesense#29 from OrionReed/master
Throw error if search parameters are not all strings
2 parentsca568b3 +8d6a01b commit7fa871b

File tree

4 files changed

+25
-2
lines changed

4 files changed

+25
-2
lines changed

‎typesense/documents.py‎

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44

55
from .documentimportDocument
66
from .loggerimportlogger
7+
from .validationimportvalidate_search
8+
from .preprocessimportstringify_search_params
79
fromcollections.abcimportIterable
810

911
classDocuments(object):
@@ -94,7 +96,9 @@ def export(self, params=None):
9496
returnapi_response
9597

9698
defsearch(self,search_parameters):
97-
returnself.api_call.get(self._endpoint_path('search'),search_parameters)
99+
stringified_search_params=stringify_search_params(search_parameters)
100+
validate_search(stringified_search_params)
101+
returnself.api_call.get(self._endpoint_path('search'),stringified_search_params)
98102

99103
defdelete(self,params=None):
100-
returnself.api_call.delete(self._endpoint_path(),params)
104+
returnself.api_call.delete(self._endpoint_path(),params)

‎typesense/exceptions.py‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,3 +45,7 @@ class ServiceUnavailable(TypesenseClientError):
4545

4646
classHTTPStatus0Error(TypesenseClientError):
4747
pass
48+
49+
50+
classInvalidParameter(TypesenseClientError):
51+
pass

‎typesense/preprocess.py‎

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
defstringify_search_params(params):
2+
return {key:stringify(val)forkey,valinparams.items()}
3+
4+
defstringify(val):
5+
ifisinstance(val,bool)orisinstance(val,int):
6+
returnstr(val).lower()
7+
else:
8+
returnval

‎typesense/validation.py‎

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
fromtypesense.exceptionsimportInvalidParameter
2+
3+
4+
defvalidate_search(params):
5+
forkeyinparams:
6+
ifnotisinstance(params[key],str):
7+
raiseInvalidParameter(f"'{key}' field expected a string but was given{type(params[key]).__name__}")

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp