| #------------------------------------------------------------------------------- |
| # Licensed to the Apache Software Foundation (ASF) under one |
| # or more contributor license agreements. See the NOTICE file |
| # distributed with this work for additional information |
| # regarding copyright ownership. The ASF licenses this file |
| # to you under the Apache License, Version 2.0 (the |
| # "License"); you may not use this file except in compliance |
| # with the License. You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, |
| # software distributed under the License is distributed on an |
| # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| # KIND, either express or implied. See the License for the |
| # specific language governing permissions and limitations |
| # under the License. |
| #------------------------------------------------------------------------------- |
| |
| _ = require('underscore') |
| |
| weinre = require '../weinre' |
| utils = require '../utils' |
| channelManager = require '../channelManager' |
| serviceManager = require '../serviceManager' |
| extensionManager = require '../extensionManager' |
| |
| WeinreClientEvents = serviceManager.get 'WeinreClientEvents' |
| |
| #------------------------------------------------------------------------------- |
| module.exports = utils.registerClass class WeinreClientCommands |
| |
| #--------------------------------------------------------------------------- |
| registerClient: (channel, callbackId) -> |
| if callbackId |
| WeinreClientEvents.sendCallback(channel, callbackId, channel.description) |
| |
| options = _.extend {}, utils.options |
| for own key, val of options |
| if typeof val in ['number', 'boolean'] |
| options[key] = "#{val}" |
| |
| options.version = weinre.getVersion() |
| |
| WeinreClientEvents.serverProperties(channel, options) |
| |
| clients = channelManager.getClientChannels(channel.id) |
| WeinreClientEvents.clientRegistered(clients, channel.description) |
| |
| #--------------------------------------------------------------------------- |
| getTargets: (channel, callbackId) -> |
| channels = channelManager.getTargetChannels(channel.id) |
| result = _.pluck(channels, 'description') |
| |
| if callbackId |
| WeinreClientEvents.sendCallback(channel, callbackId, [result]) |
| |
| #--------------------------------------------------------------------------- |
| getClients: (channel, callbackId) -> |
| channels = channelManager.getClientChannels(channel.id) |
| result = _.pluck(channels, 'description') |
| |
| if callbackId |
| WeinreClientEvents.sendCallback(channel, callbackId, [result]) |
| |
| #--------------------------------------------------------------------------- |
| getExtensions: (channel, callbackId) -> |
| result = for extension in extensionManager.extensions |
| { startPage: "extensions/#{extension}/extension.html" } |
| |
| if callbackId |
| WeinreClientEvents.sendCallback(channel, callbackId, [result]) |
| |
| #--------------------------------------------------------------------------- |
| connectTarget: (channel, clientName, targetName, callbackId) -> |
| client = channelManager.getChannel(clientName) |
| return if !client |
| |
| target = channelManager.getChannel(targetName) |
| return if !target |
| |
| channelManager.connectChannels(client, target) |
| |
| if callbackId |
| WeinreClientEvents.sendCallback(channel, callbackId) |
| |
| #--------------------------------------------------------------------------- |
| disconnectTarget: (channel, clientName, callbackId) -> |
| client = connectionManager.getClient(clientName) |
| return if !client |
| |
| target = client.getConnectedTarget() |
| return if !target |
| |
| connectionManager.disconnect(client, target) |
| |
| if callbackId |
| WeinreClientEvents.sendCallback(channel, callbackId) |
| |
| #--------------------------------------------------------------------------- |
| logDebug: (channel, message, callbackId) -> |
| utils.logVerbose "client #{channel.name}: #{message}" |
| |
| if callbackId |
| WeinreClientEvents.sendCallback(channel, callbackId) |
| |
| #--------------------------------------------------------------------------- |
| logInfo: (channel, message, callbackId) -> |
| utils.log "client #{channel.name}: #{message}" |
| |
| if callbackId |
| WeinreClientEvents.sendCallback(channel, callbackId) |
| |
| #--------------------------------------------------------------------------- |
| logWarning: (channel, message, callbackId) -> |
| utils.log "client #{channel.name}: #{message}" |
| |
| if callbackId |
| WeinreClientEvents.sendCallback(channel, callbackId) |
| |
| #--------------------------------------------------------------------------- |
| logError: (channel, message, callbackId) -> |
| utils.log "client #{channel.name}: #{message}" |
| |
| if callbackId |
| WeinreClientEvents.sendCallback(channel, callbackId) |