Bennu Game Development

Foros en Español => Extensiones => Topic started by: josebita on November 25, 2011, 12:32:52 AM

Title: Binding mod_curl [Descarga de ficheros de Internet]
Post by: josebita on November 25, 2011, 12:32:52 AM
He creado un pequeño binding para libcurl de forma que la gente que lo desee pueda descargar recursos de Internet desde su código BennuGD.
Ahora mismo la librería es muy limitada y sólo soporta una descarga cada vez pero esa limitación será eliminada.


Aquí podeis ver un pequeño vídeo de un código que se descarga la página principal de BennuGD de internet:
http://www.youtube.com/watch?v=2pm_sPxkqsc (http://www.youtube.com/watch?v=2pm_sPxkqsc)
El API es aún muy simple:
[Edito] Actualizaré el API cuando tenga un ratillo, mientras tanto echadle un ojo al ejemplo incluído.

Lista de errores que puede dar curl_perform():
http://code.google.com/p/bennugd-monolithic/source/browse/trunk/3rdparty/curl/include/curl/curl.h#393

Espero que os sea útil. Iré subiendo binarios para más plataformas según los vaya compilando.


[Edito] Evidentemente la idea es que esto vaya -también- dentro de los ports a iOS y Android.
Title: Re: Bindings mod_curl [Descarga de ficheros de Internet]
Post by: KeoH on November 25, 2011, 01:18:02 AM
Buen comienzo para la libreria xDD Pero la libcurl tiene mas funciones q iras añadiendo? porq con esto no hago yo un World of Warcraft bennusino xD
Title: Re: Bindings mod_curl [Descarga de ficheros de Internet]
Post by: josebita on November 25, 2011, 01:29:49 AM
Quote from: KeoH on November 25, 2011, 01:18:02 AM
Buen comienzo para la libreria xDD Pero la libcurl tiene mas funciones q iras añadiendo? porq con esto no hago yo un World of Warcraft bennusino xD
¡Excusas!

El binding irá creciendo, pero de momento el primer paso es conseguir las funciones necesarias para poder "saltarse" la limitación de los 20MiB por 3G de Apple.

El verdadero poder de la librería se controla mediante las opciones que se pasan en el paso de configuración, no en el número de funciones. En todo caso se añadirá soporte para otras cosas, como subida de ficheros a internet.

Otra cosa que he hecho en un rato es integrar la librería dentro del proyecto de BennuGD monolítico para iOS, así que debería ser cuestión de un rato tener la librería funcionando, a ver si mañana por la tarde o el finde saco un rato y actualizo los binarios, como prometí.

Una cosa, Splinter: tú para la forma de "mensajería" cliente-servidor que comentabas ¿usas el API curl_easy?.
Title: Re: Bindings mod_curl [Descarga de ficheros de Internet]
Post by: SplinterGU on November 25, 2011, 02:20:51 AM
joseba, creo que es un error implementar descarga de archivos... lo ideal es implementar mensajes get/post, si en la respuesta de un mensaje get/post queres mandar un archivo o un mensaje, lo haces indistintamente, que el usuario reciba en una string la respuesta y segun lo que quiera hacer lo graba a un file o lo procesa como un mensaje...

si, uso curl_easy_perform, y tambien tengo unos callbacks para la parte ssl.
Title: Re: Bindings mod_curl [Descarga de ficheros de Internet]
Post by: SplinterGU on November 25, 2011, 06:11:41 AM
decir "error" fue como mucho... es que no me salia la palabra correcta... quise decir que seria mejor implementar metodo get/post y con eso alcanza para lo que quieras.
Title: Re: Bindings mod_curl [Descarga de ficheros de Internet]
Post by: pinger on November 25, 2011, 08:12:54 AM
+1 SplinterGU , no es nada seguro implementar lo que decía Erkos, es decir usar ftp para subir las puntuaciones. Supongo que te refieres a eso. Que se implemente ftp para subir bajar ficheros, puede estar bien, quien te dice que no vas a hacer una aplicación en bennu que es un cliente o servidor de ftp?
Title: Re: Bindings mod_curl [Descarga de ficheros de Internet]
Post by: osk on November 25, 2011, 08:55:52 AM
YEAAAAAAAH!!!!!!!!!
Title: Re: Bindings mod_curl [Descarga de ficheros de Internet]
Post by: Erkosone on November 25, 2011, 10:08:03 AM
Madre mía, que velocidad de implementación.
Muchas gracias por la lib.
Haber si la vemos pronto en el binario monolitico de iOS  :)
Title: Re: Bindings mod_curl [Descarga de ficheros de Internet]
Post by: Erkosone on November 25, 2011, 10:25:35 AM
Tengo una sugerencia algo simple pero puede ser de gran utilidad para los que hacemos juegos en iOS.
- Bueno, igual digo alguna burrada, disculpadme por ello, no soy ningún profesional en el tema, solo aficionado.


El tema es este:
- Crear un proceso en bennu que se mantenga a la espera de una llamada, cuando se produzca la llamada, desde el proceso "que espera la llamada" poder almacenar en una variable string la IP del solicitante.


Los solicitantes son la gente que está jugando a los juegos, el que espera la llamada será un server privado programado en Bennu para registrar el número de partidas que juega la gente, y con la IP "a bote pronto" conocer desde que paises/zonas se está jugando y sacar estadísticas.
Puede sonar un poco ilegal, no se si esto está permitido, pero seguramente lo harán muchos juegos comerciales de PC.


Esto es posible con esta lib de alguna manera?
Title: Re: Bindings mod_curl [Descarga de ficheros de Internet]
Post by: josebita on November 25, 2011, 12:19:07 PM
Quote from: SplinterGU on November 25, 2011, 06:11:41 AM
decir "error" fue como mucho... es que no me salia la palabra correcta... quise decir que seria mejor implementar metodo get/post y con eso alcanza para lo que quieras.
Quise entender eso :)

Cuando lo hice de la manera en que lo hice estaba pensando en la gente que lo único que quiere hacer es descargar cosas de internet (mapas nuevos, recursos y tal) y creo que así les será más fácil, de todas formas lo que comentas es cierto. Creo que sería bueno tener una función "fácil" de descarga y otra como comentas.

A nivel de implementación, sería una función que devolvería un string -que se actualizaría a través de las rutinas de curl- y el usuario lo iría leyendo desde BennuGD. Algo así estaría bien, ¿no?.
La descarga en sí se controlaría con la misma función que las descargas que están implementadas ahora.
Title: Re: Bindings mod_curl [Descarga de ficheros de Internet]
Post by: Goku jr on November 25, 2011, 12:59:12 PM
Esperando version para windows!!! :D
Title: Re: Bindings mod_curl [Descarga de ficheros de Internet]
Post by: SplinterGU on November 25, 2011, 01:19:34 PM
Quote from: josebita on November 25, 2011, 12:19:07 PM
Quote from: SplinterGU on November 25, 2011, 06:11:41 AM
decir "error" fue como mucho... es que no me salia la palabra correcta... quise decir que seria mejor implementar metodo get/post y con eso alcanza para lo que quieras.
Quise entender eso :)

Cuando lo hice de la manera en que lo hice estaba pensando en la gente que lo único que quiere hacer es descargar cosas de internet (mapas nuevos, recursos y tal) y creo que así les será más fácil, de todas formas lo que comentas es cierto. Creo que sería bueno tener una función "fácil" de descarga y otra como comentas.

A nivel de implementación, sería una función que devolvería un string -que se actualizaría a través de las rutinas de curl- y el usuario lo iría leyendo desde BennuGD. Algo así estaría bien, ¿no?.
La descarga en sí se controlaría con la misma función que las descargas que están implementadas ahora.

a ver... es que no es practico, asi como esta... el pathname+archivo destino (en el caso de descargas) es poco probable que sepas cuales son para casos de actualizacion, esos datos normalmente son datos que se negocian en la comunicacion, donde normalmente se dice la lista de archivos que vas a recibir y/o los que debes borrar... entonces tener una funcion de descarga implementada asi, no tiene sentido...

ademas, sistema de comunicacion implementado por archivo es lo mas primitivo y poco profesional que existe, eso se usa(ba) en aplicaciones donde los programadores no eran capaces de dominar una comunicacion por mensajes... o cuando se queria comunicar un sistema DOS con uno windows o linux... puf, es la cosa mas fea que vi en mi vida...

