Skip to content

Commit f6d02d8

Browse files
committed
Custom error that includes the response on JSON parse error
1 parent 51a0666 commit f6d02d8

2 files changed

Lines changed: 10 additions & 1 deletion

File tree

lib/typesense/documents.rb

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ def import(documents, options = {})
4646
)
4747

4848
if documents.is_a?(Array)
49-
results_in_jsonl_format.split("\n").map { |r| Oj.load(r) }
49+
results_in_jsonl_format.split("\n").map { |r| json_load(r) }
5050
else
5151
results_in_jsonl_format
5252
end
@@ -73,5 +73,11 @@ def delete(query_parameters = {})
7373
def endpoint_path(operation = nil)
7474
"#{Collections::RESOURCE_PATH}/#{@collection_name}#{Documents::RESOURCE_PATH}#{operation.nil? ? '' : "/#{operation}"}"
7575
end
76+
77+
def json_load(json)
78+
Oj.load(json)
79+
rescue Oj::ParseError => e
80+
raise Typesense::Error::ResponseMalformed, "#{e.message}\nJSON:\n#{json}"
81+
end
7682
end
7783
end

lib/typesense/error.rb

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,9 @@ class ObjectUnprocessable < Error
2525
class RequestMalformed < Error
2626
end
2727

28+
class ResponseMalformed < Error
29+
end
30+
2831
class RequestUnauthorized < Error
2932
end
3033

0 commit comments

Comments
 (0)