module EnsemblREST
raise “Please, use ruby 1.9.0 or later.” if RUBY_VERSION < “1.9.0”
raise “Please, use ruby 1.9.0 or later.” if RUBY_VERSION < “1.9.0”
raise “Please, use ruby 1.9.0 or later.” if RUBY_VERSION < “1.9.0”
raise “Please, use ruby 1.9.0 or later.” if RUBY_VERSION < “1.9.0”
raise “Please, use ruby 1.9.0 or later.” if RUBY_VERSION < “1.9.0”
raise “Please, use ruby 1.9.0 or later.” if RUBY_VERSION < “1.9.0”
raise “Please, use ruby 1.9.0 or later.” if RUBY_VERSION < “1.9.0”
raise “Please, use ruby 1.9.0 or later.” if RUBY_VERSION < “1.9.0”
raise “Please, use ruby 1.9.0 or later.” if RUBY_VERSION < “1.9.0”
raise “Please, use ruby 1.9.0 or later.” if RUBY_VERSION < “1.9.0”
raise “Please, use ruby 1.9.0 or later.” if RUBY_VERSION < “1.9.0”
raise “Please, use ruby 1.9.0 or later.” if RUBY_VERSION < “1.9.0”
raise “Please, use ruby 1.9.0 or later.” if RUBY_VERSION < “1.9.0”
raise “Please, use ruby 1.9.0 or later.” if RUBY_VERSION < “1.9.0”
raise “Please, use ruby 1.9.0 or later.” if RUBY_VERSION < “1.9.0”
Constants
- SUPPOTEDFORMATS
- VERSION
Public Instance Methods
Connect to Ensembl REST Service
@param [String] server Base Ensembl REST Service URL
# File lib/ensemblrest/connect.rb, line 44 def connect(server) @@url = URI.parse(server) @@http_connect = Net::HTTP.new(@@url.host, @@url.port) end
Do a get request
# File lib/ensemblrest/connect.rb, line 119 def get(get_path, options) parsed_options = EnsemblREST::parse_options(options) request = Net::HTTP::Get.new("#{get_path}#{parsed_options[:opts].empty? ? '' : "?#{parsed_options[:opts].join(';')}"}", parsed_options[:format]) return EnsemblREST::parse_response(@@http_connect.request(request), parsed_options[:format]['content-type']) end
Parse options use in the Module only
# File lib/ensemblrest/connect.rb, line 72 def parse_options(options) parsed_options = {opts: [], format: {}} options.each do |k, v| if k.to_s == 'format' parsed_options[:format] = {'content-type' => EnsemblREST::SUPPOTEDFORMATS.has_key?(v) ? EnsemblREST::SUPPOTEDFORMATS[v] : v} elsif k.to_s == 'content-type' parsed_options[:format] = {'content-type' => v} else if v.is_a?(TrueClass) parsed_options[:opts].push("#{k}=1") elsif v.is_a?(FalseClass) parsed_options[:opts].push("#{k}=0") elsif v.is_a?(Array) v.each {|member| parsed_options[:opts].push("#{k}=#{member}")} else parsed_options[:opts].push("#{k}=#{v}") end end end return parsed_options end
Parse responses use in the Module only
# File lib/ensemblrest/connect.rb, line 96 def parse_response(response, type) case response.code when '200' case type when 'application/json' return JSON.parse(response.body) when 'ext/x-gff3' return Bio::GFF::GFF3.new(response.body) when 'text/x-fasta' return Bio::FastaFormat.new(response.body) when 'text/x-phyloxml+xml' return Bio::PhyloXML::Parser.new(response.body) else return response.body end when '404' raise EnsemblREST::ServiceNotFound, "Service not found" else raise EnsemblREST::InvalidResponse, "Invalid response: #{response.code}" end end
Do a post request
# File lib/ensemblrest/connect.rb, line 126 def post(post_path, request_body, options) parsed_options = EnsemblREST::parse_options(options) request = Net::HTTP::Post.new(post_path, parsed_options[:format].merge({'Accept' => 'application/json'})) request.body = request_body.to_json return EnsemblREST::parse_response(@@http_connect.request(request), parsed_options[:format]['content-type']) end
Switch to use GRCh37 assembly version
# File lib/ensemblrest/connect.rb, line 56 def use37 EnsemblREST::use_GRCh37 end
Switch to use GRCh38 assembly version
# File lib/ensemblrest/connect.rb, line 67 def use38 EnsemblREST::use_GRCh38 end
Switch to use GRCh37 assembly version
# File lib/ensemblrest/connect.rb, line 50 def use_GRCh37 @@url = URI.parse('http://grch37.rest.ensembl.org/') @@http_connect = Net::HTTP.new(@@url.host, @@url.port) end
Switch to use GRCh38 assembly version
# File lib/ensemblrest/connect.rb, line 61 def use_GRCh38 @@url = URI.parse('http://rest.ensembl.org/') @@http_connect = Net::HTTP.new(@@url.host, @@url.port) end