erkosone, lo que pedis se puede hacer con la libsock, o alguna de esas... no veo por que decis que puede ser ilegal...
Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: josebita on November 25, 2011, 02:25:25 PM
@erkosone: O puedes ir haciendo peticiones al servidor cada cierto tiempo y comprobar qué te va diciendo.
En todo caso, no puedes contar con que en dispositivos móviles desde fuera te vayan a hacer una petición con alguna librería tipo libsock: en general no se podrá. Tienen el firewall puesto a tope por defecto y nada del tráfico externo puede entrar.
Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: SplinterGU on November 25, 2011, 02:47:07 PM
yo habia interpretado que se referia al server... y clientes haciendo llamadas con libsock o tcpsock al server... y de ahi con la conexion establecida si esperar eventos... igual en un dispositivo movil esto solo esta bueno para comms wifi, no creo que le cause gracia a ningun usuario comerle el credito con mensajes.
Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: Erkosone on November 25, 2011, 02:56:00 PM
Lo de ilegal lo decía por que no estaba seguro, en el fondo es una chorrada si.
Ok, pues tomo nota, lo he comentado por que las lib tcp que hay por el foro ninguna está portada a iOS, entonces preguntaba si con la curl se podría hacer algo así.


Y si, poca gracia haría hacer esto por 3G la verdad.


Vale pues si se puede de alguna manera cuando esté la versión de la lib para windows e iOS registrar la IP los los teléfonos o iPod´s  que hagan la petición será genial.
Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: josebita on November 25, 2011, 03:42:04 PM
Quote from: Erkosone on November 25, 2011, 02:56:00 PM
Lo de ilegal lo decía por que no estaba seguro, en el fondo es una chorrada si.
Ok, pues tomo nota, lo he comentado por que las lib tcp que hay por el foro ninguna está portada a iOS, entonces preguntaba si con la curl se podría hacer algo así.


Y si, poca gracia haría hacer esto por 3G la verdad.


Vale pues si se puede de alguna manera cuando esté la versión de la lib para windows e iOS registrar la IP los los teléfonos o iPod´s  que hagan la petición será genial.
La petición la haces contra el servidor que estará montado en lo que sea, desde Bennu hasta PHP pasando por todo lo demás.

Por ejemplo, lo que harías sería intentar "bajarte" la URL http://www.ejemplo.com/index.php?ping=1 y el script index.php se encargaría de registrar la IP, geolocalizarla y escribir la información obtenida en una base de datos.

De todas formas recuerda que la dirección IP del usuario es un dato privado -al menos en España- y debes tener la legislación sobre protección de datos en cuenta a la hora de manejar esa información. Te lo digo por si vas a hacer el mal con la información, luego no digas que no estabas avisado :)
Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: SplinterGU on November 25, 2011, 04:05:54 PM
bueno, yo pense que se queria meter la libcurl porque se queria interfacear con un webserver... lo cual hace mas facil todo para personas con poco conocimiento de comunicaciones y tcp...

pero si se trata por portar, me parece mejor portar la libsock o libtcp (no me acuerdo el nombre exacto), porque no olvides la carga extra de memoria que mete la libcurl...
Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: SplinterGU on November 25, 2011, 04:09:12 PM
joseba, no conozco esa ley, pero mientras estas conectado la ip es un dato que esta disponible... imagino que esa ley prohibi guardar la ip... o guarlarla en forma plana sin ningun tipo de encripcion... si guardas las ips o el dato que sea, encriptado con alguna key, nadie se va a enterar lo que estas guardando.
Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: josebita on November 25, 2011, 04:18:18 PM
Quote from: SplinterGU on November 25, 2011, 04:09:12 PM
joseba, no conozco esa ley, pero mientras estas conectado la ip es un dato que esta disponible... imagino que esa ley prohibi guardar la ip... o guarlarla en forma plana sin ningun tipo de encripcion... si guardas las ips o el dato que sea, encriptado con alguna key, nadie se va a enterar lo que estas guardando.
Lo que quería decir es que no puedes es vender esos datos :)

Quote from: SplinterGU on November 25, 2011, 04:05:54 PM
bueno, yo pense que se queria meter la libcurl porque se queria interfacear con un webserver... lo cual hace mas facil todo para personas con poco conocimiento de comunicaciones y tcp...

pero si se trata por portar, me parece mejor portar la libsock o libtcp (no me acuerdo el nombre exacto), porque no olvides la carga extra de memoria que mete la libcurl...
Sí, la idea es ambas: poder descargar ficheros y comunicación con servidor web.
Se habrá notado, pero de redes no tengo ni idea, así que seguro que estoy diciendo barbaridades...
Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: SplinterGU on November 25, 2011, 04:27:03 PM
yo creo que podrias portar muy facil la libtcp o la sock (nuevamente, no me acuerdo el nombre) y son muy livianas.

de comms tengo mucha experiencia.
Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: josebita on November 25, 2011, 04:29:16 PM
Quote from: SplinterGU on November 25, 2011, 04:27:03 PM
yo creo que podrias portar muy facil la libtcp o la sock (nuevamente, no me acuerdo el nombre) y son muy livianas.

de comms tengo mucha experiencia.
Pero entonces complico mucho la descarga de ficheros (¿o no?). Mi idea es que sea muy sencillo descargarlos directamente, además de las comunicaciones con el servidor.
Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: JaViS on November 25, 2011, 06:05:24 PM
Buenisimo!!


esto es algo que viene haciendo falta hace rato!


muchas gracias Josebita, nos abriste otra puerta mas con Bennu!!
Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: SplinterGU on November 25, 2011, 06:08:17 PM
yo lo implementaria por mensajes, pero si lo quieres hacer simple vale esa funcion, pero te falta otra funcion de mensajeria importante, que en la mayoria de los casos va a decir que archivos son los que se van a necesitar descargar.

duda que tengo, te fijaste cuanta memoria extra consume la lib+wrapper?
Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: josebita on November 25, 2011, 06:15:22 PM
Quote from: SplinterGU on November 25, 2011, 06:08:17 PM
yo lo implementaria por mensajes, pero si lo quieres hacer simple vale esa funcion, pero te falta otra funcion de mensajeria importante, que en la mayoria de los casos va a decir que archivos son los que se van a necesitar descargar.

duda que tengo, te fijaste cuanta memoria extra consume la lib+wrapper?
No, pero lo miraré.

¿La forma que he puesto antes de mensajería se te antoja correcta? o ¿la implementarías de otra forma?
Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: SplinterGU on November 25, 2011, 06:30:57 PM
yo lo haria asi...

int curl_get(string srcURL, string dstFILE, int * status);

y ese estatus cuando arranca setea un status de downloading, luego cuando termina, pone un ok o error, segun el caso.

pero necesitas si o si, una funcion de mensajeria, post/get y recibir la respuesta en una string o buffer que aloque dinamicamente la funcion y retorne un puntero...

necesitas poder setear cosas como timeout de mensaje, de conexion, cache o no de dns, si usas proxy o no, en caso de usar ssl hay unas cuantas opciones... asi que necesitas funciones para eso tambien... la mas importante y basica son las de timeout.
Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: josebita on November 25, 2011, 06:37:21 PM
Lo primero es fácil: lo haré en un rato.


Lo segundo, me costará más... si se me complica te lo haré saber :)
Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: SplinterGU on November 25, 2011, 06:41:34 PM
bien... al menos una simple post/get, en la que tienes que tener funciones para setear campos del request (curl_formadd), no olvides liberar los forms cuando ya no los uses (curl_formfree).

con eso podes armar una linda implementacion...

hay ejemplos muy simples en el site de curl.
Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: josebita on November 25, 2011, 06:47:14 PM
Ok, lo miraré. A ver si puedo contaros algo en un rato.
Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: Erkosone on November 25, 2011, 07:33:37 PM
Suena bastante interesante.
Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: peterpollito on November 25, 2011, 07:40:01 PM
Genial! que rápido! pinta estupendo y para evitar ese limite de 20 megas de memoria en descarga para appstore es una solución suficiente.
Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: josebita on November 25, 2011, 08:31:11 PM
Bueno, el primero de los cambios que comentabas, Splinter, ya lo he implementado.

Luego me pondré con la parte de la mensajería.
Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: KeoH on November 26, 2011, 02:29:38 AM
A mi ya me está sonando esto a chino mandarín profundo de las montañas de Zhouweixiang
Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: SplinterGU on November 26, 2011, 03:40:31 AM
Keoh, ya lo entenderas... y veras que simple es...
Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: pinger on November 26, 2011, 04:08:08 AM
Solo puedo decir ... Karma up para Josebita y el maestro rata :)
Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: josebita on November 26, 2011, 02:45:30 PM
Quote from: SplinterGU on November 25, 2011, 06:41:34 PM
bien... al menos una simple post/get, en la que tienes que tener funciones para setear campos del request (curl_formadd), no olvides liberar los forms cuando ya no los uses (curl_formfree).

con eso podes armar una linda implementacion...

hay ejemplos muy simples en el site de curl.
Anoche sólo hice el primero de los cambios y luego estuve mirando un rato el tema BGR<->RGB en 32 bits y alguna cosillas más.

