A nitcorn action dedicated to GitHub hook listening.

Introduced properties

private var _listener: HookListener

github :: HookAction :: _listener

Listener that contains this action.
private fun listener: HookListener

github :: HookAction :: listener

Listener that contains this action.
private fun listener=(listener: HookListener)

github :: HookAction :: listener=

Listener that contains this action.

Redefined properties

redef type SELF: HookAction

github $ HookAction :: SELF

Type of this instance, automatically specialized in every class
redef fun answer(request: HttpRequest, uri: String): HttpResponse

github $ HookAction :: answer

Parse hook request then call listener.apply_event.

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
private var _listener: HookListener

github :: HookAction :: _listener

Listener that contains this action.
abstract fun answer(request: HttpRequest, truncated_uri: String): HttpResponse

nitcorn :: Action :: answer

Prepare a HttpResponse destined to the client in response to the request
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 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.
init init

core :: Object :: init

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.
private fun listener: HookListener

github :: HookAction :: listener

Listener that contains this action.
private fun listener=(listener: HookListener)

github :: HookAction :: listener=

Listener that contains this action.
private intern fun native_class_name: CString

core :: Object :: native_class_name

The class name of the object in CString format.
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).
protected fun prepare_respond_and_close(request: HttpRequest, truncated_uri: String, http_server: HttpServer)

nitcorn :: Action :: prepare_respond_and_close

Full to a request with sending the response and closing of the http_server
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.
package_diagram github::hooks::HookAction HookAction nitcorn::Action Action github::hooks::HookAction->nitcorn::Action core::Object Object nitcorn::Action->core::Object ...core::Object ... ...core::Object->core::Object

Ancestors

interface Object

core :: Object

The root of the class hierarchy.

Parents

abstract class Action

nitcorn :: Action

Action executed to answer a request

Class definitions

github $ HookAction
# A nitcorn action dedicated to GitHub hook listening.
private class HookAction
	super Action

	# Listener that contains this action.
	#
	# The `listener` is used for its `event_factory` method
	# and the `apply_event`.
	var listener: HookListener

	# Parse hook request then call `listener.apply_event`.
	redef fun answer(request, uri) do
		# get event type
		var kind = request.header.get_or_null("X-GitHub-Event")
		if kind == null then return new HttpResponse(403)
		# parse event
		var event = listener.event_factory(kind, request.body)
		if event == null then return new HttpResponse(403)
		listener.apply_event(event)
		return new HttpResponse(200)
	end
end
lib/github/hooks.nit:126,1--147,3