ContainerLinuxReleasesBridge.php 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. <?php
  2. class ContainerLinuxReleasesBridge extends BridgeAbstract {
  3. const MAINTAINER = 'capt3m0';
  4. const NAME = 'Core OS Container Linux Releases Bridge';
  5. const URI = 'https://coreos.com/releases/';
  6. const DESCRIPTION = 'Returns the releases notes for Container Linux';
  7. const STABLE = 'stable';
  8. const BETA = 'beta';
  9. const ALPHA = 'alpha';
  10. const PARAMETERS = [
  11. [
  12. 'channel' => [
  13. 'name' => 'Release Channel',
  14. 'type' => 'list',
  15. 'required' => true,
  16. 'defaultValue' => self::STABLE,
  17. 'values' => [
  18. 'Stable' => self::STABLE,
  19. 'Beta' => self::BETA,
  20. 'Alpha' => self::ALPHA,
  21. ],
  22. ]
  23. ]
  24. ];
  25. public function getReleaseFeed($jsonUrl) {
  26. $json = getContents($jsonUrl)
  27. or returnServerError('Could not request Core OS Website.');
  28. return json_decode($json, true);
  29. }
  30. public function collectData() {
  31. $data = $this->getReleaseFeed($this->getJsonUri());
  32. foreach ($data as $releaseVersion => $release) {
  33. $item = [];
  34. $item['uri'] = "https://coreos.com/releases/#$releaseVersion";
  35. $item['title'] = $releaseVersion;
  36. $item['content'] = nl2br($release['release_notes']);
  37. $item['content'] .= <<<EOT
  38. <br/>
  39. Major Software:
  40. <br/>
  41. - Kernel: {$release['major_software']['kernel'][0]}<br/>
  42. - Docker: {$release['major_software']['docker'][0]}<br/>
  43. - etcd: {$release['major_software']['etcd'][0]}<br/>
  44. EOT;
  45. $item['timestamp'] = strtotime($release['release_date']);
  46. $this->items[] = $item;
  47. }
  48. }
  49. private function getJsonUri() {
  50. $channel = $this->getInput('channel');
  51. return "https://coreos.com/releases/releases-$channel.json";
  52. }
  53. public function getURI() {
  54. return self::URI;
  55. }
  56. public function getName(){
  57. if(!is_null($this->getInput('channel'))) {
  58. return 'Container Linux Releases: ' . $this->getInput('channel') . ' Channel';
  59. }
  60. return parent::getName();
  61. }
  62. }