Intentaré implementar el tema de los formularios lo antes posible. Te referías a algo tipo esto (http://curl.haxx.se/libcurl/c/postit2.html), ¿verdad?.

[Edito] Splinter, una cosa: ¿Es posible hacer una función dentro de una librería que acepte cualquier tipo de parámetro?. ¿Un puntero o puedo definir de alguna forma los tipos de parámetros de entrada a la función en el function_exports para que acepten cualquier tipo de dato?
He visto que los tipos de entrada de algunas funciones son algo tipo "IV++". ¿Qué significan esos "+"?.
Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: SplinterGU on November 26, 2011, 04:11:07 PM
V++ son variables... no argumentos variables, sino variables, tipo write_var... con eso puedes aceptar cualquier tipo de dato, pero no cualquier cantidad de argumentos.

ese ejemplo es correcto...
Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: josebita on November 26, 2011, 04:55:02 PM
A eso me refería, sí, a un tipo de argumento variable. Me vendría bien eso para pasar las opciones a curl.
Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: SplinterGU on November 26, 2011, 09:43:43 PM
si, eso mismo... fijate la implementacion de write_var o save...
Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: josebita on November 27, 2011, 03:30:29 AM
Bueno, he estado trabajando un poco y ahora es un binding "de verdad" dado que mapea casi directamente muchas funciones de curl_easy y debería permitir hacer casi cualquier cosa de las que permite la librería.
El código de descarga de ficheros quedaría ahora:
    // Start libcurl, set options, perform transfer
    curl = curl_init();
    if(curl == -1)
        say("Curl initialization failed, quitting");
        quit = 1;
        return;
    end;
   
    curl_setopt(curl, 43,    1);                            //CURLOPT_NOPROGRESS
    curl_setopt(curl, 10001, "BennuGD forums.html");        //CURLOPT_WRITEDATA
    curl_setopt(curl, 10002, "http://forum.bennugd.org");   //CURLOPT_URL
   
    curl_perform(curl, &status);
   
    // Wait for the transfer to finish
    while(status != 0)
        FRAME;
    end;
   
    curl_cleanup(curl);
   
    say("Download done!");
Ignorando el hecho de que aún hay que meter los códigos de las opciones numericamente, yo diría que se parece bastante a lo que planteas, Splinter. Y además no es nada difícil implementar una función que, dados origen y destino, descargue directamente el fichero.

Además, el nuevo código permite hasta 16 -número arbitrario que se puede cambiar durante la compilación- descargas simultáneas y las funciones que he implementado hasta ahora son:
    { "CURL_INIT"           , ""      , TYPE_INT , bgd_curl_easy_init      },
    { "CURL_CLEANUP"        , "I"     , TYPE_INT , bgd_curl_easy_cleanup   },
    { "CURL_FORMADD"        , "IISIS" , TYPE_INT , bgd_curl_formadd        },
    { "CURL_FORMFREE"       , "I"     , TYPE_INT , bgd_curl_formfree       },
    { "CURL_SETOPT"         , "III"   , TYPE_INT , bgd_curl_easy_setopt    },
    { "CURL_SETOPT"         , "IIS"   , TYPE_INT , bgd_curl_easy_setopt2   },
    { "CURL_PERFORM"        , "IP"    , TYPE_INT , bgd_curl_easy_perform   },
Así que ya se pueden enviar peticiones POST tanto a través de la función CURL_FORMADD como a pelo mediante CURL_SETOPT(curl, CURLOPT_POSTFIELDS, "cadena").

La descarga, eso sí, de momento se hace a stdout salvo que se especifique un fichero de salida, en cuyo caso se escribirá a ese fichero. A ver si mañana le añado una opción a curl_setopt para que la salida vaya a una string. Entiendo que mezclar eso con curl_formadd sería lo ideal para la comunicación cliente-servidor que planteas, ¿verdad Splinter?.
Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: SplinterGU on November 27, 2011, 05:28:57 AM
seria ideal...

te ha quedado excelente!
Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: Erkosone on November 27, 2011, 10:16:44 AM
WoW joseba que velocidad.


Ayer por la noche estuvimos hablando pinger y yo sobre un tema que muy probablemente le va a interesar a toda la comunidad bennu que publica juegos en app store, haber si soy capaz de explicarme "correctamente".
Si suelto alguna burrada disculpad, pues voy a intentar explicar algo que desconozco como funciona a bajo nivel, pero que a simple vista me ha dado la sensación de que puede funcionar.


Existe una lib especifica para Obj-C que se hace llamar "APpirater", esta lib hace lo siguiente:


- Pasados 30 días, o 15 ejecuciones de la aplicación, lo que hace es mostrarte una ventanita en pantalla donde te pregunta que valoración le das a la aplicación, puedes escojer desde 1 estrella hasta 5 estrellas, también te da la opción de escribir un breve mensaje diciendo lo que te ha gustado de la aplicacion o lo que no te ha gustado, y finalmente cuando aceptas..


Esta lib POSTEA en APP STORE tu comentario automaticamente.




El tema es interesante porque si de alguna manera con mod_curl se puede llegar a postear un review en app store..  el valor de usar curl es exponencial.
Si desde nuestro propio juego podemos hacer un process que puestre algo parecido, y enviar un review a APP Store en la page de la aplicación.. bueno, si esto se puede hacer no tengo palabras.. sería algo grande.
El tema.. y aquí ya interviene el buen hacer y la dedicación de los que sabéis interpretar decentemente el código de esta lib, para averiguar cual es el método para enviar este mensajito a la page del producto en la tienda.


Perdon por el toston.. me ha parecido interesante y quería haceros saber de esta lib, si se pudiera hacer algo parecido con curl supongo que todo el que publique juegos en la tienda de apple estará encantado.




Si algún entendido quiere hechar un vistazo a la lib: http://arashpayan.com/blog/2009/09/07/presenting-appirater/ (http://arashpayan.com/blog/2009/09/07/presenting-appirater/)
Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: josebita on November 27, 2011, 04:27:13 PM
Imagino que se podría hacer como comentas directamente. De todas formas, en su momento estuve mirando esto:
http://bjango.com/articles/ituneslinks/
Y parece que se pueden crear enlaces directamente a la sección de reviews de la app store en el dispositivo. La nueva versión del código incluye la opción de abrir enlaces así que se podrá enlazar directamente a la App Store, como comentas, desde el código Bennu.

Es algo que creo que no había comentado pero que implementé hace tiempo. Me falta comprobar que todo funciona como debe.
Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: Erkosone on November 27, 2011, 08:53:41 PM
Esto suena muy bien.
Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: josebita on November 27, 2011, 10:17:30 PM
Hoy no he hecho nada de esto pero dadme un par de días y completo un poco el binding con el par de funciones que le faltan y meto lo de descarga a string.

Pues eso, que en un par de días recompilo para iOS y libero una template actualizada.
Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: Erkosone on November 27, 2011, 10:40:19 PM
Genial, ya tengo ganas de probarlo.
Gracias por el curro que te estás pegando.
Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: josebita on December 02, 2011, 01:02:51 AM
Splinter, tengo la descarga a string funcionando, pero es a través de una función auxiliar que recupera la cadena una vez que se ha completado la descarga porque si lo que hago es pasar un puntero al string mientras configuro la descarga y cuando la descarga está terminada lo actualizo, obtengo un segfault. Creo recordar que comentaste que no es posible hacer eso, ¿no?.
Es decir, que el código de ejemplo actual sería:
    curl_setopt(curl, 10001, 0);        //CURLOPT_WRITEDATA
    curl_setopt(curl, 10002, "http://localhost/~joseba/html5upload/upload.html");   //CURLOPT_URL
   
    curl_perform(curl, &status);
   
    // Wait for the transfer to finish
    while(status != 0)
        FRAME;
    end;
   
    output = curl_fetch(curl);
   
    say("BennuGD download:");
    say(output);

Cuando lo ideal sería que fuera algo como:
    curl_setopt(curl, 10001, &output);        //CURLOPT_WRITEDATA
    curl_setopt(curl, 10002, "http://localhost/~joseba/html5upload/upload.html");   //CURLOPT_URL
   
    curl_perform(curl, &status);
   
    // Wait for the transfer to finish
    while(status != 0)
        FRAME;
    end;
   
    say("BennuGD download:");
    say(output);
Lo segundo no es posible, ¿verdad?. Si lo es, dímelo y pongo el código, para ver qué estoy haciendo mal...
Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: SplinterGU on December 02, 2011, 01:13:03 AM
output de que tipo es?
Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: josebita on December 02, 2011, 01:14:39 AM
string con integers sí que me va :)
Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: SplinterGU on December 02, 2011, 01:23:04 AM
no me respondiste que tipo es
Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: josebita on December 02, 2011, 01:24:37 AM
String.
Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: SplinterGU on December 02, 2011, 01:38:54 AM
y string te da segment violation?

en cualquier caso deberias pasar en la funcion el puntero a esa string... lo cual *output deberia apuntar al entero que representa la string, luego deberias hacer un discard y luego una new_string+string_use y setearlo en *output...

