From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Marcin Borkowski Newsgroups: gmane.emacs.help Subject: Re: A (probably silly) problem with request.el Date: Wed, 10 Jun 2015 23:58:00 +0200 Message-ID: <87r3pjmdjr.fsf@mbork.pl> References: <87bngv89g5.fsf@mbork.pl> <87h9qmsbyn.fsf@members.fsf.org> <87fv668d9f.fsf@mbork.pl> <5571C2EC.90903@members.fsf.org> <87y4jx7so5.fsf@mbork.pl> <878ubwskor.fsf@members.fsf.org> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: ger.gmane.org 1433973530 19582 80.91.229.3 (10 Jun 2015 21:58:50 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Wed, 10 Jun 2015 21:58:50 +0000 (UTC) To: Help Gnu Emacs mailing list Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Wed Jun 10 23:58:37 2015 Return-path: Envelope-to: geh-help-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1Z2o15-0006ad-RU for geh-help-gnu-emacs@m.gmane.org; Wed, 10 Jun 2015 23:58:35 +0200 Original-Received: from localhost ([::1]:42481 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z2o15-0002uu-8R for geh-help-gnu-emacs@m.gmane.org; Wed, 10 Jun 2015 17:58:35 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:60729) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z2o0t-0002ug-MS for help-gnu-emacs@gnu.org; Wed, 10 Jun 2015 17:58:24 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Z2o0q-0002MW-GQ for help-gnu-emacs@gnu.org; Wed, 10 Jun 2015 17:58:23 -0400 Original-Received: from mail.mojserwer.eu ([2a01:5e00:2:52::8]:37753) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z2o0q-0002Kz-94 for help-gnu-emacs@gnu.org; Wed, 10 Jun 2015 17:58:20 -0400 Original-Received: from localhost (localhost [127.0.0.1]) by mail.mojserwer.eu (Postfix) with ESMTP id 3EA4E572006 for ; Wed, 10 Jun 2015 23:58:13 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at mail.mojserwer.eu Original-Received: from mail.mojserwer.eu ([127.0.0.1]) by localhost (mail.mojserwer.eu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id tpT1Y6roonBz for ; Wed, 10 Jun 2015 23:58:07 +0200 (CEST) Original-Received: from localhost (unknown [109.232.24.146]) by mail.mojserwer.eu (Postfix) with ESMTPSA id 4B37B572004 for ; Wed, 10 Jun 2015 23:58:07 +0200 (CEST) In-reply-to: <878ubwskor.fsf@members.fsf.org> X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2a01:5e00:2:52::8 X-BeenThere: help-gnu-emacs@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: Users list for the GNU Emacs text editor List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Original-Sender: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.help:104882 Archived-At: On 2015-06-06, at 21:25, Nicolas Richard wrote: > Marcin Borkowski writes: >> Now the question is: >> how do I do anything reasonable with what I got? In my particular case >> I expect json, so I'd like to use e.g. json.el to convert it to s-exps. >> How do I do that? I tried >> >> (request "http://httpbin.org/get" :parser #'json-read), > > The request form will *never*[1] return json, because it returns before the > request is complete. This is what asynchronous means, and that is why I > said "The real job must be done by a callback function". > > The very first example in the homepage of the package uses httpbin.org. > Here's a simplified version of it : > > (request > "http://httpbin.org/get" > :parser 'json-read > :success (function* > (lambda (&key data &allow-other-keys) > (message "response: %S" data)))) > > Please try it and see what happens. The function mentionned as :success > takes over once the request is complete (well, unless the request fails > obviously...). That is a "callback" function. OK, so I have now another (though related) problem. What I want is to write a function which will accept the url, feed it to =request=, and /return/ the json-translated-to-sexp result. I tried this: (require 'request-deferred) (deferred:$ (request-deferred "http://httpbin.org/get" :parser 'json-read) (deferred:nextc it (lambda (response) (request-response-data response)))) (slightly modified from http://tkf.github.io/emacs-request/manual.html), but it didn't seem to work. (It just returns the struct, not the sexp.) Unfortunately, I do not really understand request's (nor deferred's) docs well enough to be able to debug it myself. Any hints? TIA, -- Marcin Borkowski http://octd.wmi.amu.edu.pl/en/Marcin_Borkowski Faculty of Mathematics and Computer Science Adam Mickiewicz University