- case global_opts[:format]
- when 'json'
- content = Oj.dump(newobj, :indent => 1)
- when 'yaml'
- content = newobj.to_yaml
- end
-
- tmp_file = Tempfile.new(["", ".#{global_opts[:format]}"])
- tmp_file.write(content)
- tmp_file.close
-
- newobj = run_editor tmp_file, global_opts
-
- begin
- api_method = 'arvados.' + rsc + '.create'
- dumped = Oj.dump(newobj)
-
- result = client.execute(:api_method => eval(api_method),
- :parameters => method_opts,
- :body_object => {object_type => newobj},
- :authenticated => false,
- :headers => {
- authorization: 'OAuth2 '+ENV['ARVADOS_API_TOKEN']
- })
-
- begin
- results = JSON.parse result.body
- rescue JSON::ParserError => e
- arv_edit_save_tmp tmp_file
- abort "Failed to parse server response:\n" + e.to_s
- end
-
- if result.response.status != 200
- puts "Create failed. Server responded #{result.response.status}: #{results['errors']} "
- puts "Create body was:"
- puts dumped
- arv_edit_save_tmp tmp_file
- abort
- end
-
- begin
- puts "Created object #{results['uuid']}"
- rescue
- arv_edit_save_tmp tmp_file
- abort "Unexpected response:\n#{results}"
- end
- ensure
- tmp_file.close(true)
+ edit_and_commit_object initial_obj, "", global_opts do |newobj|
+ result = client.execute(:api_method => eval('arvados.' + rsc + '.create'),
+ :parameters => method_opts,
+ :body_object => {object_type => newobj},
+ :authenticated => false,
+ :headers => {
+ authorization: 'OAuth2 '+ENV['ARVADOS_API_TOKEN']
+ })
+ results = check_response result
+ puts "Created object #{results['uuid']}"