creo que eso deberia funcionar, no estoy 100% seguro, deberia probarlo.
Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: josebita on December 02, 2011, 01:49:15 AM
Quote from: SplinterGU on December 02, 2011, 01:38:54 AM
y string te da segment violation?

en cualquier caso deberias pasar en la funcion el puntero a esa string... lo cual *output deberia apuntar al entero que representa la string, luego deberias hacer un discard y luego una new_string+string_use y setearlo en *output...

creo que eso deberia funcionar, no estoy 100% seguro, deberia probarlo.
Pff, imagino que estaré haciendo algo mal... A ver si lo miro en los próximos días.
Lo siento pero no podrá haber binarios para iOS con esto al menos hasta el lunes, que estoy más que cansado, me voy a dormir y mañana me voy de viaje.

El código de la librería ya define constantes para el comportamiento de libcurl y las constantes relacionadas con HTTP (casi todas son directamente las mismas que las constantes de libcurl de C) tal y como se describen aquí (http://curl.haxx.se/libcurl/c/curl_easy_setopt.html).


Adjunto también la librería compilada para MacOS X para el que quiera ir haciendo pruebas durante el fin de semana, aunque ya aviso de que si consigo hacer lo que comento el API cambiará algo si hago que no haga falta la función de llamada para retornar la string. Incluye un pequeño código de ejemplo que descarga la página del foro bien a una string o a un fichero. Imagino que este finde sí que podré sacar un binario rápido para Linux y subirlo al PPA. Windows me da miedo por una cosa que he leído en la documentación de libcurl, pero llegará también.
Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: Erkosone on December 08, 2011, 01:49:16 PM
Muchas gracias por la lib Joseba, me he animado a probarla pero me ha surgido un problema, no tengo mucha idea de como configurar el entorno en macosx todo sea dicho..
He descargado el Kantaoke y he intentado sin exito hacer alguna prueba con otro .dcb, el caso es que no consigo hacerlo funcionar.


Existe algun template, o un .APP listo para meterle el .dcb con los recursos para poder empezar a trastear la curl en macosx?
Bueno, gracias por el curro que te pegas, está fenomenal tener la lib tan rápido.
Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: josebita on December 08, 2011, 04:08:34 PM
Sé que me has preguntado otra cosa, pero para empezar por el principio: ¿tienes bennugd en macosx funcionando desde la línea de comandos?

Si no lo tines, bájatelo desde la web de descargas y lo instalas siguiendo las instrucciones de aquí:
http://forum.bennugd.org/index.php?topic=2641.msg46733#msg46733

Cuando lo tengas funcionando de ahí, pasamos a las apps :)
Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: Erkosone on December 08, 2011, 05:03:21 PM
Vale, comencemos por el principio, voy a ello.

Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: Erkosone on December 08, 2011, 05:21:00 PM
cd
open -a TextEdit .profile


En esto me he atascado..  haber, he bajado el paquete para macosx de bennugd, lo he dejado en user/bennugd/      aquí tengo las dos carpetas, bin y lib.


Pero al editar el archivo que me dices el shell me indica que no existe..   he mirado por el disco haber si lo encontraba pero no parece que esté.. no se si no estoy en la ubicación correcta o que,
el tema es que nada mas abrir el terminal, pongo cd a secas, pero supongo que falta algo no? porque con eso que estoy haciendo en macosx exactamente? es igual que en windows?
La verdad es que ando un poco perdido, en que ubicación se supone que esta el .profile?
Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: josebita on December 08, 2011, 05:46:18 PM
Es cd sin más, para que vaya a tu carpeta personal.
Si el fichero no existe, tienes que crearlo, pero el textedit debería hacerlo solo. Si no se crea antes, después del cd escribe:
touch .profile
Eso te lo crea y te lo deja en blanco.
Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: Erkosone on December 08, 2011, 06:29:18 PM
Pues me tira este error que puedes ver en el screenshot, mi nombre de usuario es 'luislopez', parece que algo falla.


(http://forum.bennugd.org/index.php?action=dlattach;topic=2846.0;attach=2256)


He dejado la carpeta de bennugd al abrir el finder, picando en mi usuario a la izquierda, tal cual ahí, la carpeta se llama 'bennugd' y dentro están las bin y lib.
Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: josebita on December 08, 2011, 06:36:17 PM
Pon el fichero .profile tal y como te ha quedado.


[edito] vamos, que me da que te has comido un cacho de la línea que tenías que poner, revísalo.
Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: Erkosone on December 08, 2011, 07:04:35 PM

export PATH=$PATH: /Users/luislopez/bennugd/bin/
export DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH: /Users/luislopez/bennugd/lib/
Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: josebita on December 08, 2011, 07:11:29 PM
Te sobran los espacios después de los dos puntos. Prueba a quitarlos.
Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: Erkosone on December 08, 2011, 07:42:02 PM
Voy a ello, gracias por la ayuda.
Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: josebita on December 08, 2011, 07:43:03 PM
Avisa si no te funciona y después de cenar escribo un script tontorrón que descargue e instale bennu en macosx.
Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: Erkosone on December 08, 2011, 09:57:24 PM
Muchas gracias por toda la ayuda Joseba, acabo de volver de la calle ahora, no he podido contestar antes..


Acabo de lanzar el compilador de bennu y el interprete desde el terminal en el mac y no se quejan de nada  :)
Supongo que ya puedo compilar y ejecutar, voy a ello ahora mismo.
Gracias tío, necesitaba configurar esto como fuera.. ya tenia a pinger subido a mi joroba XD..


Voy a compilar el 'AIGS Studio' y el 'iDraw for family' desde el mac para ver que tal, en cuanto compruebe si funciona todo bien te aviso, y de paso empezaré a guarrear con la c_url.

Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: Erkosone on December 08, 2011, 10:06:56 PM
 ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D
(http://forum.bennugd.org/index.php?action=dlattach;topic=2846.0;attach=2258)
Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: josebita on December 08, 2011, 10:25:49 PM
Me alegro :)

Tengo binarios más actualizados en mi ordenador. Si echais en falta alguna cosa de las últimas versiones de bennu, avisad y los subo.

Por cierto, no habíais avisado del iDraw for family, ¿no?
[Edito] ¡Ah! ¡que estais en ello! :)
Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: Erkosone on December 08, 2011, 10:54:12 PM
Pues todo funciona perfecto  ;) .
El iDraw for Family es nuestro segundo proyecto en BennuGD para la APP Store.


Lo único que hecho en falta es una versión "portable" que no dependa del entorno del mac en cuestión, así se podría introducir BennuGD en la MAC APP Store.
No estaría nada mal esto, si pudieras montar una sería ya una pasada  ::)


Pues muchas gracias por todo Joseba, después de todo ha funcionado y parece que puedo compilar y ejecutar los juegos en el MAC, los testing los he hecho desde un Snow Leopard, en cuanto pinger tenga un día libre de curro lo probaremos en Lion con el Mac nuevo que hemos comprado y ya te comentará el que tal va todo allí, pero supongo que bien.
Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: josebita on December 08, 2011, 11:33:07 PM
Yo uso Lion y parece que funciona bien. Creo que en versiones anteriores sí que dará problemas.

A ver si puedo subir una pequeña plantilla de aplicación para mac, que la tengo en el escritorio...
Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: Erkosone on December 09, 2011, 12:49:45 AM
En tu escritorio crían malvas XD..
Pues si te pasas una te lo agradeceré.
Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: Erkosone on December 11, 2011, 11:01:57 AM
Llevo unas horas mirando de solucionar esto, pero no soy capaz.. se que soy un completo negado en mac..

