class RDF::Virtuoso::Repository
Constants
- READ_METHODS
- RESULT_JSON
- RESULT_XML
- WRITE_METHODS
Attributes
auth_method[R]
password[R]
update_uri[R]
uri[R]
username[R]
Public Class Methods
new(uri, opts={}, &block)
click to toggle source
# File lib/rdf/virtuoso/repository.rb, line 28 def initialize(uri, opts={}, &block) @uri = URI.parse(uri) @update_uri = URI.parse(opts[:update_uri]) if opts[:update_uri] @base_uri = "#{@uri.scheme}://#{@uri.host}" @base_uri += ":" + @uri.port.to_s if @uri.port @username = opts[:username] || nil @password = opts[:password] || nil @auth_method = opts[:auth_method] || 'digest' @timeout = opts[:timeout] || 5 # default timeout 5 seconds @sparql_endpoint = @uri.request_uri @sparul_endpoint = @update_uri.nil? ? @sparql_endpoint : @update_uri.request_uri self.class.base_uri @base_uri end
Private Instance Methods
api_get(query, options = {})
click to toggle source
# File lib/rdf/virtuoso/repository.rb, line 96 def api_get(query, options = {}) # prefer sparul endpoint with auth if present to allow SELECT/CONSTRUCT access to protected graphs if @sparul_endpoint self.class.endpoint @sparul_endpoint Timeout::timeout(@timeout) { get '/', extra_query: { query: query }.merge(options), extra_request: extra_request_options, transform: RDF::Virtuoso::Parser::JSON } else self.class.endpoint @sparql_endpoint Timeout::timeout(@timeout) { puts self.inspect get '/', extra_query: { query: query }.merge(options), transform: RDF::Virtuoso::Parser::JSON } end end
api_post(query, options = {})
click to toggle source
# File lib/rdf/virtuoso/repository.rb, line 115 def api_post(query, options = {}) self.class.endpoint @sparul_endpoint Timeout::timeout(@timeout) { post '/', extra_body: { query: query }.merge(options), extra_request: extra_request_options, response_container: [ "results", "bindings", 0, "callret-0", "value"] } end
auth()
click to toggle source
# File lib/rdf/virtuoso/repository.rb, line 92 def auth { username: @username, password: @password } end
base_query_options()
click to toggle source
# File lib/rdf/virtuoso/repository.rb, line 75 def base_query_options { format: RESULT_JSON } end
base_request_options()
click to toggle source
# File lib/rdf/virtuoso/repository.rb, line 79 def base_request_options { headers: headers } end
check_response_errors(response)
click to toggle source
# File lib/rdf/virtuoso/repository.rb, line 60 def check_response_errors(response) case response.code when 401 raise NotAuthorized.new when 400 raise MalformedQuery.new(response.parsed_response) when 500..599 raise ServerError.new(response.body) end end
extra_request_options()
click to toggle source
# File lib/rdf/virtuoso/repository.rb, line 83 def extra_request_options case @auth_method when 'basic' { basic_auth: auth } when 'digest' { digest_auth: auth } end end
headers()
click to toggle source
# File lib/rdf/virtuoso/repository.rb, line 71 def headers { 'Accept' => [RESULT_JSON, RESULT_XML].join(', ') } end