From mboxrd@z Thu Jan 1 00:00:00 1970 From: Eric Schulte Subject: Re: [ANN, OT] Emacs web-server, a new option for serving Org-mode files Date: Sat, 11 Jan 2014 18:53:21 -0700 Message-ID: <878uumt17y.fsf@gmail.com> References: <87zjn24cgx.fsf@gmail.com> <87mwj2ywy2.fsf@gmail.com> <874n5ayriq.fsf@gmail.com> Mime-Version: 1.0 Content-Type: text/plain Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:53497) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1W2AGh-00059b-NC for emacs-orgmode@gnu.org; Sat, 11 Jan 2014 20:55:20 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1W2AGd-0002HL-Ae for emacs-orgmode@gnu.org; Sat, 11 Jan 2014 20:55:15 -0500 Received: from mail-pb0-x22e.google.com ([2607:f8b0:400e:c01::22e]:33712) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1W2AGc-0002HF-Ty for emacs-orgmode@gnu.org; Sat, 11 Jan 2014 20:55:11 -0500 Received: by mail-pb0-f46.google.com with SMTP id ma3so451129pbc.33 for ; Sat, 11 Jan 2014 17:55:09 -0800 (PST) In-Reply-To: (John Hendy's message of "Sat, 11 Jan 2014 19:10:17 -0600") 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: John Hendy Cc: Org Mode Mailing List John Hendy writes: > 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? > Yes, the above would have worked with the original. It assumed you would give it a file name as the end of the URL. > >> >>> >>> 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. > No problem, happy to help and I appreciate your feedback on what parts are not obvious. Best, > > > 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 -- Eric Schulte https://cs.unm.edu/~eschulte PGP: 0x614CA05D