El caso es que he copiado la lib a la carpeta LIB de la distro para macosx de Bennu, todo me funciona bien menos esta librería, que me dice el compilador que no la encuentra.
El caso es que la he copiado "por si acaso" en la propia carpeta del prg que quiero compilar y hace el mismo efecto :(

(http://forum.bennugd.org/index.php?action=dlattach;topic=2846.0;attach=2261)

Debo configurar algo mas para poder utilizarla?


Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: josebita on December 11, 2011, 12:09:53 PM
En teoría debería en la misma carpeta que el resto de las .dylib de bennu.

Haz una cosa: ve por favor en la terminal a la carpeta en la que está la .dylib y escribe:
otool -L mod_curl.dylib
Y me pones lo que te salga
Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: Erkosone on December 11, 2011, 02:59:13 PM
Me sale esto:

(http://forum.bennugd.org/index.php?action=dlattach;topic=2846.0;attach=2264)
Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: josebita on December 11, 2011, 03:55:13 PM
Te preparo un binario que escriba más info del error y te lo mando por mail luego.
Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: Erkosone on December 11, 2011, 04:35:01 PM
Ok gracias Joseba.
Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: Erkosone on December 13, 2011, 11:06:51 AM
Bueno, por fin ya he podido probarlo, gracias por todo Joseba, funciona a la perfección, el shell se desborda de código html XD.. Supongo que es eso lo que hace el test, ahora voy a ver si me pongo las pilas en el tema..


Mi intención es crear una page en internet que aloje un ranking como primer paso.
Alguna sugerencia de como hacer esto con c_url?


Me imagino que por el sistema que dijo Splinter de post´s.. pero vaya.. que yo no soy el mas entendido en esto..
Sería de grandiosa ayuda un ejemplo de como comunicarte con una web para subir un dato y luego como descargar la lista de datos.


De todos modos me pongo a ello, que está muy bien pedir XD.. pero mejor está hacerlo uno mismo, haber si soy capáz de enterarme como hacer esto.
Gracias por el binario y por la lib  :)
Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: josebita on December 13, 2011, 11:14:39 AM
(Estás con Snow Leopard, ¿verdad?. Yo diría que la libcurl contra la que compilé es más moderna que la de Snow Leopard y por eso no os cargaba el módulo)

Sí, el ejemplo lo que hace es descargarse el HTML de la página principal del foro a una cadena e imprimirlo en la consola, así que sí hace lo que debe.

Sobre lo de los POSTs, la idea es que os pongais en un servidor un formulario HTML normal y la libcurl lo que haría es rellenar ese formulario y leer la respuesta del servidor a un string que luego procesais para leer los highscores, p. ej.

Teneis información sobre cómo crear formularios aquí:
http://www.w3schools.com/html/html_forms.asp (http://www.w3schools.com/html/html_forms.asp)
http://html.conclase.net/w3c/html401-es/interact/forms.html (http://html.conclase.net/w3c/html401-es/interact/forms.html)

Y lo normal es que los manejeis con php o algo similar. Si teneis dudas, preguntad y os contestamos, pero creo que es bueno que os lo miréis vosotros mismos para que os enteréis bien de cómo funciona. Vamos, que le deis caña al google :)
Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: Erkosone on December 13, 2011, 11:58:51 AM
Ok, así lo haremos, suerte que pinger se maneja bien en este terreno.


Gracias por la info  :)
Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: pinger on December 18, 2011, 08:20:37 AM
El tema del formulario en php y mysql ya estoy en ello, poco a poco lo voy sacando, no soy un entendido de ninguno de esos lenguajes precisamente. Lo que me gustaría es poder prescindir del formulario y enviar directamente los datos al archivo de procesamiento desde el programa, para evitar que alguien se ponga 1000000 de puntos solo por ir a una dirección web.

Muchas gracias por la ayuda Joseba.
Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: josebita on December 18, 2011, 06:12:39 PM
Desde la mod_curl debes ir directamente a la página que procesa eñ formulario, como si ya lo hubieras rellenado.
La forma de rellenar el formulario es equivalente al siguiente código c:
http://curl.haxx.se/libcurl/c/postit2.html
Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: josebita on December 25, 2011, 10:35:51 PM
Enlazo binario de mod_curl para windows y ejemplo de uso en el primer post.
¡Parece que esta vez linux va a ser el último! :)
Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: josebita on December 25, 2011, 11:12:51 PM
Acabo de actualizar el binario para windows. Ahora para descargar algo a una string no hace falta usar la función curl_fetch sino que directamente se pondría:
Process main()
Private
    int i=0, status=0, curl=0;
    int width=640, height=480;
    string output;

Begin
    set_mode(width, height, 16);


    say("Starting download");
   
    // Start libcurl, set options, perform transfer
    curl = curl_init();
    if(curl == -1)
        say("Curl initialisation failed, quitting");
        quit = 1;
        return;
    end;
   
    curl_setopt(curl, CURLOPT_NOPROGRESS,    1);
    curl_setopt(curl, CURLOPT_WRITEDATA, &output);
    curl_setopt(curl, CURLOPT_URL, "http://www.google.es/");
   
    curl_perform(curl, &status);
   
    // Wait for the transfer to finish
    while(status != 0)
        FRAME;
    end;
   
    write(0, 0, 0, 0, output);
   
    curl_cleanup(curl);
   
    say("Download done!");

    while(! mouse.right)
        FRAME;
    end;
    quit=1;
End;
A partir de aquí podeis dar el API de la librería por congelado en el sentido de que las funciones que ya existen casi con total seguridad no van a cambiar. En el futuro añadiré más constantes para curl_setopt y añadiré alguna funcioncilla de curl_easy que me falta pero el código que escribais con esta librería debería funcionar en versiones futuras.


Falta por actualizar las versiones para iOS y Lion, así como añadir la versión para Linux.


[Nota] Si alguien usa la librería desde windows para juegos iOS, tiene aquí (http://www.megaupload.com/?d=W97VJ2BI) una versión de la librería para win32 que incluye las mismas funciones que la versión de iOS.
Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: josebita on January 03, 2012, 03:09:08 AM
Actualizada la librería para Mac OSX en el primer post.
Link, ¿podrías meter la lib para la próxima versión del bennupack?. Que me hace ilusión :)
Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: pinger on January 04, 2012, 04:03:02 AM
Ya tengo todo preparado en nuestro server, ahora "solo" toca aprender como va la lib. A leer toca.
Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: josebita on January 04, 2012, 01:18:01 PM
Quote from: pinger on January 04, 2012, 04:03:02 AM
Ya tengo todo preparado en nuestro server, ahora "solo" toca aprender como va la lib. A leer toca.
A ver si en un ratillo subo al blog un poco de código de ejemplo.
Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: josebita on January 08, 2012, 12:43:06 PM
No lo comenté aquí, pero teneis la versión para linux en mi PPA.
Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: La momia que fuma on January 12, 2012, 06:47:41 PM
Me salta este fallo al intentar compilar en windows, que puede ser?


(http://dl.dropbox.com/u/8279424/Imagen1.png)
Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: FreeYourMind on January 12, 2012, 07:30:44 PM
libeay32 antigua sin esa funcion ?
Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: josebita on January 12, 2012, 07:53:28 PM
Quote from: La momia que fuma on January 12, 2012, 06:47:41 PM
Me salta este fallo al intentar compilar en windows, que puede ser?


(http://dl.dropbox.com/u/8279424/Imagen1.png)
Puff, por eso no me gusta distribuir binarios para windows... En linux es más fácil porque es el sistema el que se encarga de las dependencias :)

¿Necesitas https?


[Edito] Intenta reemplazar la libcurl.dll con la de la carpeta "nossl" o "SSL" de este paquete:
http://www.paehl.com/open_source/?download=curl_DLL_ONLY.7z
Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: La momia que fuma on January 12, 2012, 08:07:21 PM
Con la de "nossl" ya funciona a las mil maravillas  ;D


Gracias! Karma++
Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: josebita on January 12, 2012, 08:18:39 PM
Quote from: La momia que fuma on January 12, 2012, 08:07:21 PM
Con la de "nossl" ya funciona a las mil maravillas  ;D


Gracias! Karma++
Nada :) Imagino que las otras que vienen funcionarán tb, entonces.

En cuanto tenga un rato acutalizo el binario para windows.
Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: peterpollito on January 13, 2012, 10:36:42 AM
Funciona de lujo! Karma Josebita!

Pd: ¿Para descargar desde Iphone con 3G funcionara igual?
Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: josebita on January 13, 2012, 10:57:00 AM
Quote from: peterpollito on January 13, 2012, 10:36:42 AM
Funciona de lujo! Karma Josebita!

