Sha256: c774b310046a95856d9134cb229149a2f89d5090368d0e66810195acadbd52ce

Contents?: true

Size: 1.79 KB

Versions: 38

Compression:

Stored size: 1.79 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)
        CypherTransaction.new(resource_url(:transaction), 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

38 entries across 38 versions & 1 rubygems

Version Path
neo4j-core-8.1.4 lib/neo4j-server/resource.rb
neo4j-core-8.1.3 lib/neo4j-server/resource.rb
neo4j-core-8.1.2 lib/neo4j-server/resource.rb
neo4j-core-8.1.1 lib/neo4j-server/resource.rb
neo4j-core-8.1.0 lib/neo4j-server/resource.rb
neo4j-core-8.0.4 lib/neo4j-server/resource.rb
neo4j-core-8.0.3 lib/neo4j-server/resource.rb
neo4j-core-8.0.2 lib/neo4j-server/resource.rb
neo4j-core-8.0.1 lib/neo4j-server/resource.rb
neo4j-core-7.2.4 lib/neo4j-server/resource.rb
neo4j-core-8.0.0 lib/neo4j-server/resource.rb
neo4j-core-7.2.3 lib/neo4j-server/resource.rb
neo4j-core-7.2.2 lib/neo4j-server/resource.rb
neo4j-core-7.2.1 lib/neo4j-server/resource.rb
neo4j-core-7.2.0 lib/neo4j-server/resource.rb
neo4j-core-7.1.2 lib/neo4j-server/resource.rb
neo4j-core-7.0.9 lib/neo4j-server/resource.rb
neo4j-core-7.1.1 lib/neo4j-server/resource.rb
neo4j-core-7.1.0 lib/neo4j-server/resource.rb
neo4j-core-7.0.8 lib/neo4j-server/resource.rb