mirror of
https://github.com/overleaf/overleaf.git
synced 2025-03-22 02:04:31 +00:00
added sixpack to server side
This commit is contained in:
parent
3a61f48068
commit
377cc11c3b
3 changed files with 102 additions and 0 deletions
99
services/web/app/coffee/infrastructure/Sixpack.coffee
Normal file
99
services/web/app/coffee/infrastructure/Sixpack.coffee
Normal file
|
@ -0,0 +1,99 @@
|
|||
settings = require("settings-sharelatex")
|
||||
request = require("request")
|
||||
logger = require("logger-sharelatex")
|
||||
|
||||
generate_client_id = ->
|
||||
# from http://stackoverflow.com/questions/105034
|
||||
'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace /[xy]/g, (c) ->
|
||||
r = Math.random() * 16 | 0
|
||||
v = if c == 'x' then r else r & 0x3 | 0x8
|
||||
v.toString 16
|
||||
|
||||
_request_uri = (endpoint, params) ->
|
||||
query_string = []
|
||||
e = encodeURIComponent
|
||||
for key of params
|
||||
if params.hasOwnProperty(key)
|
||||
vals = params[key]
|
||||
if Object::toString.call(vals) != '[object Array]'
|
||||
vals = [ vals ]
|
||||
i = 0
|
||||
while i < vals.length
|
||||
query_string.push e(key) + '=' + e(vals[i])
|
||||
i += 1
|
||||
if query_string.length
|
||||
endpoint += '?' + query_string.join('&')
|
||||
endpoint
|
||||
|
||||
_request = (uri, params, callback)->
|
||||
opts =
|
||||
uri:_request_uri(uri, params)
|
||||
json:true
|
||||
timeout:1000
|
||||
request.get opts, (err, res, body)->
|
||||
callback err, body
|
||||
|
||||
module.exports = sixpack =
|
||||
|
||||
client: (user_id)->
|
||||
client = new sixpack.Session(user_id, settings.apis.sixpack.url)
|
||||
return client
|
||||
|
||||
Session : (client_id, base_url, ip_address, user_agent) ->
|
||||
|
||||
@client_id = client_id or sixpack.generate_client_id()
|
||||
@base_url = base_url or sixpack.base_url
|
||||
|
||||
participate: (experiment_name, alternatives, force, callback) =>
|
||||
if typeof force == 'function'
|
||||
callback = force
|
||||
force = null
|
||||
if !/^[a-z0-9][a-z0-9\-_ ]*$/.test(experiment_name)
|
||||
return callback(new Error('Bad experiment_name'))
|
||||
if alternatives.length < 2
|
||||
return callback(new Error('Must specify at least 2 alternatives'))
|
||||
i = 0
|
||||
while i < alternatives.length
|
||||
if !/^[a-z0-9][a-z0-9\-_ ]*$/.test(alternatives[i])
|
||||
return callback(new Error('Bad alternative name: ' + alternatives[i]))
|
||||
i += 1
|
||||
params =
|
||||
client_id: @client_id
|
||||
experiment: experiment_name
|
||||
alternatives: alternatives
|
||||
|
||||
if force != null and _in_array(alternatives, force)
|
||||
return callback(null,
|
||||
'status': 'ok'
|
||||
'alternative': 'name': force
|
||||
'experiment':
|
||||
'version': 0
|
||||
'name': experiment_name
|
||||
'client_id': @client_id)
|
||||
|
||||
_request @base_url + '/participate', params, (err, res) ->
|
||||
if err?
|
||||
res =
|
||||
status: 'failed'
|
||||
error: err
|
||||
alternative: name: alternatives[0]
|
||||
callback null, res
|
||||
|
||||
convert: (experiment_name, callback)=>
|
||||
if !/^[a-z0-9][a-z0-9\-_ ]*$/.test(experiment_name)
|
||||
return callback(new Error('Bad experiment_name'))
|
||||
params =
|
||||
client_id: @client_id
|
||||
experiment: experiment_name
|
||||
if @ip_address
|
||||
params.ip_address = @ip_address
|
||||
if @user_agent
|
||||
params.user_agent = @user_agent
|
||||
_request @base_url + '/convert', params, (err, res) ->
|
||||
if err?
|
||||
res =
|
||||
status: 'failed'
|
||||
error: err
|
||||
callback null, res
|
||||
|
||||
|
|
@ -104,6 +104,8 @@ module.exports =
|
|||
url: "http://localhost:3026"
|
||||
contacts:
|
||||
url: "http://localhost:3036"
|
||||
sixpack:
|
||||
url: ""
|
||||
|
||||
templates:
|
||||
user_id: process.env.TEMPLATES_USER_ID or "5395eb7aad1f29a88756c7f2"
|
||||
|
|
|
@ -47,6 +47,7 @@
|
|||
"sanitizer": "0.1.1",
|
||||
"session.socket.io": "0.1.4",
|
||||
"settings-sharelatex": "git+https://github.com/sharelatex/settings-sharelatex.git#v1.0.0",
|
||||
"sixpack-client": "^1.0.0",
|
||||
"socket.io": "0.9.16",
|
||||
"translations-sharelatex": "git+https://github.com/sharelatex/translations-sharelatex.git#master",
|
||||
"underscore": "1.6.0",
|
||||
|
|
Loading…
Reference in a new issue