Skip to content
Snippets Groups Projects
Commit cce0048a authored by Tibo's avatar Tibo
Browse files

Modified api routes for storing records

parent da900725
No related branches found
No related tags found
No related merge requests found
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Sensors;
class SensorController extends Controller
{
public function index()
{
return Sensors::all();
}
public function show($id)
{
return Sensors::find($id);
}
public function store(Request $request)
{
return Sensors::create($request->all());
}
public function update(Request $request, $id)
{
$sensor = Sensors::findOrFail($id);
$sensor->update($request->all());
return $sensor;
}
public function delete(Request $request, $id)
{
$sensor = Sensors::findOrFail($id);
$sensor->delete();
return 204;
}
}
<?php
namespace App\Models;
use Moloquent;
class Sensors extends Moloquent
{
protected $connection = 'mongodb';
protected $collection = 'sensors';
protected $fillable = ['id','content','token'];
protected $server;
public function server($id)
{
$this->server = Server::find($id);
}
}
\ No newline at end of file
...@@ -6,10 +6,17 @@ use Illuminate\Database\Eloquent\Model; ...@@ -6,10 +6,17 @@ use Illuminate\Database\Eloquent\Model;
class Server extends Model class Server extends Model
{ {
protected $fillable = ['name'];
protected $fillable = ['name', 'token'];
public $sensors; public $sensors;
protected $primaryKey = 'id';
public $lastState; public $lastState;
public function __construct(array $attributes = []) {
$attributes["token"] = str_random(32);
return parent::__construct($attributes);
}
public function organization() public function organization()
{ {
return $this->belongsTo('App\Models\Organizations'); return $this->belongsTo('App\Models\Organizations');
......
...@@ -7,10 +7,8 @@ ...@@ -7,10 +7,8 @@
"require": { "require": {
"php": ">=7.0.0", "php": ">=7.0.0",
"fideloper/proxy": "~3.3", "fideloper/proxy": "~3.3",
"jenssegers/mongodb": "^3.3",
"laravel/framework": "5.5.*", "laravel/framework": "5.5.*",
"laravel/tinker": "~1.0", "laravel/tinker": "~1.0"
"laravelcollective/html": "~5.0"
}, },
"require-dev": { "require-dev": {
"filp/whoops": "~2.0", "filp/whoops": "~2.0",
......
<?php <?php
use Illuminate\Http\Request; use Illuminate\Http\Request;
use MongoDB\Client as Mongo;
use App\Models\Server;
/* /*
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
...@@ -13,12 +15,17 @@ use Illuminate\Http\Request; ...@@ -13,12 +15,17 @@ use Illuminate\Http\Request;
| |
*/ */
Route::middleware('auth:api')->get('/user', function (Request $request) { Route::post('record/{server}', function(Request $request, Server $server) {
return $request->user(); if ($server->token !== $request->get("token", "")) {
abort(403);
}
$data = $request->all();
$data["server_id"] = $server->id;
$data["time"] = time();
$collection = (new Mongo)->monitoring->records;
$collection->insertOne($data);
return "ok";
}); });
Route::get('sensors', 'SensorController@index');
Route::get('sensors/{sensor}', 'SensorController@show');
Route::post('sensors', 'SensorController@store');
Route::put('sensors/{sensor}', 'SensorController@update');
Route::delete('sensors/{article}', 'SensorController@delete');
Route::get('register', 'ServerController@register');
\ No newline at end of file
...@@ -2,11 +2,15 @@ ...@@ -2,11 +2,15 @@
namespace Tests\Feature; namespace Tests\Feature;
use App\Models\Server;
use Tests\TestCase; use Tests\TestCase;
use Illuminate\Foundation\Testing\RefreshDatabase; use Illuminate\Foundation\Testing\RefreshDatabase;
class ExampleTest extends TestCase class ExampleTest extends TestCase
{ {
use RefreshDatabase;
/** /**
* A basic test example. * A basic test example.
* *
...@@ -14,8 +18,24 @@ class ExampleTest extends TestCase ...@@ -14,8 +18,24 @@ class ExampleTest extends TestCase
*/ */
public function testBasicTest() public function testBasicTest()
{ {
$response = $this->get('/'); $this->get('/')->assertStatus(200);
}
public function testRecord()
{
$server = new Server();
$server->name = "srv01";
$server->save();
$this->post('/api/record/' . $server->id, [])->assertStatus(403);
$this->post('/api/record/' . $server->id, ["token" => "abc123"])->assertStatus(403);
$data = [
"token" => $server->token,
"version" => "0.1.2",
"uname" => "Linux whatever..."
];
$response->assertStatus(200); $this->post('/api/record/' . $server->id, $data)->assertStatus(200);
} }
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment