API Recuperar URLs relativas de publicaciones

Hola a todos

Estoy usando la API de Discourse para recuperar un Tema / todas sus publicaciones y luego cada publicación y su contenido.

Mis foros están alojados en forums.xxx.com
Utilizo la API para recuperar las publicaciones y colocarlas en mi dominio www.xxx.com y vincularlas de un lado a otro entre los dos.

Todo esto funciona, excepto que el contenido que obtengo utiliza URL relativas. Por lo tanto, un enlace a un usuario (cuando está en el dominio de los foros) sería forums.xxx.com/u/el-usuario.

Cuando extraigo esa publicación a mi dominio www.xxx.com, se vincula a www.xxx.com/u/el-usuario, que obviamente no existe.
El mismo problema se extiende a cualquier emoji o imagen incluida en la publicación: los enlaces están rotos.

¿Hay alguna manera de que los enlaces que llegan (uso contenido: data['cooked']) se vinculen al dominio original?

De hecho, le hice la misma pregunta a ChatGPT y obtuve una respuesta que funcionó de inmediato.

Usando un método auxiliar para reemplazar las URL dentro de los datos procesados.

def update_urls(content)
    forum_domain = 'https://forums.xxx.com'

    # Actualizar atributos href
    content.gsub!(/href=\"(\\/[^\"]*)\"/i) { |match| "href=\"#{forum_domain}#{$1}\"" }

    # Actualizar atributos src
    content.gsub!(/src=\"(\\/[^\"]*)\"/i) { |match| "src=\"#{forum_domain}#{$1}\"" }

    content
  end

Así que lo dejaré aquí para cualquier otra persona. Si alguien tiene una solución más elegante y lista para usar, me interesaría.

2 Me gusta

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.