Mercurial > prosody-modules
comparison mod_ogp/mod_ogp.lua @ 4255:38da10e4b593
mod_ogp: Update parsing logic to catch more cases
author | Seve Ferrer <seve@delape.net> |
---|---|
date | Wed, 18 Nov 2020 13:48:07 +0100 |
parents | a4e182d7ff0a |
children | dbfda7f5522d |
comparison
equal
deleted
inserted
replaced
4254:a4e182d7ff0a | 4255:38da10e4b593 |
---|---|
28 local to = room.jid | 28 local to = room.jid |
29 local from = room and room.jid or module.host | 29 local from = room and room.jid or module.host |
30 local fastening = st.message({to = to, from = from}):tag("apply-to", {xmlns = "urn:xmpp:fasten:0", id = origin_id}) | 30 local fastening = st.message({to = to, from = from}):tag("apply-to", {xmlns = "urn:xmpp:fasten:0", id = origin_id}) |
31 local found_metadata = false | 31 local found_metadata = false |
32 local message_body = "" | 32 local message_body = "" |
33 for property, content in response_body:gmatch(ogp_pattern) do | 33 |
34 module:log("info", property .. "\t" .. content) | 34 local meta_pattern = [[<meta (.-)/?>]] |
35 fastening:tag( | 35 for match in response_body:gmatch(meta_pattern) do |
36 "meta", | 36 local property = match:match([[property=%s*["']?(og:.-)["']?%s]]) |
37 { | 37 if not property then |
38 xmlns = "http://www.w3.org/1999/xhtml", | 38 property = match:match([[property=["']?(og:.-)["']$]]) |
39 property = property, | 39 end |
40 content = content | 40 |
41 } | 41 local content = match:match([[content=%s*["'](.-)["']%s]]) |
42 ):up() | 42 if not content then |
43 found_metadata = true | 43 content = match:match([[content=["']?(.-)["']$]]) |
44 message_body = message_body .. property .. "\t" .. content .. "\n" | 44 end |
45 if not content then | |
46 content = match:match([[content=(.-) property]]) | |
47 end | |
48 if not content then | |
49 content = match:match([[content=(.-)$]]) | |
50 end | |
51 | |
52 if property and content then | |
53 module:log("info", property .. "\t" .. content) | |
54 fastening:tag( | |
55 "meta", | |
56 { | |
57 xmlns = "http://www.w3.org/1999/xhtml", | |
58 property = property, | |
59 content = content | |
60 } | |
61 ):up() | |
62 found_metadata = true | |
63 message_body = message_body .. property .. "\t" .. content .. "\n" | |
64 end | |
45 end | 65 end |
46 for content, property in response_body:gmatch(ogp_pattern2) do | 66 |
47 module:log("info", property .. "\t" .. content) | |
48 fastening:tag( | |
49 "meta", | |
50 { | |
51 xmlns = "http://www.w3.org/1999/xhtml", | |
52 property = property, | |
53 content = content | |
54 } | |
55 ):up() | |
56 found_metadata = true | |
57 message_body = message_body .. property .. "\t" .. content .. "\n" | |
58 end | |
59 | 67 |
60 if found_metadata then | 68 if found_metadata then |
61 mod_muc.get_room_from_jid(room.jid):broadcast_message(fastening) | 69 mod_muc.get_room_from_jid(room.jid):broadcast_message(fastening) |
62 end | 70 end |
63 module:log("info", tostring(fastening)) | 71 module:log("info", tostring(fastening)) |