From 5d82f678bc27a7a8958f87d220b9fa55efd56276 Mon Sep 17 00:00:00 2001 From: James Brooks Date: Sat, 22 Nov 2014 14:00:51 +0000 Subject: [PATCH 1/3] Require guzzlehttp/guzzle for web hooks --- composer.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 153a506f..b2df3753 100644 --- a/composer.json +++ b/composer.json @@ -5,7 +5,8 @@ "license": "MIT", "type": "project", "require": { - "laravel/framework": "4.2.*" + "laravel/framework": "4.2.*", + "guzzlehttp/guzzle": "4.*" }, "autoload": { "classmap": [ From 69105b382811606f3cc64634d620a3f4d13603b6 Mon Sep 17 00:00:00 2001 From: James Brooks Date: Sat, 22 Nov 2014 14:01:01 +0000 Subject: [PATCH 2/3] Create migrations and models for Web Hooks --- .../2014_11_22_134023_CreateWebHooksTable.php | 41 ++++++++++++++++++ ..._22_134136_CreateWebHookResponsesTable.php | 42 +++++++++++++++++++ app/models/WebHook.php | 7 ++++ app/models/WebHookContent.php | 5 +++ 4 files changed, 95 insertions(+) create mode 100644 app/database/migrations/2014_11_22_134023_CreateWebHooksTable.php create mode 100644 app/database/migrations/2014_11_22_134136_CreateWebHookResponsesTable.php create mode 100644 app/models/WebHook.php create mode 100644 app/models/WebHookContent.php diff --git a/app/database/migrations/2014_11_22_134023_CreateWebHooksTable.php b/app/database/migrations/2014_11_22_134023_CreateWebHooksTable.php new file mode 100644 index 00000000..860a2701 --- /dev/null +++ b/app/database/migrations/2014_11_22_134023_CreateWebHooksTable.php @@ -0,0 +1,41 @@ +increments('id'); + $table->string('name')->nullable(FALSE); + $table->string('endpoint')->nullable(FALSE); + $table->tinyInteger('hook_type')->default(0); // When should this web hook be called? + $table->tinyInteger('request_type')->default(0); // ENUM: GET, POST, PUT, DELETE etc + $table->boolean('active')->default(0); + $table->timestamps(); + $table->softDeletes(); + + // Indexes + $table->index('active'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::drop('web_hooks'); + } + +} diff --git a/app/database/migrations/2014_11_22_134136_CreateWebHookResponsesTable.php b/app/database/migrations/2014_11_22_134136_CreateWebHookResponsesTable.php new file mode 100644 index 00000000..bbec71e2 --- /dev/null +++ b/app/database/migrations/2014_11_22_134136_CreateWebHookResponsesTable.php @@ -0,0 +1,42 @@ +increments('id'); + $table->integer('hook_id')->unsigned(); + $table->tinyInteger('response_code')->nullable(FALSE); // This should return something like 200, 301 etc. + $table->string('response_type'); // application/json etc. + $table->text('sent_headers'); + $table->longText('sent_body'); // What we sent the web hook + $table->text('recv_headers'); + $table->longText('recv_body'); // Potentially a big response will be returned + $table->float('time_taken')->default(0); // How long did the request take, in seconds. + $table->timestamps(); + + $table->index('hook_id'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::drop('web_hook_response'); + } + +} diff --git a/app/models/WebHook.php b/app/models/WebHook.php new file mode 100644 index 00000000..a440571e --- /dev/null +++ b/app/models/WebHook.php @@ -0,0 +1,7 @@ +hasMany('WebHookContent', 'hook_id', 'id'); + } + } diff --git a/app/models/WebHookContent.php b/app/models/WebHookContent.php new file mode 100644 index 00000000..8bc3d652 --- /dev/null +++ b/app/models/WebHookContent.php @@ -0,0 +1,5 @@ + Date: Sat, 22 Nov 2014 14:01:43 +0000 Subject: [PATCH 3/3] WebHook belongs to WebHookContent --- app/models/WebHookContent.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/models/WebHookContent.php b/app/models/WebHookContent.php index 8bc3d652..9e1c896b 100644 --- a/app/models/WebHookContent.php +++ b/app/models/WebHookContent.php @@ -1,5 +1,7 @@ belongsTo('WebHook', 'id', 'hook_id'); + } }