An abstract request that defines most of the standard options for Neo4j REST API

Introduced properties

fun auth: nullable String

neo4j :: JsonCurlRequest :: auth

OAuth token
fun auth=(auth: nullable String)

neo4j :: JsonCurlRequest :: auth=

OAuth token
init defaultinit(url: String, data: nullable HeaderMap, body: nullable String, headers: nullable HeaderMap, delegate: nullable CurlCallbacks, user_agent: nullable String, unix_socket_path: nullable String, method: nullable String, auth: nullable String)

neo4j :: JsonCurlRequest :: defaultinit

protected fun execute_hook: nullable CurlResponse

neo4j :: JsonCurlRequest :: execute_hook

Hook to implement in concrete requests
protected fun init_headers

neo4j :: JsonCurlRequest :: init_headers

init HTTP headers for Neo4j REST API

Redefined properties

redef type SELF: JsonCurlRequest

neo4j $ JsonCurlRequest :: SELF

Type of this instance, automatically specialized in every class
redef fun execute: CurlResponse

neo4j $ JsonCurlRequest :: execute

Execute HTTP request

All properties

fun !=(other: nullable Object): Bool

core :: Object :: !=

Have self and other different values?
fun ==(other: nullable Object): Bool

core :: Object :: ==

Have self and other the same value?
type CLASS: Class[SELF]

core :: Object :: CLASS

The type of the class of self.
type SELF: Object

core :: Object :: SELF

Type of this instance, automatically specialized in every class
fun auth: nullable String

neo4j :: JsonCurlRequest :: auth

OAuth token
fun auth=(auth: nullable String)

neo4j :: JsonCurlRequest :: auth=

OAuth token
fun body: nullable String

curl :: CurlHTTPRequest :: body

Raw body string
fun body=(body: nullable String)

curl :: CurlHTTPRequest :: body=

Raw body string
protected fun class_factory(name: String): CLASS

core :: Object :: class_factory

Implementation used by get_class to create the specific class.
fun class_name: String

core :: Object :: class_name

The class name of the object.
fun close

curl :: CurlRequest :: close

Close low-level resources associated to this request
fun data: nullable HeaderMap

curl :: CurlHTTPRequest :: data

Data for the body of a POST request
fun data=(data: nullable HeaderMap)

curl :: CurlHTTPRequest :: data=

Data for the body of a POST request
init defaultinit(url: String, data: nullable HeaderMap, body: nullable String, headers: nullable HeaderMap, delegate: nullable CurlCallbacks, user_agent: nullable String, unix_socket_path: nullable String, method: nullable String, auth: nullable String)

neo4j :: JsonCurlRequest :: defaultinit

init defaultinit(url: String, data: nullable HeaderMap, body: nullable String, headers: nullable HeaderMap, delegate: nullable CurlCallbacks, user_agent: nullable String, unix_socket_path: nullable String, method: nullable String)

curl :: CurlHTTPRequest :: defaultinit

fun delegate: nullable CurlCallbacks

curl :: CurlHTTPRequest :: delegate

Delegates to customize the behavior when running execute
fun delegate=(delegate: nullable CurlCallbacks)

curl :: CurlHTTPRequest :: delegate=

Delegates to customize the behavior when running execute
fun download_to_file(output_file_name: nullable String): CurlResponse

curl :: CurlHTTPRequest :: download_to_file

Download to file given resource
fun execute: CurlResponse

curl :: CurlHTTPRequest :: execute

Execute HTTP request
protected fun execute_hook: nullable CurlResponse

neo4j :: JsonCurlRequest :: execute_hook

Hook to implement in concrete requests
fun get_class: CLASS

core :: Object :: get_class

The meta-object representing the dynamic type of self.
fun hash: Int

core :: Object :: hash

The hash code of the object.
fun headers: nullable HeaderMap

curl :: CurlHTTPRequest :: headers

Header content of the request
fun headers=(headers: nullable HeaderMap)

curl :: CurlHTTPRequest :: headers=

Header content of the request
init init

core :: Object :: init

protected fun init_headers

neo4j :: JsonCurlRequest :: init_headers

init HTTP headers for Neo4j REST API
fun inspect: String

core :: Object :: inspect

Developer readable representation of self.
protected fun inspect_head: String

core :: Object :: inspect_head

Return "CLASSNAME:#OBJECTID".
intern fun is_same_instance(other: nullable Object): Bool

core :: Object :: is_same_instance

Return true if self and other are the same instance (i.e. same identity).
fun is_same_serialized(other: nullable Object): Bool

core :: Object :: is_same_serialized

Is self the same as other in a serialization context?
intern fun is_same_type(other: Object): Bool

core :: Object :: is_same_type

Return true if self and other have the same dynamic type.
fun method: String

curl :: CurlHTTPRequest :: method

The HTTP method, GET by default
fun method=(method: nullable String)

curl :: CurlHTTPRequest :: method=

The HTTP method, GET by default
intern fun object_id: Int

core :: Object :: object_id

An internal hash code for the object based on its identity.
fun output

core :: Object :: output

Display self on stdout (debug only).
intern fun output_class_name

core :: Object :: output_class_name

Display class name on stdout (debug only).
fun serialization_hash: Int

core :: Object :: serialization_hash

Hash value use for serialization
intern fun sys: Sys

core :: Object :: sys

Return the global sys object, the only instance of the Sys class.
abstract fun to_jvalue(env: JniEnv): JValue

