/** * add or edit project hook settings * @param [Request] $request HTTP Request * * @link(http://doc.gitlab.com/ce/api/projects.html#add-project-hook, link) */ public function addOrEditProjectHooks(Request $request, $project_id = null) { $project = $request->json(); if ($project_id == null) { $id = $project->get('project_id'); } else { $id = $project_id; } // hook url $url = $project->get('url'); $gitUrl = sprintf('projects/%d/hooks', $id); $json['url'] = $url; $json['push_events'] = $project->get('push_events') ?: true; $json['issues_events'] = $project->get('issues_events') ?: false; $json['merge_requests_events'] = $project->get('merge_requests_events') ?: true; $json['tag_push_events'] = $project->get('tag_push_events') ?: false; //dump($json); $client = new HttpClient(); $method = 'POST'; $hookId = null; if ($this->hookHasUrl($id, $project->get('url'), $hookId) == true) { Log::info("project '{$id}' hook('{$url}') is already exist.."); $method = 'PUT'; $gitUrl .= '/' . $hookId; } $response = $client->send($gitUrl, $json, $method); return json_encode($response, JSON_PRETTY_PRINT); }