mirror of
https://github.com/DeviceFarmer/stf.git
synced 2026-04-23 17:25:23 +02:00
Add HTTP API proxy.
This commit is contained in:
@@ -1,11 +1,13 @@
|
||||
var assert = require('assert')
|
||||
var util = require('util')
|
||||
var http = require('http')
|
||||
|
||||
var Promise = require('bluebird')
|
||||
var zmq = require('zmq')
|
||||
var adbkit = require('adbkit')
|
||||
var monkey = require('adbkit-monkey')
|
||||
var request = Promise.promisifyAll(require('request'))
|
||||
var httpProxy = require('http-proxy')
|
||||
|
||||
var logger = require('../util/logger')
|
||||
var wire = require('../wire')
|
||||
@@ -159,6 +161,8 @@ module.exports = function(options) {
|
||||
.then(function(conn) {
|
||||
conn.end()
|
||||
var ours = options.ports.pop()
|
||||
, everyones = options.ports.pop()
|
||||
, url = util.format('http://127.0.0.1:%d', ours)
|
||||
return adb.forwardAsync(
|
||||
options.serial
|
||||
, util.format('tcp:%d', ours)
|
||||
@@ -166,10 +170,7 @@ module.exports = function(options) {
|
||||
)
|
||||
.then(function() {
|
||||
return request.getAsync({
|
||||
url: util.format(
|
||||
'http://127.0.0.1:%d/api/v1/displays/0'
|
||||
, ours
|
||||
)
|
||||
url: util.format('%s/api/v1/displays/0', url)
|
||||
, json: true
|
||||
})
|
||||
})
|
||||
@@ -177,6 +178,40 @@ module.exports = function(options) {
|
||||
assert.ok('id' in args[1], 'Invalid response from HTTP API')
|
||||
identity.display = args[1]
|
||||
})
|
||||
.then(function() {
|
||||
var resolver = Promise.defer()
|
||||
|
||||
var proxy = httpProxy.createProxyServer({
|
||||
target: url
|
||||
, ws: false
|
||||
, xfwd: false
|
||||
})
|
||||
|
||||
var proxyServer = http.createServer(proxy.web)
|
||||
.listen(everyones)
|
||||
|
||||
proxyServer.on('listening', resolver.resolve)
|
||||
proxyServer.on('error', resolver.reject)
|
||||
|
||||
return resolver.promise.finally(function() {
|
||||
proxyServer.removeListener('listening', resolver.resolve)
|
||||
proxyServer.removeListener('error', resolver.reject)
|
||||
vitals.add('device:http:proxy', proxyServer)
|
||||
})
|
||||
})
|
||||
.then(function() {
|
||||
log.info(
|
||||
'HTTP API proxy running on "http://%s:%s"'
|
||||
, options.publicIp
|
||||
, everyones
|
||||
)
|
||||
|
||||
identity.display.url = util.format(
|
||||
'http://%s:%s/api/v1/displays/0/screenshot.jpg'
|
||||
, options.publicIp
|
||||
, everyones
|
||||
)
|
||||
})
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user