Refactoring the handler class
This commit is contained in:
		@@ -27,12 +27,9 @@ namespace local_webhooks;
 | 
				
			|||||||
defined("MOODLE_INTERNAL") || die();
 | 
					defined("MOODLE_INTERNAL") || die();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
require_once(__DIR__ . "/../lib.php");
 | 
					require_once(__DIR__ . "/../lib.php");
 | 
				
			||||||
require_once(__DIR__ . "/../locallib.php");
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
require_once($CFG->libdir . "/filelib.php");
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * Defines how to work with events.
 | 
					 * Defines event handlers.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * @copyright 2017 "Valentin Popov" <info@valentineus.link>
 | 
					 * @copyright 2017 "Valentin Popov" <info@valentineus.link>
 | 
				
			||||||
 * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
 | 
					 * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
 | 
				
			||||||
@@ -48,46 +45,10 @@ class handler {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        if ($callbacks = local_webhooks_get_list_records()) {
 | 
					        if ($callbacks = local_webhooks_get_list_records()) {
 | 
				
			||||||
            foreach ($callbacks as $callback) {
 | 
					            foreach ($callbacks as $callback) {
 | 
				
			||||||
                self::handler_callback($data, $callback);
 | 
					                if (boolval($callback->enable) && !empty($callback->events[$data["eventname"]])) {
 | 
				
			||||||
 | 
					                    local_webhooks_send_request($data, $callback);
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					 | 
				
			||||||
    /**
 | 
					 | 
				
			||||||
     * Processes each callback.
 | 
					 | 
				
			||||||
     *
 | 
					 | 
				
			||||||
     * @param array  $data
 | 
					 | 
				
			||||||
     * @param object $callback
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    private static function handler_callback($data, $callback) {
 | 
					 | 
				
			||||||
        global $CFG;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (boolval($callback->enable)) {
 | 
					 | 
				
			||||||
            if (!empty($callback->events[$data["eventname"]])) {
 | 
					 | 
				
			||||||
                $urlparse = parse_url($CFG->wwwroot);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                $data["host"] = $urlparse['host'];
 | 
					 | 
				
			||||||
                $data["token"] = $callback->token;
 | 
					 | 
				
			||||||
                $data["extra"] = $callback->other;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                self::send($data, $callback);
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    /**
 | 
					 | 
				
			||||||
     * Sending data to the node.
 | 
					 | 
				
			||||||
     *
 | 
					 | 
				
			||||||
     * @param array  $data
 | 
					 | 
				
			||||||
     * @param object $callback
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    private static function send($data, $callback) {
 | 
					 | 
				
			||||||
        $curl = new \curl();
 | 
					 | 
				
			||||||
        $curl->setHeader(array("Content-Type: application/" . $callback->type));
 | 
					 | 
				
			||||||
        $curl->post($callback->url, json_encode($data));
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        $response = $curl->getResponse();
 | 
					 | 
				
			||||||
        \local_webhooks_events::response_answer($callback->id, $response);
 | 
					 | 
				
			||||||
        return $response;
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
		Reference in New Issue
	
	Block a user