Puede que esté buscando en el lugar equivocado, así que disculpen si es así, ¡pero cualquier orientación será muy bienvenida!
Hay algunos hilos en nuestro sitio Discourse que se muestran parcialmente en nuestro sitio web principal. Dado que la versión procesada de una publicación contiene todo el HTML para el lightbox, lo cual no queremos en el sitio principal, estoy trabajando con la versión sin procesar de la publicación.
Una cosa que me está resultando complicada son las URLs de carga de archivos. ¿Cómo puedo convertir una URL upload:// en una URL completa? He intentado buscar y me he encontrado con SHA1 y Base62, pero, aparte de eso, no importa lo que intente, no consigo obtener la URL completa.
Como dije, puede que esté mirando por el lado equivocado, o que haya (probablemente) una forma más sencilla de hacer estas cosas, ¡así que cualquier consejo será bienvenido!
Interesante. No puedo reproducir esto con Javascript. Porque tu último método es una conversión binaria a hexadecimal, pero el resultado de la decodificación base62 no es una representación binaria, según entiendo.
function fromBase62(s) {
var digits = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
var result = 0;
for (var i = 0; i < s.length; i++) {
var p = digits.indexOf(s[i]);
if (p < 0) {
return NaN;
}
result += p * Math.pow(digits.length, s.length - i - 1);
}
return result;
}
Desafortunadamente, ni los métodos bin2hex ni dec2hex ayudan, cuando uso tus cadenas de entrada.
Creé un codesandbox para ese problema si alguien está interesado en jugar con él. El valor final es 1 para mi cadena de entrada, lo cual es incorrecto ;(.
Deberías poder usar binVal.toString(16) para obtener el valor hexadecimal. Sin embargo, ¡creo(!) que el resultado intermedio es demasiado grande para caber en un entero normal.
Gracias por la pista Richard, pero ni siquiera con esa idea estoy avanzando.
No sé, ¿no sería una buena característica tener una configuración del tipo “Habilitar enlaces de carga absolutos en vistas sin procesar (rutas)”? Yo la usaría totalmente en nuestro caso, porque, según entiendo, el acortamiento de URL de carga es solo una optimización de Discourse para reducir código, ¿verdad? No está relacionado con Markdown.
Puedes convertir de base62 a hexadecimal, pero nunca podrás reconstruir completamente la URL de carga sin algún tipo de interfaz a la base de datos de Discourse. La ruta completa a una carga depende del id de la carga, que no se puede determinar a partir de la URL corta.
Como dijo @pfaffman, podríamos ayudarte más si describes tu caso de uso.