Pd: ¿Para descargar desde Iphone con 3G funcionara igual?
Sip. Lo único que la versión para iphone (aún) tiene una versión un poquito anterior a esta y no os van a funcionar los imsmos programas... tengo previsto actualizarla a lo largo de este finde.
Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: La momia que fuma on January 23, 2012, 08:08:52 PM
Como podría detectar el fallo si el archivo a descargar no esta?
Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: josebita on January 24, 2012, 12:18:40 AM
Quote from: La momia que fuma on January 23, 2012, 08:08:52 PM
Como podría detectar el fallo si el archivo a descargar no esta?
¡Ups! Menudo FAIL. Lo dejé para más adelante y se me olvidó, al final.
He actualizado el link para win32 con un binario que devuelve el código de retorno de curl_easy_perform (http://curl.haxx.se/libcurl/c/curl_easy_perform.html)
Basicamente retval > 0 es error y retval == 0 es que todo ha ido bien. retval == -2 sigue siendo "que te esperes, niño".
Eso sí, un 404 no te va a devolver un error de esta forma, así que vas a tener que chequearlo a mano. La lista completa de errores que devuelve la librería la tienes aquí:
http://code.google.com/p/bennugd-monolithic/source/browse/trunk/3rdparty/curl/include/curl/curl.h#393 (http://code.google.com/p/bennugd-monolithic/source/browse/trunk/3rdparty/curl/include/curl/curl.h#393)

Otra cosa: he compilado el binario rapidito, así que puede que me haya pasado algo: si es así, avisa y lo miro pero yo diría que está bien.

Aprovecho desde aquí para mentar a la puñetera madre de todo el FBI por cerrar megaupload e inutilizar los enlaces a los binarios para OSX del módulo. ¡Un beso para ella!
Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: La momia que fuma on January 24, 2012, 06:38:18 PM
hmm, he cambiado curl_perform(curl, &status); por curl_easy_perform(curl, &status); pero no me la reconoce...
Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: josebita on January 24, 2012, 10:01:41 PM
Quote from: La momia que fuma on January 24, 2012, 06:38:18 PM
hmm, he cambiado curl_perform(curl, &status); por curl_easy_perform(curl, &status); pero no me la reconoce...
No me he expresado bien, perdona.
La librería se usa de la misma forma que hasta ahora, sólo que ahora el valor de status se puede cambiar a un valor > 0 en caso de error.
curl_easy_perform() es el nombre de la función C que se ejecuta cuando tú llamas a la función curl_perform() de bennu y el valor de status se cambia a lo que devuelva.

Por eso te he enlazado a la lista de errores.


[Edito] Acabo de probar el siguiente código en OSX:import "mod_video"
import "mod_curl"
import "mod_say"
import "mod_mouse"
import "mod_text"
import "mod_map"
import "mod_file"

Global
int width = 1024;
int height = 768;
int quit=0;
end;

Process bouncer()
Private
    int vx=3, vy=3;

Begin
    graph = load_png("Icon.png");
    // Position the graphic onscreen
    x = 10+graphic_info(0, GRAPH, G_WIDTH);
    y = 10+graphic_info(0, GRAPH, G_HEIGHT);
    while(quit == 0)
        if(x + vx >= width || x+vx < 0)
            vx = -vx;
        end
        if(y+vy >= height || y+vy < 0)
            vy = -vy;
        end
        x += vx; y += vy;
        FRAME;
    End;
End;

Process main()
Private
    int i=0, status=0, curl=0;
    int tostring=0;     // Switch to 1 to download to a string
    string output;

Begin
    set_mode(width, height, 16);
   
    // Remove Google logo, if it exists already
    if(file_exists("classicplus.png"))
        fremove("classicplus.png");
        say("Removed existing logo");
    end;
   
    bouncer();
   
    say("Starting download");
   
    // Start libcurl, set options, perform transfer
    curl = curl_init();
    if(curl == -1)
        say("Curl initialisation failed, quitting");
        quit = 1;
        return;
    end;
   
    curl_setopt(curl, CURLOPT_NOPROGRESS,    1);
    if(tostring == 0)
        // Use this to write to a file
        curl_setopt(curl, CURLOPT_WRITEDATA, "classicplus.png");
        curl_setopt(curl, CURLOPT_URL, "http://www.google.es/logos/classicplus.png");
    else
        // Use this to download to a string
        curl_setopt(curl, CURLOPT_WRITEDATA, &output);
        curl_setopt(curl, CURLOPT_URL, "http://www.google.es/");
    end
   
    curl_perform(curl, &status);
   
    // Wait for the transfer to finish
    while(status < 0)
        FRAME;
    end;
   
    if(status > 0)
        say("Transfer failed with status "+status+", quitting");
        quit=1;
        return;
    end
   
    if(tostring == 0)
        // Replace the bouncer image by the google logo we just downloaded
        unload_map(0, son.graph);
        son.graph = load_png("classicplus.png");
    else
        write(0, 0, 0, 0, output);
    end
   
    curl_cleanup(curl);
   
    say("Download done!");

    while(! mouse.right)
        FRAME;
    end;
    quit=1;
End;

Y el resultado ha sido:imac:mod_curl joseba$ bgdi main
Removed existing logo
Starting download
Status: -2
[...]
Status: -2
Transfer failed with status 6, quitting
De forma que si me voy a la lista de errores que te he enlazado, el 6 es CURLE_COULDNT_RESOLVE_HOST. Entonces me acuerdo de que tengo el bittorrent dándolo todo y saturando mi conexión incluso para lo más básico :)
Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: josebita on January 24, 2012, 10:29:53 PM
Actualizados binarios para OSX y reenlazados desde Google Code, a ver si el FBI no lo chapa.
Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: La momia que fuma on January 24, 2012, 10:50:18 PM
>_<


Yo sigo de pesao, jeje


He estado probando a ver si conseguía que saltase el error...como no lo conseguía probé con tu código a ver si era gambazo mio (Cambiando la dirección para que intente descargar algo que no existe)...pero tampoco me da resultado.


No da error y crea un classicplus.png vacío...


Cogí la dll (versión win) del link del 1er post, supongo que es ese, no? (Al menos pone que se actualizó ayer)
Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: josebita on January 24, 2012, 11:09:50 PM
Sí, el enlace es ese.
El tema es que el error que te está dando es un error 404 típico de esos de que no se encuentra el fichero.
Los errores que te va a dar la librería te saldrán en caso de que pongas un protocolo raro (prueba a poner httjhsgdjhsfajh://www.google.com) que no sea capaz de encontrar el host (desconecta el ordenador de internet para hacer la prueba) y cosas así.

Si la librería es capaz de conectarse al servidor y el servidor le devuelve una página de error, la librería ahora mismo no se entera.

De momento lo más sencillo para comprobar si la transferencia se ha completado correctamente o no es checkear los valores de retorno de las funciones de carga (load_png y similares).

==

La verdad es que no lo había probado, pero eso se haría leyendo las cabeceras que te mande de vuelta el servidor. Es una opción de configuración de libcurl pero hay que incluirla en la librería a mano así que voy a necesitar unos días para poder implementarla, pero no debería ser complicado.

Basicamente lo que harás será hacer otra llamada a curl_setopt() donde le indiques dónde quieres guardar las cabeceras que te mande el servidor -igual que se hace ahora con el fichero a descargar en sí- y luego leerla tú (desde código Bennu) para ver si ha fallado o no.


Por eso es bueno que useis la librería, así mejora :)
Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: La momia que fuma on January 25, 2012, 03:17:16 AM
Aaah, vale, si, es lo que me explicabas hace un par de posts, que no me enteré bien jeje :P


Gracias!
Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: SplinterGU on January 29, 2012, 12:02:49 AM
joseba...

con estas lineas, si la curl_easy_perform da CURLE_OK, podes obtener el http response code con las siguientes lineas (si da diferente a CURL_OK, entonces es otro tipo de error no http, sino por ejemplo, no se puede resolver el nombre dns, error de conexion, etc)


        long theResponseCode;
        ...
    res = curl_easy_getinfo(curl, CURLINFO_HTTP_CODE, &theResponseCode);
    if (res == CURLE_OK) {
            printf( "HTTP_RESPONSE_CODE=%d\n", theResponseCode );
    }


con esto... 200 es ok... 404 not found, etc
Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: josebita on January 29, 2012, 12:23:01 AM
Ok, thanks lo añadiré.

En todo caso también añadiré la funcionalidad de descarga de cabeceras, que imagino que será útil. En general, ahora mismo funciona bien pasar cualquier opción que se pase como entero o cadena, pero los punteros los tengo que "empalmar" a mano.


[Edito] ¡Bienvenido de vuelta del retiro espiritual! :)
Title: Re: Binding mod_curl [Descarga de ficheros de Internet]
Post by: SplinterGU on January 29, 2012, 01:07:14 AM
gracias!
Title: Re:Binding mod_curl [Descarga de ficheros de Internet]
Post by: Erkosone on February 21, 2012, 05:58:27 PM
Buenas, he estado "intentando" hacer algo con curl en bennu pero sinceramente soy un completo ignorante de esta librería, si alguno de vosotros la conoce lo suficiente como para traducir este Script que os dejo, se podrá postear en Facebook directamente desde los juegos programados en bennu.


De verdad que es muy interesante, mi problema.. la completa ignorancia sobre curl..


Alguien con conocimiento de la lib sabe traducir esto a código bennu??




