Skip to content

Commit 9de2656

Browse files
committed
Better error handling
1 parent 3a8c9b8 commit 9de2656

File tree

2 files changed

+17
-13
lines changed

2 files changed

+17
-13
lines changed

src/PRIP/tests/test_prip_station_mock.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@
2121
("/Products?$filter=OriginDate eq 2022-06-26T06:14:55.468Z&$expand=Attributes", PRIP_PRODUCT),
2222
("/Products?$filter=PublicationDate eq 2022-06-26T06:30:34.558Z&$expand=Attributes", PRIP_PRODUCT),
2323
("/Products?$filter=Online eq true&$expand=Attributes", PRIP_PRODUCT),
24+
("/Products?$filter=Online invalid_op invalid_value&$expand=Attributes", None),
25+
("/Products?$filter=invalid_operator invalid_op invalid_value&$expand=Attributes", None),
2426
("/Products?$filter=ContentDate/Start eq 2022-06-26T05:05:33.863Z&$expand=Attributes", PRIP_PRODUCT),
2527
("/Products?$filter=ContentDate/End eq 2022-06-26T05:10:38.849Z&$expand=Attributes", PRIP_PRODUCT),
2628
("/Products?$filter=OData.CSC.Intersects(area=geography'SRID=4326;POLYGON((-60 0,-62 -10,-58 -10,-56 0,-60 0))')&$expand=Attributes", PRIP_PRODUCT),

src/common/odata_lexer.py

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from odata_query.grammar import ODataLexer, ODataParser
22
from odata_query.visitor import NodeVisitor
33
from odata_query.ast import String, DateTime, Boolean, Compare, Identifier, Attribute, BoolOp, Call, CollectionLambda
4-
4+
from odata_query.exceptions import UnknownFunctionException, ParsingException
55

66
class FilterExtractor(NodeVisitor):
77
"""
@@ -171,17 +171,19 @@ def parse_odata_filter(query: str):
171171
# Strip leading "$filter=" if present
172172
if query.startswith("$filter="):
173173
query = query[len("$filter="):]
174-
175-
# Tokenize the query string using ODataLexer
176-
lexer = ODataLexer()
177-
tokens = lexer.tokenize(query)
178-
179-
# Parse tokens into an AST using ODataParser
180-
parser = ODataParser()
181-
ast = parser.parse(tokens)
182-
183-
# Extract filters from the AST using FilterExtractor visitor
184-
extractor = FilterExtractor()
185-
extractor.visit(ast)
174+
try:
175+
# Tokenize the query string using ODataLexer
176+
lexer = ODataLexer()
177+
tokens = lexer.tokenize(query)
178+
179+
# Parse tokens into an AST using ODataParser
180+
parser = ODataParser()
181+
ast = parser.parse(tokens)
182+
183+
# Extract filters from the AST using FilterExtractor visitor
184+
extractor = FilterExtractor()
185+
extractor.visit(ast)
186+
except (UnknownFunctionException, ParsingException):
187+
return {}
186188

187189
return extractor.result

0 commit comments

Comments
 (0)