On Sep 17, 2013, at 9:41 PM, Mark Moseley <[email protected]> wrote:

> I'm just beginning to dig into ATS and liking what I'm seeing and I'm very 
> interested in Lua integration. Details about the Lua API are a bit sparse 
> though, so I had a few questions. I hate to ask really basic RTFM-ish 
> question but I've been banging my head against the wall of google and digging 
> through ATS code.

Yeh sorry, the docs on the Lua plugin don't exist. I think all the features are 
coveres by the examples though (except perhaps the config override support).

> * I've seen a mention somewhere (maybe on this list) that the Lua API is 
> essentially a mapping of 'the API' in general. I've been looking over the SDK 
> docs and trying to match up stuff in there with the bits of Lua in the 
> examples directory.

It's not a direct mapping. I tried to make it "nicer" and more native in feel 
than it would if the APIs were just directly mapped.

> Any guidance on where to look? All of the terms I can find to grep from the 
> 'examples' directory are also terms that are super common throughout the 
> codebase (e.g. url, headers, method, etc), so I've had no luck so far with 
> that route.
> 
> I'm looking at a script that (edited down) does this:
> 
> function remap(request)
>   url = request:url()
>   request.headers['added-bool'] = true
>   ...

When you use Lua as a remap plugin, it executes the global "remap" function on 
each remap request. This is analogous to TSRemapDoRemap().

> 
> I'm curious about things like:
>   - How would I know to call my function 'remap' (it seems to find this 
> function automatically)
>   - Where does that url() method come from (i.e. where in the regular API can 
> I find this and what other methods of the request object are there?)

The remap function is passed a request object which is roughly analogous to 
TSRemapRequestInfo. The remap examples demonstrate the APIs that are available 
on this object.

>   - Where could I find a description of the request object data structure?
> 
> 
> * I'd like to (ab)use the Lua API to do my own remap based on the original 
> destination address on the ATS server. Is that stashed in the request object 
> somewhere?

request:url() gives you a copy of the current URL. You probably want to alter 
this somehow and then set it using request:rewrite().

> * Are there any other Lua ATS docs kicking around, even if they're in a very 
> incomplete and/or rough form? I'd love to see anything you might have and I 
> promise not to complain about its spottiness ;)

Just the examples.

J

Reply via email to