Sha256: c5078aa32c19ec74d2eca36ee21563e8760caa0b6652d54e2cf7b64fde1617d6

Contents?: true

Size: 1.83 KB

Versions: 19

Compression:

Stored size: 1.83 KB

Contents

module Neo4j
  module Server
    module Resource
      class ServerException < Exception
      end

      attr_reader :resource_data, :resource_url

      def init_resource_data(resource_data, resource_url)
        fail "Exception #{resource_data[:exception]}" if resource_data[:exception]
        fail "Expected @resource_data to be Hash got #{resource_data.inspect}" unless resource_data.respond_to?(:[])

        @resource_data = resource_data
        @resource_url = resource_url

        self
      end

      def wrap_resource(connection = Neo4j::Session.current)
        url = resource_url(:transaction)
        CypherTransaction.new(url, connection)
      end

      def resource_url(key = nil)
        return @resource_url if key.nil?
        @resource_data.fetch key
      rescue KeyError
        raise "No resource key '#{key}', available #{@resource_data.keys.inspect}"
      end

      def expect_response_code!(response, expected_code, msg = 'Error for request')
        handle_response_error!(response, "Expected response code #{expected_code} #{msg}") unless response.status == expected_code
        response
      end

      def handle_response_error!(response, msg = 'Error for request')
        fail ServerException, "#{msg} #{response.env && response.env[:url].to_s}, #{response.status}"
      end

      def response_exception(response)
        return nil if response.body.nil? || response.body.empty?
        JSON.parse(response.body)[:exception]
      end

      def resource_headers
        {'Content-Type' => 'application/json', 'Accept' => 'application/json; charset=UTF-8', 'User-Agent' => ::Neo4j::Session.user_agent_string}
      end

      def resource_url_id(url = resource_url)
        url.match(%r{/(\d+)$})[1].to_i
      end

      def convert_from_json_value(value)
        JSON.parse(value, quirks_mode: true)
      end
    end
  end
end

Version data entries

19 entries across 19 versions & 1 rubygems

Version Path
neo4j-core-6.1.6 lib/neo4j-server/resource.rb
neo4j-core-6.1.5 lib/neo4j-server/resource.rb
neo4j-core-6.1.4 lib/neo4j-server/resource.rb
neo4j-core-6.1.3 lib/neo4j-server/resource.rb
neo4j-core-6.1.2 lib/neo4j-server/resource.rb
neo4j-core-6.1.1 lib/neo4j-server/resource.rb
neo4j-core-6.0.6 lib/neo4j-server/resource.rb
neo4j-core-6.0.5 lib/neo4j-server/resource.rb
neo4j-core-6.1.0 lib/neo4j-server/resource.rb
neo4j-core-6.0.4 lib/neo4j-server/resource.rb
neo4j-core-6.0.3 lib/neo4j-server/resource.rb
neo4j-core-6.0.2 lib/neo4j-server/resource.rb
neo4j-core-6.0.1 lib/neo4j-server/resource.rb
neo4j-core-6.0.0 lib/neo4j-server/resource.rb
neo4j-core-6.0.0.rc.1 lib/neo4j-server/resource.rb
neo4j-core-6.0.0.alpha.6 lib/neo4j-server/resource.rb
neo4j-core-6.0.0.alpha.5 lib/neo4j-server/resource.rb
neo4j-core-6.0.0.alpha.2 lib/neo4j-server/resource.rb
neo4j-core-6.0.0.alpha.1 lib/neo4j-server/resource.rb