Mercurial Hosting > linkmystyle
view src/facebook.js.luan @ 1:2776f06236b4
add source.html
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Fri, 11 Jul 2025 21:17:19 -0600 |
parents | 8f4df159f06b |
children |
line wrap: on
line source
local Luan = require "luan:Luan.luan" local error = Luan.error local ipairs = Luan.ipairs or error() local stringify = Luan.stringify or error() local String = require "luan:String.luan" local trim = String.trim or error() local Table = require "luan:Table.luan" local copy = Table.copy or error() local Time = require "luan:Time.luan" local time_now = Time.now or error() local Parsers = require "luan:Parsers.luan" local json_string = Parsers.json_string or error() local json_parse = Parsers.json_parse or error() local Http = require "luan:http/Http.luan" local Shared = require "site:/lib/Shared.luan" local is_test = not Shared.is_production local has_facebook = not not Shared.has_facebook local Utils = require "site:/lib/Utils.luan" local to_list = Utils.to_list or error() local User = require "site:/lib/User.luan" local current_user = User.current or error() local Facebook = require "site:/lib/Facebook.luan" local call = Facebook.call or error() local Logging = require "luan:logging/Logging.luan" local logger = Logging.logger "facebook.js" local function run() if not has_facebook or is_test then return end local user = current_user() local request = Http.request local user_data = { fbp = request.cookies._fbp fbc = request.cookies._fbc client_user_agent = request.headers["User-Agent"] client_ip_address = request.headers["X-Real-IP"] } if user ~= nil then user_data.em = user.email or error() user_data.external_id = user.id or error() end local request_parameters = request.parameters local event = { event_id = request_parameters.event_id or error() event_time = time_now() // 1000 user_data = user_data action_source = "website" event_source_url = request.headers["Referer"] } local event_names = request_parameters.event_name or error() event_names = to_list(event_names) local events = {} for _, event_name in ipairs(event_names) do local ev = copy(event) ev.event_name = event_name local props = request_parameters[event_name] if props ~= nil then ev.custom_data = json_parse(props) end events[#events+1] = ev end -- logger.info(stringify(events)) try local result = call(events) logger.info(result) catch e local response_content = e.response_content try response_content = stringify(json_parse(response_content)) catch e2 end logger.error(e.."\nresponse_content = "..e.response_content.."\nevents = "..stringify(events).."\n"..trim(request.raw_head).."\n") end end return function() try run() catch e logger.error(e.."\n"..trim(Http.request.raw_head).."\n") end end