File tree Expand file tree Collapse file tree 3 files changed +25
-5
lines changed Expand file tree Collapse file tree 3 files changed +25
-5
lines changed Original file line number Diff line number Diff line change @@ -18,13 +18,15 @@ def list(version: default_version)
18
18
end
19
19
20
20
def upload ( version : default_version , parameters : { } )
21
+ file = validate ( file : parameters [ :file ] )
22
+
21
23
self . class . post (
22
24
"/#{ version } /files" ,
23
25
headers : {
24
26
"Content-Type" => "application/json" ,
25
27
"Authorization" => "Bearer #{ @access_token } "
26
28
} ,
27
- body : parameters . merge ( file : File . open ( parameters [ : file] ) )
29
+ body : parameters . merge ( file : file )
28
30
)
29
31
end
30
32
@@ -53,5 +55,13 @@ def delete(id:, version: default_version)
53
55
def default_version
54
56
"v1" . freeze
55
57
end
58
+
59
+ def validate ( file :)
60
+ File . open ( file ) . each_line . with_index do |line , index |
61
+ JSON . parse ( line )
62
+ rescue JSON ::ParserError => e
63
+ raise JSON ::ParserError , "#{ e . message } - found on line #{ index + 1 } of #{ file } "
64
+ end
65
+ end
56
66
end
57
67
end
Original file line number Diff line number Diff line change
1
+ {"text" : " puppy A is happy" , "metadata" : " emotional state of puppy A" }
2
+ {"text" : " puppy B is sad" , "metadata" : "emotional state of puppy B }
Original file line number Diff line number Diff line change 11
11
OpenAI ::Client . new . files . upload ( parameters : { file : file , purpose : purpose } )
12
12
end
13
13
14
- it "succeeds" do
15
- VCR . use_cassette ( cassette ) do
16
- r = JSON . parse ( response . body )
17
- expect ( r [ "filename" ] ) . to eq ( filename )
14
+ context "with a valid JSON lines file" do
15
+ it "succeeds" do
16
+ VCR . use_cassette ( cassette ) do
17
+ r = JSON . parse ( response . body )
18
+ expect ( r [ "filename" ] ) . to eq ( filename )
19
+ end
18
20
end
19
21
end
22
+
23
+ context "with an invalid file" do
24
+ let ( :filename ) { File . join ( "errors" , "missing_quote.jsonl" ) }
25
+
26
+ it { expect { response } . to raise_error ( JSON ::ParserError ) }
27
+ end
20
28
end
21
29
22
30
describe "#list" do
You can’t perform that action at this time.
0 commit comments