Open bf4 opened 3 years ago
on 0.9.x
# Remove when https://github.com/cerebris/jsonapi-resources/issues/1376 is resolved
module JSONAPIIncludeParserPatch
def parse_include_directives(raw_include)
super
rescue NoMethodError
# CSV.parse_line(["memberships"])
# private method `gets' called for #<Array:0x00007f2a31bbb0b8>
fail JSONAPI::Exceptions::InvalidInclude.new(format_key(@resource_klass._type), raw_include)
end
end
JSONAPI::RequestParser.prepend(JSONAPIIncludeParserPatch)
on 0.10.x
# Remove when https://github.com/cerebris/jsonapi-resources/issues/1376 is resolved
module JSONAPIIncludeParserPatch
def parse_include_directives(resource_klass, raw_include)
super
rescue NoMethodError
# CSV.parse_line(["memberships"])
# private method `gets' called for #<Array:0x00007f2a31bbb0b8>
fail JSONAPI::Exceptions::InvalidInclude.new(format_key(resource_klass._type), raw_include)
end
end
JSONAPI::RequestParser.prepend(JSONAPIIncludeParserPatch)
This issue is a (choose one):
Checklist before submitting:
Description
Choose one section below and delete the other:
Bug reports:
The CSV gem raises a NoMethodError when passed an array
e.g.
CSV.parse_line(["memberships"])
raisesAnd JR in 0.9.x and 0.10.x in a few places uses
CSV.parse_line
but only rescuesCSV::MalformedCSVError
making a request like
v1/users/:id?include[]=memberships
with call e.g. JSONAPI::RequestParser#parse_include_directives with["memberships"]
and raise an unhandled error.My proposal is 1) encapsulate wherever CSV.parse_line is called and 2) ensure any errors are handled and raises as JSONAPI::Exceptions
I could possibly make PRs to 0.9 and 0.10
(We're still on 0.9 due to bugs changes in handling of polymorphic types and plain old resources, but I'd like to help however I can)