Class ScriptRequest

java.lang.Object
org.microproxy.starlark.ScriptRequest
All Implemented Interfaces:
org.microproxy.thirdparty.starlark.eval.StarlarkValue, org.microproxy.thirdparty.starlark.eval.Structure

public final class ScriptRequest extends Object
A request as scripts see it. method, uri, body and text can be assigned; url, scheme, host, port, path and query are derived from the request target and the Host header; an absolute target's scheme stays after the proxy has made the request origin-form for its server, so the hooks that run afterwards see https for an https:// URI the proxy fetched over TLS. For CONNECT, url is the host:port authority and scheme is empty. http_version is the HTTP version the client used: "HTTP/1.1", "HTTP/1.0", "HTTP/2" or "HTTP/3" (requests reach servers as HTTP/1.1, HTTP/2 or HTTP/3, as each server speaks, whichever the client used). Assigning an absolute uri in on_request sends the request to that URI's server, with a Host header to match, also from inside an intercepted session (over TLS for https://).
  • Method Summary

    Modifier and Type
    Method
    Description
    static org.microproxy.thirdparty.starlark.syntax.TypeConstructor
    Types the builtins that return this class (see ScriptType).
    Returns the error message to print for an attempt to access an undefined field.
    com.google.common.collect.ImmutableList<String>
    Returns the names of this value's fields, in some undefined but stable order.
    org.microproxy.thirdparty.starlark.syntax.StarlarkType
    getStarlarkType(org.microproxy.thirdparty.starlark.eval.StarlarkSemantics semantics)
    Returns the Starlark type of this struct.
    Returns the value of the field with the given name, or null if the field does not exist.
    void
    repr(org.microproxy.thirdparty.starlark.eval.Printer printer, org.microproxy.thirdparty.starlark.eval.StarlarkSemantics semantics)
    Prints an official representation of object x.
    void
    setField(String field, Object value)
    Updates the named field of this value as if by the Starlark statement this.field = value.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

    Methods inherited from interface org.microproxy.thirdparty.starlark.eval.StarlarkValue

    checkHashable, debugPrint, isAcyclic, isImmutable, str, truth

    Methods inherited from interface org.microproxy.thirdparty.starlark.eval.Structure

    getValue
  • Method Details

    • getAssociatedTypeConstructor

      public static org.microproxy.thirdparty.starlark.syntax.TypeConstructor getAssociatedTypeConstructor()
      Types the builtins that return this class (see ScriptType).
      Returns:
      the Starlark type constructor for a request value
    • getStarlarkType

      public org.microproxy.thirdparty.starlark.syntax.StarlarkType getStarlarkType(org.microproxy.thirdparty.starlark.eval.StarlarkSemantics semantics)
      Description copied from interface: org.microproxy.thirdparty.starlark.eval.Structure
      Returns the Starlark type of this struct. For efficiency, implementations should override this method to return a memoized value.
      Parameters:
      semantics - the interpreter settings used to determine the type
      Returns:
      the type of this value, or null when no type information is provided
    • getValue

      public Object getValue(String name) throws org.microproxy.thirdparty.starlark.eval.EvalException
      Description copied from interface: org.microproxy.thirdparty.starlark.eval.Structure
      Returns the value of the field with the given name, or null if the field does not exist. The interpreter (Starlark code) calls the getValue below, which has access to StarlarkSemantics.

      The set of names for which getValue returns non-null should match getFieldNames if possible.

      Parameters:
      name - the name of the field to retrieve
      Returns:
      the field value, or null if the field does not exist
      Throws:
      org.microproxy.thirdparty.starlark.eval.EvalException - if a user-visible error occurs (other than non-existent field).
    • getFieldNames

      public com.google.common.collect.ImmutableList<String> getFieldNames()
      Description copied from interface: org.microproxy.thirdparty.starlark.eval.Structure
      Returns the names of this value's fields, in some undefined but stable order.

      A call to getValue for each of these names should return non-null, though this is not enforced.

      The Starlark expression dir(x) reports the union of getFieldNames() and any StarlarkMethod-annotated fields and methods of this value.

      Returns:
      the field names in a stable order
    • setField

      public void setField(String field, Object value) throws org.microproxy.thirdparty.starlark.eval.EvalException
      Description copied from interface: org.microproxy.thirdparty.starlark.eval.Structure
      Updates the named field of this value as if by the Starlark statement this.field = value.
      Parameters:
      field - the name of the field to update
      value - the new Starlark value for the field
      Throws:
      org.microproxy.thirdparty.starlark.eval.EvalException - if the update failed because this value is immutable, does not support field update, or update of that particular field, or because the value was inappropriate.
    • repr

      public void repr(org.microproxy.thirdparty.starlark.eval.Printer printer, org.microproxy.thirdparty.starlark.eval.StarlarkSemantics semantics)
      Description copied from interface: org.microproxy.thirdparty.starlark.eval.StarlarkValue
      Prints an official representation of object x.

      Convention is that the string should be parseable back to the value x. If this isn't feasible then it should be a short human-readable description enclosed in angled brackets, e.g. "<foo object>".

      Parameters:
      printer - a printer to be used for formatting nested values.
      semantics - the interpreter settings used to format nested values
    • getErrorMessageForUnknownField

      public String getErrorMessageForUnknownField(String field)
      Description copied from interface: org.microproxy.thirdparty.starlark.eval.Structure
      Returns the error message to print for an attempt to access an undefined field.

      May return null to use a default error message.

      Specified by:
      getErrorMessageForUnknownField in interface org.microproxy.thirdparty.starlark.eval.Structure
      Parameters:
      field - the undefined field name
      Returns:
      the diagnostic message, or null to use the default