Mercurial Hosting > linkmystyle
comparison src/facebook.js.luan @ 0:8f4df159f06b
start public repo
| author | Franklin Schmidt <fschmidt@gmail.com> |
|---|---|
| date | Fri, 11 Jul 2025 20:57:49 -0600 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| -1:000000000000 | 0:8f4df159f06b |
|---|---|
| 1 local Luan = require "luan:Luan.luan" | |
| 2 local error = Luan.error | |
| 3 local ipairs = Luan.ipairs or error() | |
| 4 local stringify = Luan.stringify or error() | |
| 5 local String = require "luan:String.luan" | |
| 6 local trim = String.trim or error() | |
| 7 local Table = require "luan:Table.luan" | |
| 8 local copy = Table.copy or error() | |
| 9 local Time = require "luan:Time.luan" | |
| 10 local time_now = Time.now or error() | |
| 11 local Parsers = require "luan:Parsers.luan" | |
| 12 local json_string = Parsers.json_string or error() | |
| 13 local json_parse = Parsers.json_parse or error() | |
| 14 local Http = require "luan:http/Http.luan" | |
| 15 local Shared = require "site:/lib/Shared.luan" | |
| 16 local is_test = not Shared.is_production | |
| 17 local has_facebook = not not Shared.has_facebook | |
| 18 local Utils = require "site:/lib/Utils.luan" | |
| 19 local to_list = Utils.to_list or error() | |
| 20 local User = require "site:/lib/User.luan" | |
| 21 local current_user = User.current or error() | |
| 22 local Facebook = require "site:/lib/Facebook.luan" | |
| 23 local call = Facebook.call or error() | |
| 24 local Logging = require "luan:logging/Logging.luan" | |
| 25 local logger = Logging.logger "facebook.js" | |
| 26 | |
| 27 | |
| 28 local function run() | |
| 29 if not has_facebook or is_test then return end | |
| 30 local user = current_user() | |
| 31 local request = Http.request | |
| 32 local user_data = { | |
| 33 fbp = request.cookies._fbp | |
| 34 fbc = request.cookies._fbc | |
| 35 client_user_agent = request.headers["User-Agent"] | |
| 36 client_ip_address = request.headers["X-Real-IP"] | |
| 37 } | |
| 38 if user ~= nil then | |
| 39 user_data.em = user.email or error() | |
| 40 user_data.external_id = user.id or error() | |
| 41 end | |
| 42 local request_parameters = request.parameters | |
| 43 local event = { | |
| 44 event_id = request_parameters.event_id or error() | |
| 45 event_time = time_now() // 1000 | |
| 46 user_data = user_data | |
| 47 action_source = "website" | |
| 48 event_source_url = request.headers["Referer"] | |
| 49 } | |
| 50 local event_names = request_parameters.event_name or error() | |
| 51 event_names = to_list(event_names) | |
| 52 local events = {} | |
| 53 for _, event_name in ipairs(event_names) do | |
| 54 local ev = copy(event) | |
| 55 ev.event_name = event_name | |
| 56 local props = request_parameters[event_name] | |
| 57 if props ~= nil then | |
| 58 ev.custom_data = json_parse(props) | |
| 59 end | |
| 60 events[#events+1] = ev | |
| 61 end | |
| 62 -- logger.info(stringify(events)) | |
| 63 try | |
| 64 local result = call(events) | |
| 65 logger.info(result) | |
| 66 catch e | |
| 67 local response_content = e.response_content | |
| 68 try | |
| 69 response_content = stringify(json_parse(response_content)) | |
| 70 catch e2 | |
| 71 end | |
| 72 logger.error(e.."\nresponse_content = "..e.response_content.."\nevents = "..stringify(events).."\n"..trim(request.raw_head).."\n") | |
| 73 end | |
| 74 end | |
| 75 | |
| 76 return function() | |
| 77 try | |
| 78 run() | |
| 79 catch e | |
| 80 logger.error(e.."\n"..trim(Http.request.raw_head).."\n") | |
| 81 end | |
| 82 end |
