win32 support

This commit is contained in:
Robert Arlt Jr
2017-09-25 14:00:02 -04:00
parent 60a560f4b3
commit a4270abb71
3 changed files with 140 additions and 131 deletions

View File

@ -1,83 +1,83 @@
from __future__ import unicode_literals from __future__ import unicode_literals
import logging, os, json import logging, os, json
import tornado.web import tornado.web
import tornado.websocket import tornado.websocket
import handlers import handlers
from mopidy import config, ext from mopidy import config, ext
from frontend import IrisFrontend from frontend import IrisFrontend
from handlers import WebsocketHandler, HttpHandler from handlers import WebsocketHandler, HttpHandler
from core import IrisCore from core import IrisCore
from raven import Client from raven import Client
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
__version__ = '3.4.5' __version__ = '3.4.5'
## ##
# Core extension class # Core extension class
# #
# Loads config and gets the party started. Initiates any additional frontends, etc. # Loads config and gets the party started. Initiates any additional frontends, etc.
## ##
class Extension( ext.Extension ): class Extension( ext.Extension ):
dist_name = 'Mopidy-Iris' dist_name = 'Mopidy-Iris'
ext_name = 'iris' ext_name = 'iris'
version = __version__ version = __version__
def get_default_config(self): def get_default_config(self):
conf_file = os.path.join(os.path.dirname(__file__), 'ext.conf') conf_file = os.path.join(os.path.dirname(__file__), 'ext.conf')
return config.read(conf_file) return config.read(conf_file)
def get_config_schema(self): def get_config_schema(self):
schema = config.ConfigSchema(self.ext_name) schema = config.ConfigSchema(self.ext_name)
schema['enabled'] = config.Boolean() schema['enabled'] = config.Boolean()
schema['country'] = config.String() schema['country'] = config.String()
schema['locale'] = config.String() schema['locale'] = config.String()
schema['authorization_url'] = config.String() schema['authorization_url'] = config.String()
return schema return schema
def setup(self, registry): def setup(self, registry):
# Add web extension # Add web extension
registry.add('http:app', { registry.add('http:app', {
'name': self.ext_name, 'name': self.ext_name,
'factory': iris_factory 'factory': iris_factory
}) })
# create our core instance # create our core instance
mem.iris = IrisCore() mem.iris = IrisCore()
mem.iris.version = self.version mem.iris.version = self.version
# Connect to our Ravent Sentry error tracker # Connect to our Ravent Sentry error tracker
mem.iris.raven_client = Client( mem.iris.raven_client = Client(
dsn='https://023e3bf7721b48f29948545fc36a4621:ba30d29174ef4778ac4e141d445607a2@sentry.io/219026', dsn='https://023e3bf7721b48f29948545fc36a4621:ba30d29174ef4778ac4e141d445607a2@sentry.io/219026',
release=self.version release=self.version
) )
# Add our frontend # Add our frontend
registry.add('frontend', IrisFrontend) registry.add('frontend', IrisFrontend)
def iris_factory(config, core): def iris_factory(config, core):
path = os.path.join( os.path.dirname(__file__), 'static') path = os.path.join( os.path.dirname(__file__), 'static')
return [ return [
(r"/images/(.*)", tornado.web.StaticFileHandler, { (r"/images/(.*)", tornado.web.StaticFileHandler, {
'path': config['local-images']['image_dir'] 'path': config['local-images']['image_dir']
}), }),
(r'/http/([^/]*)', handlers.HttpHandler, { (r'/http/([^/]*)', handlers.HttpHandler, {
'core': core, 'core': core,
'config': config 'config': config
}), }),
(r'/ws/?', handlers.WebsocketHandler, { (r'/ws/?', handlers.WebsocketHandler, {
'core': core, 'core': core,
'config': config 'config': config
}), }),
(r'/(.*)', tornado.web.StaticFileHandler, { (r'/(.*)', tornado.web.StaticFileHandler, {
'path': path, 'path': path,
'default_filename': 'index.html' 'default_filename': 'index.html'
}), }),
] ]

