[Prev][Next][Index][Thread]

# Re: Inter-moo communications?

- Date: Fri, 23 Feb 1996 12:41:01 PST
- From:
- Cc: moo-cows@parc.xerox.com
- Content-Transfer-Encoding: 7bit
- Content-Type: text/plain; charset=US-ASCII
- In-Reply-To: <Pine.BSF.3.91.960223121352.22601A-100000@vespucci.iquest.com> from "Edward Goff" at Feb 23, 96 10:15:18 am

    >You know I keep hearing about adding web to this moo and adding FUP to
    >this one.. internetworking moo on this one..

    FUP is available from the usual place: bioinfo.weizmann.ac.il in the
    /pub/software/MOOsupport/FUP directory.  It allows access to the local (that
    is, wherever the MOO is) filesystem.  Various people have written in-db
    gopher, ftp, nntp, http, etc. clients; no doubt they will also respond.

    In any case, making your MOO handle web requests is no big deal.  It needs
    to handle connections which send an initial login command of GET or POST, like
       GET somedocumentpath someversionnumber
    In the case of POST commands (for forms), you will also need to read and
    decode the additional lines of text (which contain the forms data).  Finally,
    you'll need to perform boot_player() on the connection, so that the Web client
    knows you're done.

    Similarly, enable your MOO to make web requests by opening a
    network connection to the desired URL (remembering many web servers are at
    port 80), sending a line of text like that above, and then receiving and
    deciphering the results.  A simple example to access a hypertext dictionary:

    @verb me:@webster any none none
    @program me:@webster
    "Usage: @webster <word>";
    "Looks up the definition, etc. of the word using an online dictionary.";
    "(the site should be in a separate property, not explicitly in the verb)";
    site = {"c.gp.cs.cmu.edu", 5103};
    "this routine should also be updated to take advantage of 1.8.0's new";
    " connection-handling features...";
    {word} = args;
    errs = {E_PERM, E_INVARG, E_QUOTA};
    "";
    "attempt to connect";
    "";
    try
      conn = open_network_connection(@site);
    except e (@errs)
      e = {"network error", "outbound connections disabled", "connection refused",
     "resource limit exceeded"}[(e in errs) + 1];
      player:tell(tostr("Unable to lookup a definition for ", word, " (", e, ")."));
    endtry
    "";
    "request the definition of the word";
    "";
    notify(conn, "GET /prog/webster?"+word);
    try
      add = 0;
      while(typeof(line = read(conn)) == STR)
      "site-specific code to decode the results; you may want to separate this";
      "into a separate routine";
        if (index(line, "Webster Definition"))
          add = 1;
        elseif (index(line, "Additional Lookup"))
          add = 0;
        endif
        if(add)
          "similarly, the following code is a very simplistic version of a";
          " separate routine to strip HTML tags from text:";
          if(line in {"<P>","<p>","<br>","<BR>"})
            line = "";
          elseif (line in {"<HR>","<hr>"})
            line = $string_utils:space(60,"-");
          else
            while(m = match(line, "%(.*%)<%([^<>]*%)>%(.*%)"))
              line = substitute("%1%3", m);
            endwhile
          endif
          player:tell(line);
        endif
      endwhile
    except e (ANY)
      "nothing more to read from the connection";
    endtry
    boot_player(conn);
    .

    michael

Follow-Ups:

- Re: Inter-moo communications?

- From: Edward Goff <egoff@iquest.com>

References:

- Re: Inter-moo communications?

- From: Edward Goff <egoff@iquest.com>

- Prev: Re: Inter-moo communications?
- Next: Re: Inter-moo communications?
- Index: MOO-cows
- Thread: MOO-cows

Home | Subject Index | Thread Index