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..9e1c896b --- /dev/null +++ b/app/models/WebHookContent.php @@ -0,0 +1,7 @@ +belongsTo('WebHook', 'id', 'hook_id'); + } + } 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": [