From mboxrd@z Thu Jan 1 00:00:00 1970 From: John Hendy Subject: Re: [ANN, OT] Emacs web-server, a new option for serving Org-mode files Date: Sat, 11 Jan 2014 19:10:17 -0600 Message-ID: References: <87zjn24cgx.fsf@gmail.com> <87mwj2ywy2.fsf@gmail.com> <874n5ayriq.fsf@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:49222) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1W29ZE-0006GG-AY for emacs-orgmode@gnu.org; Sat, 11 Jan 2014 20:10:21 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1W29ZC-0000PY-PE for emacs-orgmode@gnu.org; Sat, 11 Jan 2014 20:10:20 -0500 Received: from mail-ob0-x236.google.com ([2607:f8b0:4003:c01::236]:60333) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1W29ZC-0000PM-H1 for emacs-orgmode@gnu.org; Sat, 11 Jan 2014 20:10:18 -0500 Received: by mail-ob0-f182.google.com with SMTP id wn1so4363647obc.41 for ; Sat, 11 Jan 2014 17:10:18 -0800 (PST) In-Reply-To: <874n5ayriq.fsf@gmail.com> List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: Eric Schulte Cc: Org Mode Mailing List On Sat, Jan 11, 2014 at 6:26 PM, Eric Schulte wrote: > John Hendy writes: > >> On Sat, Jan 11, 2014 at 4:29 PM, Eric Schulte wrote: >>>> >>>> The "Hello world" example worked splendidly for me out of the box. I'm >>>> having a bit of difficulty with serving up a file via this example: >>>> http://eschulte.github.io/emacs-web-server/File-Server.html#File-Server >>>> >>>> Perhaps I don't understand how the function is supposed to work... It >>>> says that the docroot is the current working directory in the example, >>>> so I cd'd to a directory with an .html file in it, started `emacs -Q` >>>> from the command line, ran `M-x load-file RET ~/.emacs`, and then >>>> evaluated the code from the example in the *scratch* buffer. I'm >>>> getting the 404 error. Should I be modifying that code somehow? >>>> >>> >>> Since the value of the default-directory variable may not be easy to >>> predict, you're probably better off changing >>> >>> (docroot default-directory) >>> >>> to >>> >>> (docroot "/full/path/to/directory/of/org/files") >>> >>> I only used default-directory in the example because I couldn't think of >>> a good static path which would probably exist on most people's systems. >> >> Hmmm. Still having trouble. I tried: >> >> (lexical-let ((docroot "/home/jwhendy/Desktop/e-web-server-test")) >> (ws-start >> (list (cons (cons :GET ".*") >> (lambda (request) >> (with-slots (process headers) request >> (let ((path (substring (cdr (assoc :GET headers)) 1))) >> (if (ws-in-directory-p docroot path) >> (ws-send-file process (expand-file-name path docroot)) >> (ws-send-404 process))))))) >> 9003)) >> >> That directory contains just two .org files. When I open >> localhost:9003, it downloads a file called `download`, containing the >> following: >> >> HTTP/1.1 500 Internal Server Error >> Content-type: text/plain >> >> Caught Error: (error "IO error reading >> /home/jwhendy/Desktop/e-web-server-test: Is a directory") >> >> So, I then tried with the first line like so (trailing slash): >> >> (lexical-let ((docroot "/home/jwhendy/Desktop/e-web-server-test/")) >> >> Then I'm back to the 404 error. Sorry if I'm being dense and didn't >> follow something else implied. I noticed the tutorial mentioned >> mime-types. Do I need to set something with xdg-mime for .org files or >> do anything else other than simply doing (require 'web-server)? >> >> Since the hello world example worked, I'm assuming the setup is at >> least partially sound. >> > > Oh, the example is confusing, I just updated both the example and the > documentation. The problem is that the example serves files, but not > directory listings. So since you just requested "/" it said there was > nothing there. If you pull down the latest version of the web-server > that example will now give a directory listing when "/" is requested. So instead of a path, should I have provided a specific file name? I guess I was just going by the description: "The following example implements a file server which will serve files from..." Perhaps I'm still not understanding what, exactly, the web-server does! Do you point it to *a* file, or a directory containing numerous files? Or just to understand better, can you give a concrete example of what I could do with my example path which contains .org files (perhaps via the original code before you modified it, just so I understand the intent). Or should I have been doing something like http://localhost:9003/file.org? > >> >> I did wonder why I get no completions for `M-x ws-TAB`. Should emacs >> be aware of ws-* functions? Or is that not how one would run them >> (e.g. M-x something is actually a command, not a function and my >> nomenclature is incorrect)? >> > > Because none of the ws-* functions are commands, they are all functions > (meaning they don't have an interactive spec). If you do `M-x > describe-function ws-TAB' you'll see a completion list. > > This is because ws-* functions are all meant to be used from source > code, not called with M-x. If you think any should have an interactive > spec added please let me know. Gotcha -- indeed, it was my poor grasp of Emacs terminology :) Sorry for the denseness above. I'm not a super web guy, so I'm probably just getting hung up on poor understanding of the term "web server" and what exactly it would do in this context. For my limited Apache experience I suppose I always had an index.html with links elsewhere, so that's sort of the extent of my knowledge. Thanks for all the assistance! John > > Thanks, > >> >> >> Thanks, >> John >> >>> >>>> >>>> >>>> Thanks and great work -- this is really neat! >>> >>> Thanks, and please do let me know if anything else doesn't work as >>> expected. >>> >>> Best, >>> >>>> >>>> John >>>> >>>> >>>>> Best, >>>>> >>>>> Footnotes: >>>>> [1] https://github.com/eschulte/emacs-web-server >>>>> >>>>> [2] http://eschulte.github.io/emacs-web-server/tutorials/#sec-1 >>>>> >>>>> [3] http://eschulte.github.io/emacs-web-server/Org_002dmode-Export.html#Org_002dmode-Export >>>>> >>>>> [4] https://github.com/eschulte/emacs-web-server/blob/master/examples/013-org-export-service.el >>>>> >>>>> [5] https://github.com/eschulte/emacs-web-server/blob/master/examples/011-org-agenda.el >>>>> >>>>> [6] https://github.com/eschulte/org-ehtml >>>>> >>>>> [7] http://eschulte.github.io/emacs-web-server/benchmark/ >>>>> >>>>> -- >>>>> Eric Schulte >>>>> https://cs.unm.edu/~eschulte >>>>> PGP: 0x614CA05D >>>>> >>> >>> -- >>> Eric Schulte >>> https://cs.unm.edu/~eschulte >>> PGP: 0x614CA05D > > -- > Eric Schulte > https://cs.unm.edu/~eschulte > PGP: 0x614CA05D