diff --git a/.gitignore b/.gitignore index 0fe464a..07807a1 100644 --- a/.gitignore +++ b/.gitignore @@ -8,6 +8,7 @@ /vendor/* # Project files +/exemple/AirMedia/app_token /exemple/config/app_token /exemple/download/app_token /app_token diff --git a/LICENCE.md b/LICENCE.md index 9cecc1d..fdc0d93 100644 --- a/LICENCE.md +++ b/LICENCE.md @@ -631,8 +631,8 @@ to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. - {one line to give the program's name and a brief idea of what it does.} - Copyright (C) {year} {name of author} + Freebox PHP API : A PHP implementation of the freebox v3 APIU + Copyright (C) 2016 Yann Ponzoni This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/README.md b/README.md index 74fc43c..6bd2276 100644 --- a/README.md +++ b/README.md @@ -52,12 +52,13 @@ $System = new \alphayax\freebox\api\v3\services\config\System( $App); /** @var \alphayax\freebox\api\v3\models\SystemConfig $SystemConfig */ $SystemConfig = $System->getConfiguration(); -\alphayax\utils\cli\IO::stdout( 'Uptime : '. $SystemConfig->uptime); +\alphayax\utils\cli\IO::stdout( 'Uptime : '. $SystemConfig->getUptime()); ``` ## Exemples Les exemples sont disponibles dans le repertoire `exemple`. Ils sont classés par services : +- `AirMedia` : Exemple de lancement d'une video sur le Freebox Player - `config` - `check_dns` : Un script pour récuperer la configuration courrante du DHCP - `DMZ` : Récupération de la confiugration de votre zone démilitarisée diff --git a/exemple/AirMedia/AirMedia.php b/exemple/AirMedia/AirMedia.php new file mode 100644 index 0000000..8af9111 --- /dev/null +++ b/exemple/AirMedia/AirMedia.php @@ -0,0 +1,29 @@ +authorize(); +$App->openSession(); + + +$AirMediaService = new \alphayax\freebox\api\v3\services\AirMedia\AirMedia( $App); + +// AirMedia Config +$Configuration = $AirMediaService->getConfiguration(); +var_dump( $Configuration); + +// AirMedia Receivers +$Receivers = $AirMediaService->getAirMediaReceivers(); +var_dump( $Receivers); + +// AirMedia Request +$Request = new \alphayax\freebox\api\v3\models\AirMedia\AirMediaReceiverRequest(); +$Request->setAction( \alphayax\freebox\api\v3\symbols\AirMedia\Action::START); +$Request->setMediaType( \alphayax\freebox\api\v3\symbols\AirMedia\MediaType::VIDEO); +$Request->setMedia( 'http://anon.nasa-global.edgesuite.net/HD_downloads/GRAIL_launch_480.mov'); + +$Status = $AirMediaService->sendRequestToAirMediaReceiver( 'Freebox Player', $Request); +var_dump( $Status); diff --git a/freebox/api/v3/models/AirMedia/AirMediaConfig.php b/freebox/api/v3/models/AirMedia/AirMediaConfig.php new file mode 100644 index 0000000..b3d3553 --- /dev/null +++ b/freebox/api/v3/models/AirMedia/AirMediaConfig.php @@ -0,0 +1,38 @@ +enabled; + } + + /** + * @param boolean $enabled + */ + public function setEnabled( $enabled){ + $this->enabled = $enabled; + } + + /** + * @param string $password + */ + public function setPassword( $password){ + $this->password = $password; + } + +} diff --git a/freebox/api/v3/models/AirMedia/AirMediaReceiver.php b/freebox/api/v3/models/AirMedia/AirMediaReceiver.php new file mode 100644 index 0000000..361bf83 --- /dev/null +++ b/freebox/api/v3/models/AirMedia/AirMediaReceiver.php @@ -0,0 +1,47 @@ +name; + } + + /** + * @return boolean + */ + public function isPasswordProtected(){ + return $this->password_protected; + } + + /** + * @return array + */ + public function getCapabilities(){ + return $this->capabilities; + } + +} diff --git a/freebox/api/v3/models/AirMedia/AirMediaReceiverRequest.php b/freebox/api/v3/models/AirMedia/AirMediaReceiverRequest.php new file mode 100644 index 0000000..6fea83f --- /dev/null +++ b/freebox/api/v3/models/AirMedia/AirMediaReceiverRequest.php @@ -0,0 +1,110 @@ +action; + } + + /** + * @param string $action + */ + public function setAction( $action){ + $this->action = $action; + } + + /** + * @return string + */ + public function getMediaType(){ + return $this->media_type; + } + + /** + * @param string $media_type + */ + public function setMediaType( $media_type){ + $this->media_type = $media_type; + } + + /** + * @return string + */ + public function getPassword(){ + return $this->password; + } + + /** + * @param string $password + */ + public function setPassword( $password){ + $this->password = $password; + } + + /** + * @return int + */ + public function getPosition(){ + return $this->position; + } + + /** + * @param int $position + */ + public function setPosition( $position){ + $this->position = $position; + } + + /** + * @return string + */ + public function getMedia(){ + return $this->media; + } + + /** + * @param string $media + */ + public function setMedia( $media){ + $this->media = $media; + } + +} diff --git a/freebox/api/v3/services/AirMedia/AirMedia.php b/freebox/api/v3/services/AirMedia/AirMedia.php new file mode 100644 index 0000000..79219b8 --- /dev/null +++ b/freebox/api/v3/services/AirMedia/AirMedia.php @@ -0,0 +1,69 @@ +getAuthService( self::API_AIRMEDIA_CONFIG); + $rest->GET(); + + return new AirMediaConfig( $rest->getCurlResponse()['result']); + } + + /** + * @param AirMediaConfig $new_AirMediaConfig + * @return AirMediaConfig + * @throws \Exception + */ + public function setConfiguration( AirMediaConfig $new_AirMediaConfig){ + $rest = $this->getAuthService( self::API_AIRMEDIA_CONFIG); + $rest->PUT( $new_AirMediaConfig->toArray()); + + return new AirMediaConfig( $rest->getCurlResponse()['result']); + } + + /** + * Get the list of AirMediaReceiver connected to the Freebox Server + * @return AirMediaReceiver[] + */ + public function getAirMediaReceivers(){ + $rest = $this->getAuthService( self::API_AIRMEDIA_RECEIVERS); + $rest->GET(); + + $AirMediaReceiver_xs = $rest->getCurlResponse()['result']; + $AirMediaReceivers = []; + foreach( $AirMediaReceiver_xs as $airMediaReceiver_x) { + $AirMediaReceivers[] = new AirMediaReceiver( $airMediaReceiver_x); + } + return $AirMediaReceivers; + } + + /** + * @param string $AirMediaReceiver_name + * @param AirMediaReceiverRequest $AirMediaReceiverRequest + * @return bool + */ + public function sendRequestToAirMediaReceiver( $AirMediaReceiver_name, AirMediaReceiverRequest $AirMediaReceiverRequest){ + $rest = $this->getAuthService( self::API_AIRMEDIA_RECEIVERS . $AirMediaReceiver_name . DIRECTORY_SEPARATOR); + $rest->POST( $AirMediaReceiverRequest->toArray()); + + return $rest->getCurlResponse()['success']; + } + +} diff --git a/freebox/api/v3/symbols/AirMedia/Action.php b/freebox/api/v3/symbols/AirMedia/Action.php new file mode 100644 index 0000000..ab9bdfd --- /dev/null +++ b/freebox/api/v3/symbols/AirMedia/Action.php @@ -0,0 +1,11 @@ +