#!/bin/bash
#cambia esto
email="tu_email_de_usuario_en_facebook"
pass="tu_contraseña_en_facebook"
#a partir de aquí no es necesario cambiar nada más
texto=$1
if [ -z "$texto" ]; then echo -e "Uso:\n$0 \"texto a publicar\"\n\n"; exit 1 ;fi
texto=${texto:0:140}
cokkies="~/.cookies.txt"
user_agent="Mozilla/5.0 (Windows; U; MSIE 7.0; Windows NT 6.0; es-ES)"
#nos logeamos y cogemos la url de la página redirigida
pagina=`curl -L --silent --keepalive-time 5 --user-agent "${user_agent}" --cookie "${cokkies}" --cookie-jar "${cokkies}" -d "email=$email" -d "pass=$pass" -d "login=Entrar" https://m.facebook.com/login.php (https://m.facebook.com/login.php)`
pagina_redirige=`echo $pagina | sed -r 's/.*href="(http:.*;manual_redirect=1)".*/\1/g'`
#conectamos con la nueva página y leemos los datos que contiene su formulario para postear a facebook
pagina_con_formulario=`curl -L --silent --user-agent "${user_agent}" --cookie "${cokkies}" --cookie-jar "${cokkies}" "$pagina_redirige"`
url_action=`echo $pagina_con_formulario | sed -r 's/.*fbb=(.*&amp.*refid=.?)".*/\1/'`
post_form_id=`echo -n $pagina_con_formulario | sed -r 's/.*name="post_form_id" value="([^"]*)".*/\1/g'`
fb_dtsg=`echo -n $pagina_con_formulario | sed -r 's/.*name="fb_dtsg" value="([^"]*)".*/\1/g'`
url_action_completo="http://m.facebook.com/a/home.php?fbb= (http://m.facebook.com/a/home.php?fbb=)$direccionForm"
#ya tenemos los datos con los que componer el query final a Facebook, enviamos el mensaje
curl -X POST --user-agent "$user_agent" --cookie "$cokkies" --cookie-jar "$cokkies" --data-urlencode "status='$texto'" -d "update=Compartir" -d "post_form_id=$post_form_id" -d "fb_dtsg=$fb_dtsg" "$url_action_completo"
exit
Title: Re:Binding mod_curl [Descarga de ficheros de Internet]
Post by: SplinterGU on February 21, 2012, 07:15:11 PM
no pedis nada!

ahi no solo tenes requerimiento curl, sino tambien tenes manejo de regular expresion con submatches...
Title: Re:Binding mod_curl [Descarga de ficheros de Internet]
Post by: Erkosone on February 21, 2012, 07:55:06 PM
Se que lo pido desde la mas completa ignorancia, nunca hice algo así, y desconozco lo complejo que pueda ser montar esto en bennu.
Title: Re:Binding mod_curl [Descarga de ficheros de Internet]
Post by: josebita on February 21, 2012, 11:00:29 PM
Quote from: Erkosone on February 21, 2012, 05:58:27 PM
Buenas, he estado "intentando" hacer algo con curl en bennu pero sinceramente soy un completo ignorante de esta librería, si alguno de vosotros la conoce lo suficiente como para traducir este Script que os dejo, se podrá postear en Facebook directamente desde los juegos programados en bennu.


De verdad que es muy interesante, mi problema.. la completa ignorancia sobre curl..


Alguien con conocimiento de la lib sabe traducir esto a código bennu??




#!/bin/bash
#cambia esto
email="tu_email_de_usuario_en_facebook"
pass="tu_contraseña_en_facebook"
#a partir de aquí no es necesario cambiar nada más
texto=$1
if [ -z "$texto" ]; then echo -e "Uso:\n$0 \"texto a publicar\"\n\n"; exit 1 ;fi
texto=${texto:0:140}
cokkies="~/.cookies.txt"
user_agent="Mozilla/5.0 (Windows; U; MSIE 7.0; Windows NT 6.0; es-ES)"
#nos logeamos y cogemos la url de la página redirigida
pagina=`curl -L --silent --keepalive-time 5 --user-agent "${user_agent}" --cookie "${cokkies}" --cookie-jar "${cokkies}" -d "email=$email" -d "pass=$pass" -d "login=Entrar" https://m.facebook.com/login.php (https://m.facebook.com/login.php)`
pagina_redirige=`echo $pagina | sed -r 's/.*href="(http:.*;manual_redirect=1)".*/\1/g'`
#conectamos con la nueva página y leemos los datos que contiene su formulario para postear a facebook
pagina_con_formulario=`curl -L --silent --user-agent "${user_agent}" --cookie "${cokkies}" --cookie-jar "${cokkies}" "$pagina_redirige"`
url_action=`echo $pagina_con_formulario | sed -r 's/.*fbb=(.*&amp.*refid=.?)".*/\1/'`
post_form_id=`echo -n $pagina_con_formulario | sed -r 's/.*name="post_form_id" value="([^"]*)".*/\1/g'`
fb_dtsg=`echo -n $pagina_con_formulario | sed -r 's/.*name="fb_dtsg" value="([^"]*)".*/\1/g'`
url_action_completo="http://m.facebook.com/a/home.php?fbb= (http://m.facebook.com/a/home.php?fbb=)$direccionForm"
#ya tenemos los datos con los que componer el query final a Facebook, enviamos el mensaje
curl -X POST --user-agent "$user_agent" --cookie "$cokkies" --cookie-jar "$cokkies" --data-urlencode "status='$texto'" -d "update=Compartir" -d "post_form_id=$post_form_id" -d "fb_dtsg=$fb_dtsg" "$url_action_completo"
exit
¡Wow! En principio debería ser posible, pero la verdad es que como te dice Splinter: es una ejemplo relativamente complejo. ¿Alguien se anima a intentarlo y me dice si se puede o tengo que añadir algo más a la librería?
Title: Re:Binding mod_curl [Descarga de ficheros de Internet]
Post by: Erkosone on February 22, 2012, 01:58:27 AM
Si funcionase, incluso se podría hacer una función específica para Facebook que posteara algo así como:


Bennu GameCenter: Pepe acaba de superarse consiguiendo 97456 puntos en el juego "lo que sea".  Superalo si te atreves!

Parece una chorrada, pero cosas como estas son las que hacen que la gente se fije en determinados juegos, si mi amigo lo juega, voy a jugarlo también haber si le gano.
Yo en esto no puedo aportar nada.. no se ni como empezarlo, pero si lo consiguierais.. sería algo grande.

Title: Re:Binding mod_curl [Descarga de ficheros de Internet]
Post by: SplinterGU on February 22, 2012, 03:09:08 AM
no es algo de escribir un par de lineas, por lo menos toda la parte de regex (sed) no esta implementada en bennugd... habria que hacerlo mano, parsear las strings y demas... y eso es lo mas complejo de lo que pides.

es una tarea de algunas cuantas horas de trabajo...

lamentablemente no puedo dedicar tanto tiempo a desarrollar la funcion... pero si tienes dudas concretas puedo ayudarte respondiendolas.

si te sugiero que te leas en manpages del comando unix sed y del curl... tambien te leas algun articulo de patterns/cadenas regex, que significado tiene cada caracter... que para que te des una idea son como los * y ? de los nombres de archivos cuando haces un dir o ls, pero mucho mas potente y tampoco * y ? significan eso en una cadena regex, tienen otro significado, pero lo mencione para que te des una idea de que hablamos.

una vez que entiendas que hace ese script que pasteaste aca, vas a saber como implementarlo en bennugd.
Title: Re:Binding mod_curl [Descarga de ficheros de Internet]
Post by: Erkosone on February 22, 2012, 12:35:02 PM
Estoy mirando de entender el tema.. Splinter ese script es un poco retorcido si, he encontrado otro que tiene una pinta muy buena, por lo menos a mi me parece que es bastante mas factible, es para Twitter:

http://twitter.com/statuses/update.xml';
// Alternative JSON version
// $url = 'http://twitter.com/statuses/update.json';
// Set up and execute the curl process
$curl_handle = curl_init();
curl_setopt($curl_handle, CURLOPT_URL, "$url");
curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 2);
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl_handle, CURLOPT_POST, 1);
curl_setopt($curl_handle, CURLOPT_POSTFIELDS, "status=$message");
curl_setopt($curl_handle, CURLOPT_USERPWD, "$username:$password");
$buffer = curl_exec($curl_handle);
curl_close($curl_handle);
// check for success or failure
if (empty($buffer)) {
    echo 'message';
} else {
    echo 'success';
}
?>
[/size]
[/size]
[/size]
Haber si termino de estudiarme el anterior y pruebo este, pero creo a simple vista que es bastante mas utilizable desde bennu, quizá este si que se pueda traducir facilmente?  disculpad mi ignorancia sobre el tema.. recién empiezo con esto.
Title: Re:Binding mod_curl [Descarga de ficheros de Internet]
Post by: SplinterGU on February 22, 2012, 12:49:19 PM
ese ultimo casi no necesitas traducir nada... salvo las diferencias de sintaxis del lenguaje... josebita hizo el wrapper parecido a como se usa en C o php, asi que mirate las funciones, y lo vas a traducir facil.
Title: Re:Binding mod_curl [Descarga de ficheros de Internet]
Post by: Erkosone on February 22, 2012, 01:02:28 PM
Voy a ello, haber si funciona este código, si consigo algo dejaré el código en la sección recursos, haber que tal se me da..  ::)
Title: Re:Binding mod_curl [Descarga de ficheros de Internet]
Post by: Erkosone on February 22, 2012, 01:41:06 PM
No me aclaro con estas 2 lineas:



   curl_setopt(curl, CURLOPT_CONNECTTIMEOUT, 2);
   curl_setopt(curl, CURLOPT_RETURNTRANSFER, 1);