View File

@ -10,13 +10,19 @@ from mopidy.core import CoreListener
from pkg_resources import parse_version from pkg_resources import parse_version
from tornado.escape import json_encode, json_decode from tornado.escape import json_encode, json_decode
if sys.platform == 'win32':
import ctypes
# import logger # import logger
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
class IrisCore(object): class IrisCore(object):
version = 0 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 spotify_token = False
queue_metadata = {} queue_metadata = {}
connections = {} connections = {}

View File

@ -1,49 +1,52 @@
{ {
"name": "mopidy-iris", "name": "mopidy-iris",
"version": "3.4.5", "version": "3.4.5",
"description": "Mopidy HTTP interface", "description": "Mopidy HTTP interface",
"repository": "https://github.com/jaedb/iris", "repository": "https://github.com/jaedb/iris",
"author": "James Barnsley <james@barnsley.nz>", "author": "James Barnsley <james@barnsley.nz>",
"license": "ISC", "license": "ISC",
"bugs": { "bugs": {
"url": "https://github.com/jaedb/Iris/issues" "url": "https://github.com/jaedb/Iris/issues"
}, },
"main": "app.js", "main": "app.js",
"dependencies": { "dependencies": {
"babel-core": "^6.25.0", "babel-core": "^6.25.0",
"babel-loader": "^7.1.1", "babel-loader": "^7.1.1",
"babel-preset-es2015": "^6.22.0", "babel-preset-es2015": "^6.22.0",
"babel-preset-react": "^6.22.0", "babel-preset-react": "^6.22.0",
"babel-preset-stage-0": "^6.24.1", "babel-preset-stage-0": "^6.24.1",
"babel-preset-stage-2": "^6.22.0", "babel-preset-stage-2": "^6.22.0",
"css-loader": "0.28.4", "css-loader": "0.28.4",
"expose-loader": "0.7.3", "expose-loader": "0.7.3",
"extract-text-webpack-plugin": "3.0.0", "extract-text-webpack-plugin": "3.0.0",
"file-loader": "^0.11.2", "file-loader": "^0.11.2",
"flux": "^3.1.2", "flux": "^3.1.2",
"jquery": "3.1.1", "jquery": "3.1.1",
"mopidy": "^0.5.0", "mopidy": "^0.5.0",
"node-sass": "^4.5.0", "node-sass": "^4.5.0",
"react": "15.6.1", "react": "15.6.1",
"react-dom": "15.6.1", "react-dom": "15.6.1",
"react-fontawesome": "*", "react-fontawesome": "*",
"react-ga": "2.1.2", "react-ga": "2.1.2",
"react-redux": "5.0.5", "react-redux": "5.0.5",
"react-router": "^3.0.5", "react-router": "^3.0.5",
"redux": "3.7.2", "redux": "3.7.2",
"redux-devtools": "3.4.0", "redux-devtools": "3.4.0",
"redux-thunk": "2.2.0", "redux-thunk": "2.2.0",
"sass-loader": "^6.0.2", "sass-loader": "^6.0.2",
"style-loader": "^0.13.2", "style-loader": "^0.13.2",
"url-loader": "^0.5.8", "url-loader": "^0.5.8",
"webpack": "^3.5.1", "webpack": "^3.5.1",
"webpack-strip": "0.1.0", "webpack-strip": "0.1.0",
"react-lazyload": "2.2.7" "react-lazyload": "2.2.7"
}, },
"scripts": { "scripts": {
"build": "./build.sh", "build": "./build.sh",
"dev": "./build.sh && NODE_ENV=development webpack --watch", "dev": "./build.sh && NODE_ENV=development webpack --watch",
"prod": "./build.sh && NODE_ENV=development webpack && NODE_ENV=production webpack", "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" "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"
}
} }