Sim, acho que essa é provavelmente a melhor opção. Eu comecei a trabalhar nisso em junho de 2020, mas acabou sendo um trabalho enorme, e precisei seguir para outros projetos. Eu tinha algumas abordagens para permitir URLs upload:// em tags <img… nenhuma delas é perfeita. Segundo minhas anotações:
Implementação 1:
Na pipeline de markdown, analisar o conteúdo de cada html_block (um pouco abusando da biblioteca xss.js) e processar qualquer tag de imagem com atributos src upload://.
Prós: tudo na pipeline de markdown, faz esse processamento apenas nos tokens html_block
Contras: meio que fazendo uso indevido do sanitizador xss.js. Pode não ser um analisador HTML5 perfeito
Essa opção poderia ser melhorada usando uma implementação DOM JavaScript compatível com padrões (por exemplo, jsdom) no servidor, mas isso parece bastante pesado.
Implementação 2:
Permitir atributos src upload:// ao longo de toda a pipeline de markdown e substituí-los depois. No cliente, isso é realmente bastante simples — já estávamos substituindo URLs upload:// de forma assíncrona após o cozimento. No servidor, isso faz uma etapa extra de processamento usando Nokogiri.
Prós: o analisador é compatível com os padrões HTML5
Contras: implementação diferente no cliente/servidor, torna a pipeline um pouco mais complexa
Acho que a opção 2 é provavelmente o caminho a seguir. Teremos então que atualizar o job pull_hotlinked_images para manter as tags <img, sem substituí-las por Markdown. Espero conseguir encontrar tempo para voltar a isso em breve ![]()