Haber si veo como se escriben estos parámetros en bennu..

Title: Re:Binding mod_curl [Descarga de ficheros de Internet]
Post by: SplinterGU on February 22, 2012, 03:54:43 PM
no hacen falta, son de php.
Title: Re:Binding mod_curl [Descarga de ficheros de Internet]
Post by: josebita on February 22, 2012, 05:07:12 PM
Sí, el ejemplo del twitter debería ser muy fácil :)
Title: Re:Binding mod_curl [Descarga de ficheros de Internet]
Post by: Erkosone on February 22, 2012, 06:55:26 PM
Me he creado una cuenta personal de Twitter para probar este tema, pero no logro hacerlo funcionar, seguramente estoy haciendo alguna burrada por que no se muy bien como va esta lib..


Así a bote pronto me surge una duda rápida, en que supuesta url debería postear?  no lo tengo del todo claro..  "http://www.twitter.com" directamente ???
Title: Re:Binding mod_curl [Descarga de ficheros de Internet]
Post by: Erkosone on February 22, 2012, 07:16:19 PM

Estoy probando con este código, alguien que conozca bien la c_url ve alguna aberración? seguro que algo mal hay..
la variable user en el programa real la tengo con mi usuario y contraseña, por si alguien va a preguntar XD..

import "mod_video"
import "mod_curl"
import "mod_say"
import "mod_mouse"
import "mod_text"
import "mod_map"
import "mod_file"
Import "mod_key"
Import "mod_proc"


Global
   int quit = 0;
   string url = "http://twitter.com/statuses/update.xml (http://twitter.com/statuses/update.xml)";
   
   string user = "username:password";
   string msg_ = "BennuGD post test..";




Process main()
Private
    int i=0, status=0, curl=0;
    string output;


Begin
    set_mode(320, 480, 16);
   set_fps(30,0);
   
   curl = curl_init();
    if(curl == -1)
        say("Curl initialisation failed, quitting");
        quit = 1;
        return;
    end;
   
   
   curl_setopt(curl, CURLOPT_URL, url);
   curl_setopt(curl, CURLOPT_POST, 1);


   
   curl_setopt(curl, CURLOPT_POSTFIELDS, msg_);
   curl_setopt(curl, CURLOPT_USERPWD, user);
   curl_perform(curl, &status);
   
   while(status == 0)
      frame;
   end
   curl_cleanup(curl);
   
   write(0,160,20,4,"Transfer Completed.");   
   loop
      if(key(_esc))
         exit(0,0);
      end
      frame;
   end
end
Title: Re:Binding mod_curl [Descarga de ficheros de Internet]
Post by: KeoH on February 22, 2012, 10:29:21 PM
en el script de arriba tienes q la url es " ... update.json" ... igual es eso xDD ni idea q formato es el json ... a mi me suena a personaje biblico xDD
Title: Re:Binding mod_curl [Descarga de ficheros de Internet]
Post by: josebita on February 22, 2012, 11:15:02 PM
Bueno, en el bucle de espera debes hacer:
   while(status == -2)
      frame;
   end
Y al ejecutar tu ejemplo twitter me devuelve:

Quote<?xml version="1.0" encoding="UTF-8"?>
<errors>
  <error code="53">Basic authentication is not supported</error>
</errors>
Parece que eliminaron la opción de enviar tweets de esa forma que pones hace tiempo... Ahora es bastante más complejo desde un punto de vista técnico y no sé si se podrá implementar en bennu, dado que hay que usar OAuth, sorry :(

http://es.wikipedia.org/wiki/OAuth (http://es.wikipedia.org/wiki/OAuth)


[Edito] Si alguien lo quiere intentar, yo empezaría por aquí:
http://oauth.net/documentation/getting-started/
http://oauth.googlecode.com/svn/code/php/
Title: Re:Binding mod_curl [Descarga de ficheros de Internet]
Post by: Erkosone on February 23, 2012, 01:05:32 AM
Haber, voy a preguntar algo que quizá sea una burrada de las grandes.. pero vaya no me quedo tranquilo si no lo pregunto..


Supongamos que tengo un servidor programado en PHP, una web vaya.. y tiene este sistema que comentas ya integrado, si le envío a esta web un post normal con curl de algúna manera podría dicha web reenviar el post a tweeter o facebook? supongo que si pero no estoy seguro.


Lo pregunto por que hay varios SDK para PHP que tienen soporte directo a Facebook y Twitter, y si se pudiera hacer un intermediario para los post´s podría valer como solución.


Haber si lo hablo con pinger y el sabe algo de esto, por que yo de programación web..
Title: Re:Binding mod_curl [Descarga de ficheros de Internet]
Post by: josebita on February 23, 2012, 03:16:26 PM
En principio se debería poder hacer algo así, sí, pero desconozco los detalles de cómo funcionan esos SDKs así que no te lo puedo asegurar.
Title: Re:Binding mod_curl [Descarga de ficheros de Internet]
Post by: Erkosone on February 26, 2012, 03:39:01 PM
Buscando un poco mas por la red he visto que hay un método online para utilizar, y esta vez si que parece que funciona la llamada, el único problema que tengo es que dice que el login básico no es soportado, supongo que  será por temas de seguridad..


Joseba o Splinter, si sabéis como modificar esto creo que pueda funcionar el tema de postear desde los juegos, digo que "creo" que si por que ya no se queja de nada mas que de la autentificación básica.


Os pego el source en bennu que he utilizado.





import "mod_video"
import "mod_curl"
import "mod_say"
import "mod_mouse"
import "mod_text"
import "mod_map"
import "mod_file"
Import "mod_key"
Import "mod_proc"


Global
   int quit = 0;
   string url = "http://api.twitter.com/1/statuses/update.json";
   
   string user = "username:password";    // aqui escribir el username y password..
   string msg_ = "BennuGD post test..";
   string respuesta = "";




Process main()
Private
    int i=0, status=0, curl=0;
    string output;


Begin
    set_mode(320, 480, 16);
   set_fps(30,0);
   
   curl = curl_init();
    if(curl == -1)
        say("Curl initialisation failed, quitting");
        quit = 1;
        return;
    end;
   
   
   curl_setopt(curl, CURLOPT_URL, url);
   curl_setopt(curl, CURLOPT_PORT, 80);
   curl_setopt(curl, CURLOPT_POST, 1);
   curl_setopt(curl, CURLOPT_POSTFIELDS, msg_);
   curl_setopt(curl, CURLOPT_USERPWD, user);
   //curl_exec(curl);
   curl_perform(curl, &status);
   
   while(status == -2)
      frame;
   end
   curl_cleanup(curl);
   
   write(0,160,20,4,"Transfer Completed.");   
   loop
      if(key(_esc))
         exit(0,0);
      end
      frame;
   end
end
Title: Re:Binding mod_curl [Descarga de ficheros de Internet]
Post by: Erkosone on February 26, 2012, 03:40:47 PM
Exactamente lo que me sale por consola es esta linea: ("errors":[{"code":53,"message":"Basic authentificacion is not supported"}]}"





Title: Re:Binding mod_curl [Descarga de ficheros de Internet]
Post by: Erkosone on February 26, 2012, 03:43:27 PM
Por si a alguien le interesa dar un vistazo a la doc del API de twitter esta aquí:  https://dev.twitter.com/docs (https://dev.twitter.com/docs)
Parece que puede usarse con curl desde bennu, por que a mi me responde con el error en cuestión, haber is alguien sabe hacer el tema del token de login.
Title: Re:Binding mod_curl [Descarga de ficheros de Internet]
Post by: josebita on February 26, 2012, 05:39:15 PM
No va a funcionar por ese método. Ese "Basic authentification" es la llamada que haces a http://api.twitter.com/1/statuses/update.json (http://api.twitter.com/1/statuses/update.json) y la única diferencia entre hacerlo a la URL anterior y a ésta es la forma en la que se te devuelve la información.

Como te decía: la autentificación básica -y por tanto el método que intentas- ya no funciona (desde finales de 2010, creo). Las dos únicas formas de hacerlo ahora son:
* OAuth.
* Rellenando los formularios mediante curl tal y como lo harías con el navegador.

Pero la segunda se te romperá casi seguro cada vez que la gente de twitter actualice la web.


[Edito] Aquí explican cómo hacer el cambio:
https://dev.twitter.com/docs/auth/moving-from-basic-auth-to-oauth (https://dev.twitter.com/docs/auth/moving-from-basic-auth-to-oauth)
Title: Re:Binding mod_curl [Descarga de ficheros de Internet]
Post by: Rein (K´)ah Al-Ghul on February 26, 2012, 05:43:59 PM
El plugin de pidgin para twitter no servirian para esto??