From a4270abb71b4e7603e574c83418d4dc8353e61fa Mon Sep 17 00:00:00 2001 From: Robert Arlt Jr Date: Mon, 25 Sep 2017 14:00:02 -0400 Subject: [PATCH 1/3] win32 support --- mopidy_iris/__init__.py | 166 ++++++++++++++++++++-------------------- mopidy_iris/core.py | 8 +- package.json | 97 +++++++++++------------ 3 files changed, 140 insertions(+), 131 deletions(-) diff --git a/mopidy_iris/__init__.py b/mopidy_iris/__init__.py index 1b1981f5..9191cdc8 100755 --- a/mopidy_iris/__init__.py +++ b/mopidy_iris/__init__.py @@ -1,83 +1,83 @@ - -from __future__ import unicode_literals - -import logging, os, json -import tornado.web -import tornado.websocket -import handlers - -from mopidy import config, ext -from frontend import IrisFrontend -from handlers import WebsocketHandler, HttpHandler -from core import IrisCore -from raven import Client - -logger = logging.getLogger(__name__) -__version__ = '3.4.5' - -## -# Core extension class -# -# Loads config and gets the party started. Initiates any additional frontends, etc. -## -class Extension( ext.Extension ): - - dist_name = 'Mopidy-Iris' - ext_name = 'iris' - version = __version__ - - def get_default_config(self): - conf_file = os.path.join(os.path.dirname(__file__), 'ext.conf') - return config.read(conf_file) - - def get_config_schema(self): - schema = config.ConfigSchema(self.ext_name) - schema['enabled'] = config.Boolean() - schema['country'] = config.String() - schema['locale'] = config.String() - schema['authorization_url'] = config.String() - return schema - - def setup(self, registry): - - # Add web extension - registry.add('http:app', { - 'name': self.ext_name, - 'factory': iris_factory - }) - - # create our core instance - mem.iris = IrisCore() - mem.iris.version = self.version - - # Connect to our Ravent Sentry error tracker - mem.iris.raven_client = Client( - dsn='https://023e3bf7721b48f29948545fc36a4621:ba30d29174ef4778ac4e141d445607a2@sentry.io/219026', - release=self.version - ) - - # Add our frontend - registry.add('frontend', IrisFrontend) - - -def iris_factory(config, core): - - path = os.path.join( os.path.dirname(__file__), 'static') - - return [ - (r"/images/(.*)", tornado.web.StaticFileHandler, { - 'path': config['local-images']['image_dir'] - }), - (r'/http/([^/]*)', handlers.HttpHandler, { - 'core': core, - 'config': config - }), - (r'/ws/?', handlers.WebsocketHandler, { - 'core': core, - 'config': config - }), - (r'/(.*)', tornado.web.StaticFileHandler, { - 'path': path, - 'default_filename': 'index.html' - }), - ] + +from __future__ import unicode_literals + +import logging, os, json +import tornado.web +import tornado.websocket +import handlers + +from mopidy import config, ext +from frontend import IrisFrontend +from handlers import WebsocketHandler, HttpHandler +from core import IrisCore +from raven import Client + +logger = logging.getLogger(__name__) +__version__ = '3.4.5' + +## +# Core extension class +# +# Loads config and gets the party started. Initiates any additional frontends, etc. +## +class Extension( ext.Extension ): + + dist_name = 'Mopidy-Iris' + ext_name = 'iris' + version = __version__ + + def get_default_config(self): + conf_file = os.path.join(os.path.dirname(__file__), 'ext.conf') + return config.read(conf_file) + + def get_config_schema(self): + schema = config.ConfigSchema(self.ext_name) + schema['enabled'] = config.Boolean() + schema['country'] = config.String() + schema['locale'] = config.String() + schema['authorization_url'] = config.String() + return schema + + def setup(self, registry): + + # Add web extension + registry.add('http:app', { + 'name': self.ext_name, + 'factory': iris_factory + }) + + # create our core instance + mem.iris = IrisCore() + mem.iris.version = self.version + + # Connect to our Ravent Sentry error tracker + mem.iris.raven_client = Client( + dsn='https://023e3bf7721b48f29948545fc36a4621:ba30d29174ef4778ac4e141d445607a2@sentry.io/219026', + release=self.version + ) + + # Add our frontend + registry.add('frontend', IrisFrontend) + + +def iris_factory(config, core): + + path = os.path.join( os.path.dirname(__file__), 'static') + + return [ + (r"/images/(.*)", tornado.web.StaticFileHandler, { + 'path': config['local-images']['image_dir'] + }), + (r'/http/([^/]*)', handlers.HttpHandler, { + 'core': core, + 'config': config + }), + (r'/ws/?', handlers.WebsocketHandler, { + 'core': core, + 'config': config + }), + (r'/(.*)', tornado.web.StaticFileHandler, { + 'path': path, + 'default_filename': 'index.html' + }), + ] diff --git a/mopidy_iris/core.py b/mopidy_iris/core.py index aca8da49..a2d43c3c 100755 --- a/mopidy_iris/core.py +++ b/mopidy_iris/core.py @@ -10,13 +10,19 @@ from mopidy.core import CoreListener from pkg_resources import parse_version from tornado.escape import json_encode, json_decode +if sys.platform == 'win32': + import ctypes + # import logger logger = logging.getLogger(__name__) class IrisCore(object): version = 0 - is_root = ( os.geteuid() == 0 ) + try: + is_root = os.geteuid() == 0 + except AttributeError: + is_root = ctypes.windll.shell32.IsUserAnAdmin() != 0 spotify_token = False queue_metadata = {} connections = {} diff --git a/package.json b/package.json index 24cd8c95..3cc4e996 100755 --- a/package.json +++ b/package.json @@ -1,49 +1,52 @@ { - "name": "mopidy-iris", - "version": "3.4.5", - "description": "Mopidy HTTP interface", - "repository": "https://github.com/jaedb/iris", - "author": "James Barnsley ", - "license": "ISC", - "bugs": { - "url": "https://github.com/jaedb/Iris/issues" - }, - "main": "app.js", - "dependencies": { - "babel-core": "^6.25.0", - "babel-loader": "^7.1.1", - "babel-preset-es2015": "^6.22.0", - "babel-preset-react": "^6.22.0", - "babel-preset-stage-0": "^6.24.1", - "babel-preset-stage-2": "^6.22.0", - "css-loader": "0.28.4", - "expose-loader": "0.7.3", - "extract-text-webpack-plugin": "3.0.0", - "file-loader": "^0.11.2", - "flux": "^3.1.2", - "jquery": "3.1.1", - "mopidy": "^0.5.0", - "node-sass": "^4.5.0", - "react": "15.6.1", - "react-dom": "15.6.1", - "react-fontawesome": "*", - "react-ga": "2.1.2", - "react-redux": "5.0.5", - "react-router": "^3.0.5", - "redux": "3.7.2", - "redux-devtools": "3.4.0", - "redux-thunk": "2.2.0", - "sass-loader": "^6.0.2", - "style-loader": "^0.13.2", - "url-loader": "^0.5.8", - "webpack": "^3.5.1", - "webpack-strip": "0.1.0", - "react-lazyload": "2.2.7" - }, - "scripts": { - "build": "./build.sh", - "dev": "./build.sh && NODE_ENV=development webpack --watch", - "prod": "./build.sh && NODE_ENV=development webpack && NODE_ENV=production webpack", - "release": "./build.sh && NODE_ENV=production webpack && NODE_ENV=development webpack && python setup.py sdist upload -r pypi && ./release.sh" - } + "name": "mopidy-iris", + "version": "3.4.5", + "description": "Mopidy HTTP interface", + "repository": "https://github.com/jaedb/iris", + "author": "James Barnsley ", + "license": "ISC", + "bugs": { + "url": "https://github.com/jaedb/Iris/issues" + }, + "main": "app.js", + "dependencies": { + "babel-core": "^6.25.0", + "babel-loader": "^7.1.1", + "babel-preset-es2015": "^6.22.0", + "babel-preset-react": "^6.22.0", + "babel-preset-stage-0": "^6.24.1", + "babel-preset-stage-2": "^6.22.0", + "css-loader": "0.28.4", + "expose-loader": "0.7.3", + "extract-text-webpack-plugin": "3.0.0", + "file-loader": "^0.11.2", + "flux": "^3.1.2", + "jquery": "3.1.1", + "mopidy": "^0.5.0", + "node-sass": "^4.5.0", + "react": "15.6.1", + "react-dom": "15.6.1", + "react-fontawesome": "*", + "react-ga": "2.1.2", + "react-redux": "5.0.5", + "react-router": "^3.0.5", + "redux": "3.7.2", + "redux-devtools": "3.4.0", + "redux-thunk": "2.2.0", + "sass-loader": "^6.0.2", + "style-loader": "^0.13.2", + "url-loader": "^0.5.8", + "webpack": "^3.5.1", + "webpack-strip": "0.1.0", + "react-lazyload": "2.2.7" + }, + "scripts": { + "build": "./build.sh", + "dev": "./build.sh && NODE_ENV=development webpack --watch", + "prod": "./build.sh && NODE_ENV=development webpack && NODE_ENV=production webpack", + "release": "./build.sh && NODE_ENV=production webpack && NODE_ENV=development webpack && python setup.py sdist upload -r pypi && ./release.sh" + }, + "devDependencies": { + "webpack": "^3.6.0" + } } From 94205d9b8df70dd6afee4f6be37b630916bca38f Mon Sep 17 00:00:00 2001 From: Robert Arlt Jr Date: Mon, 25 Sep 2017 14:08:25 -0400 Subject: [PATCH 2/3] Revert "win32 support" This reverts commit a4270abb71b4e7603e574c83418d4dc8353e61fa. --- mopidy_iris/__init__.py | 166 ++++++++++++++++++++-------------------- mopidy_iris/core.py | 8 +- package.json | 97 ++++++++++++----------- 3 files changed, 131 insertions(+), 140 deletions(-) diff --git a/mopidy_iris/__init__.py b/mopidy_iris/__init__.py index 9191cdc8..1b1981f5 100755 --- a/mopidy_iris/__init__.py +++ b/mopidy_iris/__init__.py @@ -1,83 +1,83 @@ - -from __future__ import unicode_literals - -import logging, os, json -import tornado.web -import tornado.websocket -import handlers - -from mopidy import config, ext -from frontend import IrisFrontend -from handlers import WebsocketHandler, HttpHandler -from core import IrisCore -from raven import Client - -logger = logging.getLogger(__name__) -__version__ = '3.4.5' - -## -# Core extension class -# -# Loads config and gets the party started. Initiates any additional frontends, etc. -## -class Extension( ext.Extension ): - - dist_name = 'Mopidy-Iris' - ext_name = 'iris' - version = __version__ - - def get_default_config(self): - conf_file = os.path.join(os.path.dirname(__file__), 'ext.conf') - return config.read(conf_file) - - def get_config_schema(self): - schema = config.ConfigSchema(self.ext_name) - schema['enabled'] = config.Boolean() - schema['country'] = config.String() - schema['locale'] = config.String() - schema['authorization_url'] = config.String() - return schema - - def setup(self, registry): - - # Add web extension - registry.add('http:app', { - 'name': self.ext_name, - 'factory': iris_factory - }) - - # create our core instance - mem.iris = IrisCore() - mem.iris.version = self.version - - # Connect to our Ravent Sentry error tracker - mem.iris.raven_client = Client( - dsn='https://023e3bf7721b48f29948545fc36a4621:ba30d29174ef4778ac4e141d445607a2@sentry.io/219026', - release=self.version - ) - - # Add our frontend - registry.add('frontend', IrisFrontend) - - -def iris_factory(config, core): - - path = os.path.join( os.path.dirname(__file__), 'static') - - return [ - (r"/images/(.*)", tornado.web.StaticFileHandler, { - 'path': config['local-images']['image_dir'] - }), - (r'/http/([^/]*)', handlers.HttpHandler, { - 'core': core, - 'config': config - }), - (r'/ws/?', handlers.WebsocketHandler, { - 'core': core, - 'config': config - }), - (r'/(.*)', tornado.web.StaticFileHandler, { - 'path': path, - 'default_filename': 'index.html' - }), - ] + +from __future__ import unicode_literals + +import logging, os, json +import tornado.web +import tornado.websocket +import handlers + +from mopidy import config, ext +from frontend import IrisFrontend +from handlers import WebsocketHandler, HttpHandler +from core import IrisCore +from raven import Client + +logger = logging.getLogger(__name__) +__version__ = '3.4.5' + +## +# Core extension class +# +# Loads config and gets the party started. Initiates any additional frontends, etc. +## +class Extension( ext.Extension ): + + dist_name = 'Mopidy-Iris' + ext_name = 'iris' + version = __version__ + + def get_default_config(self): + conf_file = os.path.join(os.path.dirname(__file__), 'ext.conf') + return config.read(conf_file) + + def get_config_schema(self): + schema = config.ConfigSchema(self.ext_name) + schema['enabled'] = config.Boolean() + schema['country'] = config.String() + schema['locale'] = config.String() + schema['authorization_url'] = config.String() + return schema + + def setup(self, registry): + + # Add web extension + registry.add('http:app', { + 'name': self.ext_name, + 'factory': iris_factory + }) + + # create our core instance + mem.iris = IrisCore() + mem.iris.version = self.version + + # Connect to our Ravent Sentry error tracker + mem.iris.raven_client = Client( + dsn='https://023e3bf7721b48f29948545fc36a4621:ba30d29174ef4778ac4e141d445607a2@sentry.io/219026', + release=self.version + ) + + # Add our frontend + registry.add('frontend', IrisFrontend) + + +def iris_factory(config, core): + + path = os.path.join( os.path.dirname(__file__), 'static') + + return [ + (r"/images/(.*)", tornado.web.StaticFileHandler, { + 'path': config['local-images']['image_dir'] + }), + (r'/http/([^/]*)', handlers.HttpHandler, { + 'core': core, + 'config': config + }), + (r'/ws/?', handlers.WebsocketHandler, { + 'core': core, + 'config': config + }), + (r'/(.*)', tornado.web.StaticFileHandler, { + 'path': path, + 'default_filename': 'index.html' + }), + ] diff --git a/mopidy_iris/core.py b/mopidy_iris/core.py index a2d43c3c..aca8da49 100755 --- a/mopidy_iris/core.py +++ b/mopidy_iris/core.py @@ -10,19 +10,13 @@ from mopidy.core import CoreListener from pkg_resources import parse_version from tornado.escape import json_encode, json_decode -if sys.platform == 'win32': - import ctypes - # import logger logger = logging.getLogger(__name__) class IrisCore(object): version = 0 - try: - is_root = os.geteuid() == 0 - except AttributeError: - is_root = ctypes.windll.shell32.IsUserAnAdmin() != 0 + is_root = ( os.geteuid() == 0 ) spotify_token = False queue_metadata = {} connections = {} diff --git a/package.json b/package.json index 3cc4e996..24cd8c95 100755 --- a/package.json +++ b/package.json @@ -1,52 +1,49 @@ { - "name": "mopidy-iris", - "version": "3.4.5", - "description": "Mopidy HTTP interface", - "repository": "https://github.com/jaedb/iris", - "author": "James Barnsley ", - "license": "ISC", - "bugs": { - "url": "https://github.com/jaedb/Iris/issues" - }, - "main": "app.js", - "dependencies": { - "babel-core": "^6.25.0", - "babel-loader": "^7.1.1", - "babel-preset-es2015": "^6.22.0", - "babel-preset-react": "^6.22.0", - "babel-preset-stage-0": "^6.24.1", - "babel-preset-stage-2": "^6.22.0", - "css-loader": "0.28.4", - "expose-loader": "0.7.3", - "extract-text-webpack-plugin": "3.0.0", - "file-loader": "^0.11.2", - "flux": "^3.1.2", - "jquery": "3.1.1", - "mopidy": "^0.5.0", - "node-sass": "^4.5.0", - "react": "15.6.1", - "react-dom": "15.6.1", - "react-fontawesome": "*", - "react-ga": "2.1.2", - "react-redux": "5.0.5", - "react-router": "^3.0.5", - "redux": "3.7.2", - "redux-devtools": "3.4.0", - "redux-thunk": "2.2.0", - "sass-loader": "^6.0.2", - "style-loader": "^0.13.2", - "url-loader": "^0.5.8", - "webpack": "^3.5.1", - "webpack-strip": "0.1.0", - "react-lazyload": "2.2.7" - }, - "scripts": { - "build": "./build.sh", - "dev": "./build.sh && NODE_ENV=development webpack --watch", - "prod": "./build.sh && NODE_ENV=development webpack && NODE_ENV=production webpack", - "release": "./build.sh && NODE_ENV=production webpack && NODE_ENV=development webpack && python setup.py sdist upload -r pypi && ./release.sh" - }, - "devDependencies": { - "webpack": "^3.6.0" - } + "name": "mopidy-iris", + "version": "3.4.5", + "description": "Mopidy HTTP interface", + "repository": "https://github.com/jaedb/iris", + "author": "James Barnsley ", + "license": "ISC", + "bugs": { + "url": "https://github.com/jaedb/Iris/issues" + }, + "main": "app.js", + "dependencies": { + "babel-core": "^6.25.0", + "babel-loader": "^7.1.1", + "babel-preset-es2015": "^6.22.0", + "babel-preset-react": "^6.22.0", + "babel-preset-stage-0": "^6.24.1", + "babel-preset-stage-2": "^6.22.0", + "css-loader": "0.28.4", + "expose-loader": "0.7.3", + "extract-text-webpack-plugin": "3.0.0", + "file-loader": "^0.11.2", + "flux": "^3.1.2", + "jquery": "3.1.1", + "mopidy": "^0.5.0", + "node-sass": "^4.5.0", + "react": "15.6.1", + "react-dom": "15.6.1", + "react-fontawesome": "*", + "react-ga": "2.1.2", + "react-redux": "5.0.5", + "react-router": "^3.0.5", + "redux": "3.7.2", + "redux-devtools": "3.4.0", + "redux-thunk": "2.2.0", + "sass-loader": "^6.0.2", + "style-loader": "^0.13.2", + "url-loader": "^0.5.8", + "webpack": "^3.5.1", + "webpack-strip": "0.1.0", + "react-lazyload": "2.2.7" + }, + "scripts": { + "build": "./build.sh", + "dev": "./build.sh && NODE_ENV=development webpack --watch", + "prod": "./build.sh && NODE_ENV=development webpack && NODE_ENV=production webpack", + "release": "./build.sh && NODE_ENV=production webpack && NODE_ENV=development webpack && python setup.py sdist upload -r pypi && ./release.sh" + } } From bb5620bc2b981256f339d1b4809c6a135ecf0625 Mon Sep 17 00:00:00 2001 From: Robert Arlt Jr Date: Mon, 25 Sep 2017 14:10:46 -0400 Subject: [PATCH 3/3] cleaner win32 support --- mopidy_iris/core.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/mopidy_iris/core.py b/mopidy_iris/core.py index aca8da49..b8c09471 100755 --- a/mopidy_iris/core.py +++ b/mopidy_iris/core.py @@ -10,13 +10,19 @@ from mopidy.core import CoreListener from pkg_resources import parse_version from tornado.escape import json_encode, json_decode +if sys.platform == 'win32': + import ctypes + # import logger logger = logging.getLogger(__name__) class IrisCore(object): version = 0 - is_root = ( os.geteuid() == 0 ) + if sys.platform == 'win32': + is_root = ctypes.windll.shell32.IsUserAnAdmin() != 0 + else: + is_root = os.geteuid() == 0 spotify_token = False queue_metadata = {} connections = {}