59 lines
1.3 KiB
Ruby
59 lines
1.3 KiB
Ruby
class AsciicastParams
|
|
|
|
def initialize(params, headers)
|
|
@params = params
|
|
@headers = headers
|
|
end
|
|
|
|
def to_h
|
|
attributes = {
|
|
stdout_data: params[:stdout],
|
|
stdout_timing: params[:stdout_timing],
|
|
stdin_data: params[:stdin],
|
|
stdin_timing: params[:stdin_timing],
|
|
username: meta['username'],
|
|
duration: meta['duration'],
|
|
recorded_at: meta['recorded_at'],
|
|
title: meta['title'],
|
|
command: meta['command'],
|
|
shell: meta['shell'],
|
|
terminal_lines: meta['term']['lines'],
|
|
terminal_columns: meta['term']['columns'],
|
|
terminal_type: meta['term']['type'],
|
|
}
|
|
|
|
if meta['uname']
|
|
attributes[:uname] = meta['uname']
|
|
else
|
|
attributes[:user_agent] = headers['User-Agent']
|
|
end
|
|
|
|
assign_user_or_token(attributes, meta)
|
|
|
|
attributes
|
|
end
|
|
|
|
private
|
|
|
|
attr_reader :params, :headers
|
|
|
|
def meta
|
|
@meta ||= JSON.parse(params[:meta].read)
|
|
end
|
|
|
|
def assign_user_or_token(attributes, meta)
|
|
token = meta['user_token']
|
|
|
|
if token.present?
|
|
api_token = ApiToken.find_by_token(token)
|
|
|
|
if api_token
|
|
attributes[:user_id] = api_token.user_id
|
|
else
|
|
attributes[:api_token] = token
|
|
end
|
|
end
|
|
end
|
|
|
|
end
|