core :: Object :: to_jvalue

fun to_s: String

core :: Object :: to_s

User readable representation of self.
fun unix_socket_path: nullable String

curl :: CurlHTTPRequest :: unix_socket_path

Set the Unix domain socket path to use
fun unix_socket_path=(unix_socket_path: nullable String)

curl :: CurlHTTPRequest :: unix_socket_path=

Set the Unix domain socket path to use
fun url: String

curl :: CurlHTTPRequest :: url

Address of the remote resource to request
protected fun url=(url: String)

curl :: CurlHTTPRequest :: url=

Address of the remote resource to request
fun user_agent: nullable String

curl :: CurlHTTPRequest :: user_agent

Set the user agent for all following HTTP requests
fun user_agent=(user_agent: nullable String)

curl :: CurlHTTPRequest :: user_agent=

Set the user agent for all following HTTP requests
fun verbose: Bool

curl :: CurlRequest :: verbose

Shall this request be verbose?
fun verbose=(verbose: Bool)

curl :: CurlRequest :: verbose=

Shall this request be verbose?
package_diagram neo4j::JsonCurlRequest JsonCurlRequest curl::CurlHTTPRequest CurlHTTPRequest neo4j::JsonCurlRequest->curl::CurlHTTPRequest curl::CurlRequest CurlRequest curl::CurlHTTPRequest->curl::CurlRequest curl::NativeCurlCallbacks NativeCurlCallbacks curl::CurlHTTPRequest->curl::NativeCurlCallbacks ...curl::CurlRequest ... ...curl::CurlRequest->curl::CurlRequest ...curl::NativeCurlCallbacks ... ...curl::NativeCurlCallbacks->curl::NativeCurlCallbacks neo4j::JsonGET JsonGET neo4j::JsonGET->neo4j::JsonCurlRequest neo4j::JsonPOST JsonPOST neo4j::JsonPOST->neo4j::JsonCurlRequest neo4j::JsonDELETE JsonDELETE neo4j::JsonDELETE->neo4j::JsonCurlRequest neo4j::JsonPUT JsonPUT neo4j::JsonPUT->neo4j::JsonCurlRequest

Ancestors

class CurlRequest

curl :: CurlRequest

CURL Request
interface NativeCurlCallbacks

curl :: NativeCurlCallbacks

Interface for internal information callbacks methods
interface Object

core :: Object

The root of the class hierarchy.

Parents

class CurlHTTPRequest

curl :: CurlHTTPRequest

HTTP request builder

Children

class JsonDELETE

neo4j :: JsonDELETE

HTTP DELETE command
class JsonGET

neo4j :: JsonGET

HTTP GET command
class JsonPOST

neo4j :: JsonPOST

HTTP POST command that sends JSON data
class JsonPUT

neo4j :: JsonPUT

HTTP PUT command that sends JSON data

Class definitions

neo4j $ JsonCurlRequest
# An abstract request that defines most of the standard options for Neo4j REST API
abstract class JsonCurlRequest
	super CurlHTTPRequest

	# OAuth token
	var auth: nullable String is writable

	# init HTTP headers for Neo4j REST API
	protected fun init_headers do
		headers = new HeaderMap
		headers["Accept"] = "application/json; charset=UTF-8"
		headers["Transfer-Encoding"] = "chunked"
		headers["X-Stream"] = "true"
		if auth != null then
			headers["Authorization"] = "token {auth.to_s}"
		end

		# User agent (is used by github to contact devs in case of problems)
		if user_agent != null then
			headers["User-Agent"] = user_agent.to_s
		end
	end

	redef fun execute do
		init_headers

		if not self.curl.is_ok then
			return answer_failure(0, "Curl instance is not correctly initialized")
		end

		var success_response = new CurlResponseSuccess
		var callback_receiver: CurlCallbacks = success_response
		if self.delegate != null then callback_receiver = self.delegate.as(not null)

		var err = self.curl.native.easy_setopt(new CURLOption.follow_location, 1)
		if not err.is_ok then return answer_failure(err.to_i, err.to_s)

		err = self.curl.native.easy_setopt(new CURLOption.http_version, 1)
		if not err.is_ok then return answer_failure(err.to_i, err.to_s)

		err = self.curl.native.easy_setopt(new CURLOption.url, url)
		if not err.is_ok then return answer_failure(err.to_i, err.to_s)

		err = self.curl.native.register_callback_header(callback_receiver)
		if not err.is_ok then return answer_failure(err.to_i, err.to_s)

		err = self.curl.native.register_callback_body(callback_receiver)
		if not err.is_ok then return answer_failure(err.to_i, err.to_s)

		# HTTP Header
		if self.headers != null then
			var headers_joined = self.headers.join_pairs(": ")
			err = self.curl.native.easy_setopt(
				new CURLOption.httpheader, headers_joined.to_curlslist)
			if not err.is_ok then return answer_failure(err.to_i, err.to_s)
		end

		var err_hook = execute_hook
		if err_hook != null then return err_hook

		var err_resp = perform
		if err_resp != null then return err_resp

		var st_code = self.curl.native.easy_getinfo_long(new CURLInfoLong.response_code)
		if not st_code == null then success_response.status_code = st_code

		return success_response
	end

	# Hook to implement in concrete requests
	protected fun execute_hook: nullable CurlResponse do return null
end
lib/neo4j/curl_json.nit:22,1--93,3