require 'rest-client' module PKParse class Client attr_accessor :files def initialize(files) @files = files end def parse response = RestClient.post("#{PKParse.service_url}/parse", form_key => files, multipart: true) response = JSON.parse(response, symbolize_keys: true) PKParse::Response.new(response) rescue RestClient::Exception => e raise PKParse::ResponseError.new(e) rescue JSON::ParserError => e raise PKParse::Error.new(e, "Received invalid parse response") end private def form_key # RestClient will add brackets to array form values, but go-pkparse-server # expects brackets regardless of multivalue or not. if files.size > 1 "pkmn" else "pkmn[]" end end end end