diff --git a/app/Http/Controllers/Apis/CountriesApiController.php b/app/Http/Controllers/Apis/CountriesApiController.php new file mode 100644 index 00000000..b25c54f0 --- /dev/null +++ b/app/Http/Controllers/Apis/CountriesApiController.php @@ -0,0 +1,64 @@ + $name){ + $countries[] = [ + 'iso_code' => $iso_code, + 'name' => $name, + ]; + } + + $response = new PagingResponse + ( + count($countries), + count($countries), + 1, + 1, + $countries + ); + + return $this->ok($response->toArray($expand = Input::get('expand',''))); + } + catch (ValidationException $ex1) { + Log::warning($ex1); + return $this->error412(array($ex1->getMessage())); + } + catch(EntityNotFoundException $ex2) + { + Log::warning($ex2); + return $this->error404(array('message'=> $ex2->getMessage())); + } + catch (\Exception $ex) { + Log::error($ex); + return $this->error500($ex); + } + } +} \ No newline at end of file diff --git a/app/Http/Controllers/Apis/LanguagesApiController.php b/app/Http/Controllers/Apis/LanguagesApiController.php new file mode 100644 index 00000000..b63b7801 --- /dev/null +++ b/app/Http/Controllers/Apis/LanguagesApiController.php @@ -0,0 +1,71 @@ +language_repository = $language_repository; + } + + /** + * @return mixed + */ + public function getAll(){ + try { + $languages = $this->language_repository->getAll(); + $response = new PagingResponse + ( + count($languages), + count($languages), + 1, + 1, + $languages + ); + + return $this->ok($response->toArray($expand = Input::get('expand',''))); + } + catch (ValidationException $ex1) { + Log::warning($ex1); + return $this->error412(array($ex1->getMessage())); + } + catch(EntityNotFoundException $ex2) + { + Log::warning($ex2); + return $this->error404(array('message'=> $ex2->getMessage())); + } + catch (\Exception $ex) { + Log::error($ex); + return $this->error500($ex); + } + } +} \ No newline at end of file diff --git a/app/Http/Routes/public.php b/app/Http/Routes/public.php index 7dba770d..ac3a9739 100644 --- a/app/Http/Routes/public.php +++ b/app/Http/Routes/public.php @@ -13,9 +13,7 @@ **/ use Illuminate\Support\Facades\Config; use Illuminate\Support\Facades\Route; - // public api ( without AUTHZ [OAUTH2.0]) - Route::group([ 'namespace' => 'App\Http\Controllers', 'prefix' => 'api/public/v1', @@ -77,4 +75,15 @@ Route::group([ Route::get('', 'PublicCloudsApiController@getAll'); }); }); + + // countries + Route::group(array('prefix' => 'countries'), function () { + Route::get('', 'CountriesApiController@getAll'); + }); + + // languages + Route::group(array('prefix' => 'languages'), function () { + Route::get('', 'LanguagesApiController@getAll'); + }); + }); diff --git a/app/ModelSerializers/LanguageSerializer.php b/app/ModelSerializers/LanguageSerializer.php index 40141792..a769bdd8 100644 --- a/app/ModelSerializers/LanguageSerializer.php +++ b/app/ModelSerializers/LanguageSerializer.php @@ -21,6 +21,6 @@ final class LanguageSerializer extends SilverStripeSerializer { protected static $array_mappings = [ 'Name' => 'name:json_string', - 'IsoCode(' => 'iso_code:json_string', + 'IsoCode' => 'iso_code:json_string', ]; } \ No newline at end of file diff --git a/tests/CountriesApiTest.php b/tests/CountriesApiTest.php new file mode 100644 index 00000000..97b30675 --- /dev/null +++ b/tests/CountriesApiTest.php @@ -0,0 +1,40 @@ +action( + "GET", + "CountriesApiController@getAll", + $params, + [], + [], + [], + [] + ); + + $content = $response->getContent(); + $countries = json_decode($content); + $this->assertTrue(!is_null($countries)); + $this->assertResponseStatus(200); + } + +} \ No newline at end of file diff --git a/tests/LanguagesApiTest.php b/tests/LanguagesApiTest.php new file mode 100644 index 00000000..c811ede6 --- /dev/null +++ b/tests/LanguagesApiTest.php @@ -0,0 +1,43 @@ +action( + "GET", + "LanguagesApiController@getAll", + $params, + [], + [], + [], + [] + ); + + $content = $response->getContent(); + $languages = json_decode($content); + $this->assertTrue(!is_null($languages)); + $this->assertResponseStatus(200); + } + +} \ No newline at end of file