FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
Vuestra opinión sobre el API XML-RPC de una aplicación
Hola,
Sí; no se me escapa que el lugar de este Hilo y el título del mismo pueden dejar que desear... pero es que no sabía exactamente dónde ponerlo ni cómo titularlo. En mi descargo diré que lo situé en Internet porque tiene que ver con Delphi e Internet, y que no lo titulé "Ayuda please", como hacen otros. Intentaré no enrollarme demasiado. Lo malo es que voy a tener que nombrar lo que prometí no nombrar hace tiempo... y la única excusa que puedo poner es que al fin y al cabo trasgredí dicha promesa tantas veces ya que, bueno, qué le vamos a hacer, podría decirse. Bicho, lo siento. Sé indulgente, please. Llevaba tiempo planteándome la implementación de un API (Application Programming Interface) para Loturak (¡ajá!) y bueno, luego de darle unas cuentas vueltas por mi cuenta al final el tema ha resultado ser menos complicado de lo que yo lo veía, sin duda por desconocimiento. Al final he optado por utilizar el protocolo XML-RPC (XML Remote Procedure Call), puesto que me constaba que proyectos como WordPress hacían uso de la librería Incutio XML-RPC Library para PHP, que ha resultado ser una estupenda forma de implementar el Servidor XML-RPC que necesitaba para Loturak. La librería consta de un sólo archivo (en su página Web hay buena documentación sobre la misma) que a su vez contiene las clases necesarias para manejarse desde PHP con el protocolo de marras; cuenta con clases para implementar Servidores (de diversos tipos) y clientes (también de diversos tipos) muy sencillamente. Planteado el Servidor XML-RPC de Loturak (¡ajá!) quedaba la implementación de los posibles clientes que hicieran uso de los métodos que el primero exponga. Tras salvar algunos obstáculos como pueda ser la autentificación del usuario (al final he seguido casi a pies juntillas el procedimiento empleado por WordPress) he preparado ejemplos escritos en PHP para utilizar el Servidor XML-RPC. Para ello he utilizado la propia librería Incutio XML-RPC, como digo, hasta el momento, con excelentes resultados. Empero, que pueda interactuarse con Loturak desde PHP está bien, seguramente, mas mi objetivo era hacerlo desde otros lenguajes... como por ejemplo el propio Delphi. En PHP hay distintas implementaciones del protocolo XML-RPC, para otros lenguajes existen también posibilidades, y, para Delphi en concreto, encontré la librería Delphi XML-RPC, cuya versión 2.0 (del año 2003) he utilizado con buenos resultados para lo que nos ocupa. Como el código fuente de Loturak (¡ajá!) está disponible para su descarga podéis, si os place, echar un vistazo a todo esto de que vengo hablando. En la carpeta "scripts" del código fuente encontraréis ejemplos de uso del todavía proyecto de Servidor XML-RPC escritos tanto en PHP como en Delphi. El propio Servidor... para los que tengáis ganas de echar un vistazo lo encontraréis en la carpeta "www/api/xmlrpc.php". Vale. El caso es que ahora mismo contamos en el Servidor XML-RPC de Loturak (¡ajá, ajá!) con tres métodos, tres, que es posible utilizar "remotamente" por aplicaciones de terceros. Estos tres métodos, tres, pueden verse documentados en el nuevo apartado que hemos añadido a la Web: Interfaz de Loturak para programadores. Dos de los métodos son, podría decirse, para probar... se trata de los métodos "HolaMundo" y "HoraServidor". El tercer método ya se mete un poco más en harina y permite insertar un enlace en Loturak (dentro de la cuenta de un determinado usuario, cuyo login y contraseña habrá que especificar convenientemente) con su título, url, etiquetas, descripción, etc. Pues bien, el objetivo de este Hilo es que me déis vuestras opiniones... quiero decir, aquello de ¿qué le falta? ¿qué le sobra? Me gustaría que vosotros, aprovechando la confianza que tengo aquí, desde el punto de vista de programadores, expusiérais aquí los métodos que para vosotros tendría que contar el API de Loturak para que se conviertiera en algo realmente útil. Creo que podemos además sacar algunas conclusiones relacionadas con todo esto, puesto que a mí, desde luego, esto de que las aplicaciones Web se dejen "tocar" desde fuera es una idea que me parece estupenda. Así que podemos tratar de todo esto, siempre que os apetezca. Si tenéis cualquier pregunta que creáis que puedo responder; si albergáis cualquier duda acerca de lo que he comentado aquí huelga decir que estaré encantado de recibirla y responder, si es el caso, lo mejor que sepa y pueda. Y no voy a decir mucho más, porque luego todo se sabe. Cualquier aclaración, como digo, ya podéis añadirla a este Hilo. Eso es todo. Que paséis un buen fin de semana y que os portéis bien. Ah, y gracias por todo de antemano. Sois los mejores. Actualización: Solicito vuestra ayuda y opiniones porque, sin ir más lejos, ayer se me ocurrió un método que nombré "UltimoEnlace", que terminé implementando en el Servidor, y para el que escribí un ejemplo en Delphi que funcionaba bien y todo, pero, al cabo he pensado que qué significa ese método ahí... qué utilidad real tenía... al cabo lo desestimé hasta encontrar algo verdaderamente útil, como me lo ha parecido el método "InsertarEnlace", pero, claro,... este sólo parece muy solo, ¿no? Segunda actualización: Ya añadí un nuevo método "ActualizarEnlace", que puede usarse para actualizar enlaces conociendo el ID de estos. Última edición por dec fecha: 02-12-2006 a las 14:36:55. |
#2
|
||||
|
||||
Hola David:
Impresionante el trabajo que estas haciendo en loturak ( yo lo puedo decir, estoy libre de toda sospecha de spam). Ya comente por aquí alguna vez que de php no se nada, así que no podía jugar con tu proyecto, loturak (¡ajá!), pero ahora que ya nos metemos en Delphi es momento de que meta un poco el dedo y espero no romper nada. Así que poco después de publicar tu mensaje, me puse manos a la obra. Me leí por encima la ayuda sobre IXMLDocument, y me dispuse a reinventar la rueda. No lo puedo evitar, podía usar la librería que recomiendas (Delphi XML-RPC) pero así ya no es tan divertido. Bueno, dejen sitio que estoy reinventando la rueda
Bueno, ahí dejo esto. No es que aporte nada, pero tenia ganas de jugar un poco. Ayer poco después de colocar tu mensaje, deje de poder acceder a la pagina del club y la de loturak (¡ajá!), no se el motivo. Así que mientras esperaba probé a mandar peticiones a flickr, lo que hace el aburrimiento Perdona que me metiera en el hilo para no aportar nada, pero como ya dije arriba el aburrimiento es muy malo. PD: Para calcular el md5 use la siguiente unit, hecha por mi para mi mismo, así que si alguien la necesita la puede usar sin problemas. |
#3
|
||||
|
||||
Hola,
Es estupendo Domingo. Un código estupendo, como siempre. Todo funciona perfectamente, lo he podido comprobar. Te agradezco mucho el trabajo que te has tomado. Me he permitido hacer algunos cambios en los ejemplos para Delphi que se incluyen en el código fuente de Loturak (¡ajá!). Básicamente he sustituido las unidades "MD5" y "UDobleMD5" por tu unidad "Hashes". He actualizado los ejemplos "InsertarEnlace" y "ActualizarEnlace", por tanto, para que ahora utilizen la unidad "Hashes". Por otro lado he adaptado la interfaz del ejemplo "InsertarEnlace" de modo que ahora utiliza el código que propones más arriba, como puedes comprobar. Es decir, ahora mismo existen cinco ejemplos para Delphi: - HolaMundo (con la librería Delphi XML-RPC) - HoraServidor ("" "") - InsertarEnlace ("" "") - ActualizarEnlace ("" "") - InsertarEnlace (con el código que has propuesto) En fin. Que muchas gracias por todo. Realmente creo que la librería Delphi XML-RPC es bastante curiosa (echa un vistazo a los ejemplos que la utilizan, puesto que los he adecentado un poco esta misma tarde y a lo mejor tú no los has visto todavía como están ahora), y podría ser una buena forma de montar una aplicación en Delphi que interactuase con... ¡ajá!, pero, eso no quita ni un ápice de mérito a tu trabajo, que ya está incluído en el código fuente de Loturak, como he dicho. Vale. Nos leemos. Gracias otra vez Domingo. Gracias a todos. Última edición por dec fecha: 02-12-2006 a las 19:52:40. |
#4
|
||||
|
||||
Hola,
Yo sigo aquí un poco a mi bola, lo reconozco. En esta ocasión me gustaría comentaros cómo pienso implementar el método "EnlacesUsuario", mejor dicho, cómo he pensado implementarlo, para que me podáis dar vuestra opinión si lo creéis conveniente. ¿Eh? Pues eso. El método "EnlacesUsuario" trataría de retornar los enlaces de un determinado usuario de Loturak, de modo que pudieran listarse en una aplicación, por ejemplo. Mi idea es no retornar todos los enlaces al mismo tiempo, puesto que no existe límites para los enlaces que un usuario puede albergar, la consulta en cuestión podría costar más de la cuenta. Así que me planteo utilizar la cláusula "LIMIT" de MySQL, de modo que el método "EnlacesUsuario" retorne los datos de los enlaces de un usuario poco a poco, de veinte en veinte, he pensado, de diez en diez, acaso, pero, claro, me atrapan algunas dudas, porque al cabo "más peticiones" pueden acaso ser tan costosas como una consulta "grande". Esto último creo que no es del todo así. Me explico. No se trata de que en el primer caso pudiera darse una consulta "grande", es que podría darse una consulta "verdaderamente grande". Es decir, una consulta que retornara los miles de enlaces... pasaría de grande para considerarse algo desorbitado, desaconsejable al cien por cien. Entonces, teniendo claro que el método "EnlacesUsuario" debe retornar los enlaces "poco a poco" hay que meter mano a este asunto y se me ocurre lo siguiente. El método recibiría un Array de datos como único parámetro, como en los métodos "InsertarEnlace" y "ActualizarEnlace". Los elementos de dicho Array numérico, por cierto, podrían quedar tal que así, por orden: - string Login del usuario - string Contraseña del usuario - integer Límite inferior para la consulta de enlaces Una vez el usuario sea autentificado contaremos con su correspondiente ID de usuario. Es decir, la idea sería terminar conformando una consulta SQL como la siguiente (utilizo el * por abreviar):
O sea, que el método "EnlacesUsuario" retornaría 20 enlaces del usuario a partir del límite inferior que se indique. La primera llamada al método, los primeros 20 enlaces, se conseguirían indicando como límite inferior "0", los 20 siguientes se obtendrían indicando como límite inferior "20", los siguientes 20 enlaces indicando como límite inferior "40" y así sucesivamente. Ahora bien, ¿cómo véis vosotros todo esto? ¿Os parece la mejor forma de implementar el método "EnlacesUsuario"? ¿Tal vez tengáis alguna idea de cómo podría mejorarse el asunto? Cualquier cosa que se os ocurra será bienvenida y se agradece desde ya mismo. O sea. Sabed que cualquier otro comentario en relación a lo que tratamos en este Hilo sería igualmente bienvenido: añadir un método que consideréis puede dar juego, sugerencias, comentarios, críticas, lo que queráis. En fin. Eso es todo por el momento. Gracias a todos otra vez. Que paséis un buen fin de semana. PD. Seoane, si has llegado hasta aquí y esto lees, coméntame qué te parece del ejemplo que he añadido basándome (je, je, je) en el código que más arriba publicaste. Ya sabes que si quieres que añada cualquier referencia, que quite algo, que añada cualquier cosa, no tienes más que decirlo. Última edición por dec fecha: 02-12-2006 a las 21:55:43. |
#5
|
||||
|
||||
Cita:
En cuanto a lo de agregar el código a tus ejemplos, la verdad me siento abrumado, solo era una pequeña diversión y vas tu y lo colocas en tu web . Estoy encantado de que me menciones en tu pagina, por mi perfecto. Solo comentarte que con las prisas en la unidad Hash me olvide de borrar la función SHGetFolderPath que no uso para nada, pero con esto de cortar y pegar .... Y el ejemplo me parece bien, como no tengo el componente TSpinEdit tuve que colocar el puerto fijo, y me fije que tienes por defecto la dirección localhost y una Uri que me supongo es local y que usas para las pruebas. Por el resto, esta bien, todo lo bien que le permite mi chapuza de código |
#6
|
||||||||||||
|
||||||||||||
Hola,
A ver. Gracias por vuestros comentarios. De veras que son muy útiles para continuar adelante. Vayamos por partes, pues, como dijo Jack el destripador. Cita:
Cita:
En en el caso de Loturak no se da límite a la hora de importar enlaces, ni tampoco al exportarlos, y esto me preocupa. No acuciantemente, porque Loturak no es demasiado utilizada y el usuario que más enlaces tiene cuenta con unos 600. Con estas cifras, la importación y exportación de enlaces es plausible hasta el momento, a lo menos con las pruebas que he ido realizando en este sentido. Lo que se me ha ocurrido últimamente sobre esto es no limitar el número de enlaces que puede tener un usuario, pero sí los que puede importar y exportar "de un golpe"; pienso en una cifra razonable, digamos de 500 a 1.000 enlaces. En fin. Es algo que todavía está verde y para lo que también acepto vuestras sugerencias, si véis otra forma de burlar este problema, si no lo véis un problema, etc. Respecto del API ocurriría algo parecido. Habría que limitarla o controlarla de algún modo, no ahora, porque no tendrá mucho uso (de hecho las pruebas las realizo casi todas "en local", y mi deseo sería que quien probase la API o se planteara realizar una aplicación hiciera lo mismo: instalara Loturak (¡ajá!) en su sistema e hiciera las pruebas allí mismo. Al fin y al cabo Loturak se comportará igual "en local" que en el Sevidor, y así las pruebas "en local" serán perfectamente "válidas", pueden servir perfectamente. Cita:
Cita:
En todo caso la API está muy, muy verde aún. Seoane dice que se atreve a hacer algo con ella... es posible que a mí también se me ocurriera algo, pero, reconozco que aún le queda mucho a ese API para que pueda ser considerado algo más o menos digno de llamarse así. Para eso estoy aquí, entre otras cosas, para ver qué pensáis vosotros, como programadores, que podría añadirse a dicho API para que diera cierto juego y pudieraservir de algo a alguien. Quiero decir que te sientas libre, Mario, de indicarme qué le falta, según tú, al API en ciernes, porque, seguramente serán cosas interesantes que acaso convenga tener en cuenta. Ahora, el que para usar determinados métodos del API sea preciso usar un usuario y una contraseña... es necesario, por las características de la aplicación. Piensa en un cliente de correo electrónico, que ha de solicitar al usuario su dirección de correo y su contraseña, pues, ¿cómo sino iba a llevar a cabo su trabajo de gestionar el correo? Guardando todas las distancias, claro. Cita:
Cita:
Cita:
Cita:
Cita:
Bueno. Gracias por tus comentarios Mario. Resultarán muy útiles. Cita:
http://www.loturak.es/rss2?e=Delphi La anterior URL retornaría en formato RSS los últimos 20 enlaces publicados en Loturak con la etiqueta Delphi. Y, por otro lado: http://www.loturak.es/rss2?u=seoane Que retornará los últimos 20 enlaces añadidos por el usuario Seoane en Loturak, no sé si te suena. ¿Qué te parece? ¡Tato pensao! Cita:
[quote=Seoane] Solo comentarte que con las prisas en la unidad Hash me olvide de borrar la función SHGetFolderPath que no uso para nada, pero con esto de cortar y pegar .... [quote] ¿Lo dices por mí, verdad? Je, je, je... yo sí que he copiado y he pegado esta vez... Bueno. Procuraré corregir eso luego luego. Cita:
En cuanto al "Host" de los ejemplos, efectivamente, se trata del Servidor local que utilizo para las pruebas. Y de la chapuza de tu código... eso que lo dices tú. Estoy seguro de que a más gente, además de a un servidor, le parece todo lo contrario. Te lo agradezco otra vez Domingo. Y termino ya... ¡que menudo rollo he soltado! Reconozco que si alguien considera todo esto "demasiado" está en su perfecto derecho. Nada que objetar... gracias otra vez a todos. Nos leemos. PD. Al enviar este mensaje me encuentro con el límite de caritas... así que las he quitado todas... pero para vengarme ahora, aquí: Última edición por dec fecha: 02-12-2006 a las 23:40:29. |
#7
|
||||||||||||
|
||||||||||||
Hola,
A ver. Gracias por vuestros comentarios. De veras que son muy útiles para continuar adelante. Vayamos por partes, pues, como dijo Jack el destripador. Cita:
Cita:
En en el caso de Loturak no se da límite a la hora de importar enlaces, ni tampoco al exportarlos, y esto me preocupa. No acuciantemente, porque Loturak no es demasiado utilizada y el usuario que más enlaces tiene cuenta con unos 600. Con estas cifras, la importación y exportación de enlaces es plausible hasta el momento, a lo menos con las pruebas que he ido realizando en este sentido. Lo que se me ha ocurrido últimamente sobre esto es no limitar el número de enlaces que puede tener un usuario, pero sí los que puede importar y exportar "de un golpe"; pienso en una cifra razonable, digamos de 500 a 1.000 enlaces. En fin. Es algo que todavía está verde y para lo que también acepto vuestras sugerencias, si véis otra forma de burlar este problema, si no lo véis un problema, etc. Respecto del API ocurriría algo parecido. Habría que limitarla o controlarla de algún modo, no ahora, porque no tendrá mucho uso (de hecho las pruebas las realizo casi todas "en local", y mi deseo sería que quien probase la API o se planteara realizar una aplicación hiciera lo mismo: instalara Loturak (¡ajá!) en su sistema e hiciera las pruebas allí mismo. Al fin y al cabo Loturak se comportará igual "en local" que en el Sevidor, y así las pruebas "en local" serán perfectamente "válidas", pueden servir perfectamente. Cita:
Cita:
En todo caso la API está muy, muy verde aún. Seoane dice que se atreve a hacer algo con ella... es posible que a mí también se me ocurriera algo, pero, reconozco que aún le queda mucho a ese API para que pueda ser considerado algo más o menos digno de llamarse así. Para eso estoy aquí, entre otras cosas, para ver qué pensáis vosotros, como programadores, que podría añadirse a dicho API para que diera cierto juego y pudieraservir de algo a alguien. Quiero decir que te sientas libre, Mario, de indicarme qué le falta, según tú, al API en ciernes, porque, seguramente serán cosas interesantes que acaso convenga tener en cuenta. Ahora, el que para usar determinados métodos del API sea preciso usar un usuario y una contraseña... es necesario, por las características de la aplicación. Piensa en un cliente de correo electrónico, que ha de solicitar al usuario su dirección de correo y su contraseña, pues, ¿cómo sino iba a llevar a cabo su trabajo de gestionar el correo? Guardando todas las distancias, claro. Cita:
Cita:
Cita:
Cita:
Cita:
Bueno. Gracias por tus comentarios Mario. Resultarán muy útiles. Cita:
http://www.loturak.es/rss2?e=Delphi La anterior URL retornaría en formato RSS los últimos 20 enlaces publicados en Loturak con la etiqueta Delphi. Y, por otro lado: http://www.loturak.es/rss2?u=seoane Que retornará los últimos 20 enlaces añadidos por el usuario Seoane en Loturak, no sé si te suena. ¿Qué te parece? ¡Tato pensao! Cita:
[quote=Seoane] Solo comentarte que con las prisas en la unidad Hash me olvide de borrar la función SHGetFolderPath que no uso para nada, pero con esto de cortar y pegar .... [quote] ¿Lo dices por mí, verdad? Je, je, je... yo sí que he copiado y he pegado esta vez... Bueno. Procuraré corregir eso luego luego. Cita:
En cuanto al "Host" de los ejemplos, efectivamente, se trata del Servidor local que utilizo para las pruebas. Y de la chapuza de tu código... eso que lo dices tú. Estoy seguro de que a más gente, además de a un servidor, le parece todo lo contrario. Te lo agradezco otra vez Domingo. Y termino ya... ¡que menudo rollo he soltado! Reconozco que si alguien considera todo esto "demasiado" está en su perfecto derecho. Nada que objetar... gracias otra vez a todos. Nos leemos. PD. Al enviar este mensaje me encuentro con el límite de caritas... así que las he quitado todas... para vengarme aquí: Actualización: Ya he arreglado el asunto de la unidad "Hashes.pas" Seoane. Última edición por dec fecha: 02-12-2006 a las 23:59:47. |
#8
|
||||
|
||||
Date una vuelta por http://ma.gnolia.com/ que me parece tiene un buen API.
No he visto el codigo porque a)PHP me gusta tanto como cebolla con arequipe, siendo el caso que la cebolla me gusta y tambien el arequipe y b) Para darte una persepctiva mas "independiente" 1- Podrias usar mejor un API-KEY que un clave y usuario. Es lo que mas se usa en este tipo de servicios, y entre otros una razon es que las comunicaciones no estan protegidas (no creo que lo tengas por SSL) y estaria comunicandose un dato PERSONAL y PRIVADO plano por Internet. Ya por esto, no me suena usar tu API.... y eso que estaba esperando a ver si lo liberabas pa' pensar como interlazo www.paradondevamos.com (que ya lo tengo listo para auto-ingresar en magnolia y enlaces manuales a digg y otros) 2- No le veo el sentido a poner Hola Mundo. 3- No veo reglas de spam!!! No especificas que tantas comunicaciones por cliente permite tu servicio, y por ende, no creo que le hayas puesto un limite. Todos los demas API tienen algun limite (como solo 1000 hits por dia o algo asi) por una razon de sano juicio: Estas implementando un backdoor que puede ser facilmente abusado por un spammer. Te falto que politicas gobiernan tu servicio... 4- Donde esta el borrar enlaces? 5- Seria bueno una consulta de "relacionados". Seria interesante para hacer mashups con otros sitio donde la informacion se puede agregar, ej: Si escribo un comentario en un sitio externo, seria bueno poner enlaces sobre las palabras clave de este (por ejemplo, si sale Delphi) Como no se como tienes implementado el sistema de Tags, no se que tan dificil pueda serlo... 6- Bueno el limite inferior, Malo no tiene superior. Si estas preocupado por un descarga descomunal que impide que igual se manden 1'000.000 de enlaces en un solo tiro? No veo que estes protegiendo estos casos...
__________________
El malabarista. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
A ver si me queréis dar vuestra opinión | dec | La Taberna | 12 | 02-08-2006 17:05:43 |
¿Quisiera saber vuesta opinión sobre como realizar una aplicación ...? | Jose Manuel | Varios | 3 | 25-05-2006 20:45:16 |
Opinion Aplicacion Multinivel | Jvilomar | Varios | 1 | 25-10-2004 14:20:24 |
|