From 2df0189a90a623645f6b1069cb53a6ea4a180bbd Mon Sep 17 00:00:00 2001 From: Kyle Robbertze Date: Thu, 30 Jan 2020 15:47:36 +0200 Subject: [PATCH 1/3] add API v2 --- .gitignore | 3 +- Vagrantfile | 4 + .../application/configs/config-check.php | 29 +- .../views/scripts/systemstatus/index.phtml | 21 ++ .../airtime-setup/forms/finish-settings.php | 7 +- airtime_mvc/build/airtime-setup/load.php | 14 + airtime_mvc/public/setup/database-setup.php | 25 +- api/README.md | 45 +++ api/bin/libretime-api | 21 ++ api/install/systemd/libretime-api.service | 11 + api/libretimeapi/__init__.py | 0 api/libretimeapi/apps.py | 7 + api/libretimeapi/managers.py | 20 ++ api/libretimeapi/models/__init__.py | 14 + api/libretimeapi/models/authentication.py | 141 ++++++++++ api/libretimeapi/models/celery.py | 13 + api/libretimeapi/models/countries.py | 11 + api/libretimeapi/models/files.py | 105 +++++++ api/libretimeapi/models/playlists.py | 41 +++ api/libretimeapi/models/playout.py | 73 +++++ api/libretimeapi/models/podcasts.py | 77 +++++ api/libretimeapi/models/preferences.py | 30 ++ api/libretimeapi/models/schedule.py | 30 ++ api/libretimeapi/models/services.py | 11 + api/libretimeapi/models/shows.py | 94 +++++++ api/libretimeapi/models/smart_blocks.py | 66 +++++ api/libretimeapi/models/tracks.py | 25 ++ api/libretimeapi/models/user_constants.py | 11 + api/libretimeapi/models/webstreams.py | 40 +++ api/libretimeapi/permission_constants.py | 104 +++++++ api/libretimeapi/permissions.py | 102 +++++++ api/libretimeapi/serializers.py | 265 ++++++++++++++++++ api/libretimeapi/settings.py | 184 ++++++++++++ api/libretimeapi/tests/__init__.py | 0 api/libretimeapi/tests/resources/song.mp3 | Bin 0 -> 654105 bytes api/libretimeapi/tests/runners.py | 24 ++ api/libretimeapi/tests/test_models.py | 40 +++ api/libretimeapi/tests/test_permissions.py | 119 ++++++++ api/libretimeapi/tests/test_views.py | 38 +++ api/libretimeapi/urls.py | 51 ++++ api/libretimeapi/utils.py | 25 ++ api/libretimeapi/views.py | 228 +++++++++++++++ api/libretimeapi/wsgi.py | 16 ++ api/setup.py | 32 +++ install | 25 +- installer/apache/airtime-vhost | 49 ++-- installer/apache/airtime-vhost-2.4 | 46 +-- installer/lib/requirements-debian-buster.apt | 3 + installer/lib/requirements-debian-stretch.apt | 3 + installer/lib/requirements-ubuntu-bionic.apt | 3 + installer/lib/requirements-ubuntu-xenial.apt | 3 + ...uirements-ubuntu-xenial_docker_minimal.apt | 3 + installer/uwsgi/libretime-api.ini | 10 + .../api_clients/api_clients/__init__.py | 2 +- python_apps/api_clients/api_clients/utils.py | 166 +++++++++++ .../{api_client.py => version1.py} | 222 ++++----------- .../api_clients/api_clients/version2.py | 124 ++++++++ python_apps/api_clients/setup.py | 11 +- python_apps/api_clients/tests/test_apcurl.py | 10 +- .../api_clients/tests/test_apirequest.py | 33 ++- .../api_clients/tests/test_requestprovider.py | 17 +- .../{test_get_protocol.py => test_utils.py} | 32 ++- python_apps/pypo/bin/pyponotify | 2 +- .../liquidsoap/generate_liquidsoap_cfg.py | 2 +- .../pypo/liquidsoap/liquidsoap_auth.py | 2 +- python_apps/pypo/pypo/__main__.py | 2 +- python_apps/pypo/pypo/listenerstat.py | 2 +- python_apps/pypo/pypo/pypofetch.py | 24 +- python_apps/pypo/pypo/pypofile.py | 35 +-- python_apps/pypo/pypo/pypopush.py | 2 +- python_apps/pypo/pypo/recorder.py | 5 +- 71 files changed, 2740 insertions(+), 315 deletions(-) create mode 100644 api/README.md create mode 100644 api/bin/libretime-api create mode 100644 api/install/systemd/libretime-api.service create mode 100644 api/libretimeapi/__init__.py create mode 100644 api/libretimeapi/apps.py create mode 100644 api/libretimeapi/managers.py create mode 100644 api/libretimeapi/models/__init__.py create mode 100644 api/libretimeapi/models/authentication.py create mode 100644 api/libretimeapi/models/celery.py create mode 100644 api/libretimeapi/models/countries.py create mode 100644 api/libretimeapi/models/files.py create mode 100644 api/libretimeapi/models/playlists.py create mode 100644 api/libretimeapi/models/playout.py create mode 100644 api/libretimeapi/models/podcasts.py create mode 100644 api/libretimeapi/models/preferences.py create mode 100644 api/libretimeapi/models/schedule.py create mode 100644 api/libretimeapi/models/services.py create mode 100644 api/libretimeapi/models/shows.py create mode 100644 api/libretimeapi/models/smart_blocks.py create mode 100644 api/libretimeapi/models/tracks.py create mode 100644 api/libretimeapi/models/user_constants.py create mode 100644 api/libretimeapi/models/webstreams.py create mode 100644 api/libretimeapi/permission_constants.py create mode 100644 api/libretimeapi/permissions.py create mode 100644 api/libretimeapi/serializers.py create mode 100644 api/libretimeapi/settings.py create mode 100644 api/libretimeapi/tests/__init__.py create mode 100644 api/libretimeapi/tests/resources/song.mp3 create mode 100644 api/libretimeapi/tests/runners.py create mode 100644 api/libretimeapi/tests/test_models.py create mode 100644 api/libretimeapi/tests/test_permissions.py create mode 100644 api/libretimeapi/tests/test_views.py create mode 100644 api/libretimeapi/urls.py create mode 100644 api/libretimeapi/utils.py create mode 100644 api/libretimeapi/views.py create mode 100644 api/libretimeapi/wsgi.py create mode 100644 api/setup.py create mode 100644 installer/uwsgi/libretime-api.ini create mode 100644 python_apps/api_clients/api_clients/utils.py rename python_apps/api_clients/api_clients/{api_client.py => version1.py} (65%) create mode 100644 python_apps/api_clients/api_clients/version2.py rename python_apps/api_clients/tests/{test_get_protocol.py => test_utils.py} (72%) diff --git a/.gitignore b/.gitignore index 615c2e240..a3830700f 100644 --- a/.gitignore +++ b/.gitignore @@ -19,4 +19,5 @@ airtime_mvc/tests/log/*.log /docs/_site/* /docs/.jekyll-cache/* /docs/.gems/* -Gemfile.lock \ No newline at end of file +Gemfile.lock +api.log diff --git a/Vagrantfile b/Vagrantfile index 2d1ebd721..c24204d74 100644 --- a/Vagrantfile +++ b/Vagrantfile @@ -10,6 +10,10 @@ Vagrant.configure("2") do |config| # liquidsoap input harbors for instreaming (ie. /master) config.vm.network "forwarded_port", guest: 8001, host:8001 config.vm.network "forwarded_port", guest: 8002, host:8002 + # database + config.vm.network "forwarded_port", guest: 5432, host:5432 + # api + config.vm.network "forwarded_port", guest: 8081, host:8081 # make sure we are using nfs (doesn't work out of the box with debian) nfsPath = "." diff --git a/airtime_mvc/application/configs/config-check.php b/airtime_mvc/application/configs/config-check.php index 6a99a2acd..59d9dfc11 100644 --- a/airtime_mvc/application/configs/config-check.php +++ b/airtime_mvc/application/configs/config-check.php @@ -18,6 +18,7 @@ $pypo = $externalServices["pypo"]; $liquidsoap = $externalServices["liquidsoap"]; $analyzer = $externalServices["analyzer"]; $celery = $externalServices['celery']; +$api = $externalServices['api']; $r1 = array_reduce($phpDependencies, "booleanReduce", true); $r2 = array_reduce($externalServices, "booleanReduce", true); @@ -29,14 +30,14 @@ $result = $r1 && $r2;