From 20b0059cdef058c2d4b8bce2cda3b2c2a86c1fe1 Mon Sep 17 00:00:00 2001 From: Frederik Deweerdt Date: Mon, 26 Sep 2022 17:51:03 -0700 Subject: [PATCH] Add stub functions for fastly purge --- lib/compute-at-edge-abi/compute-at-edge.witx | 9 +++++++++ lib/compute-at-edge-abi/typenames.witx | 16 ++++++++++++++++ lib/src/linking.rs | 1 + lib/src/wiggle_abi.rs | 1 + lib/src/wiggle_abi/fastly_purge_impl.rs | 19 +++++++++++++++++++ 5 files changed, 46 insertions(+) create mode 100644 lib/src/wiggle_abi/fastly_purge_impl.rs diff --git a/lib/compute-at-edge-abi/compute-at-edge.witx b/lib/compute-at-edge-abi/compute-at-edge.witx index a9884da2..2ae0eb37 100644 --- a/lib/compute-at-edge-abi/compute-at-edge.witx +++ b/lib/compute-at-edge-abi/compute-at-edge.witx @@ -486,3 +486,12 @@ (result $err (expected (error $fastly_status))) ) ) + +(module $fastly_purge + (@interface func (export "purge_surrogate_key") + (param $surrogate_key string) + (param $options_mask $purge_options_mask) + (param $options (@witx pointer $purge_options)) + (result $err (expected (error $fastly_status))) + ) +) diff --git a/lib/compute-at-edge-abi/typenames.witx b/lib/compute-at-edge-abi/typenames.witx index 850f0e84..530b80cb 100644 --- a/lib/compute-at-edge-abi/typenames.witx +++ b/lib/compute-at-edge-abi/typenames.witx @@ -162,3 +162,19 @@ (field $sni_hostname (@witx pointer (@witx char8))) (field $sni_hostname_len u32) )) + +(typename $purge_options_mask + (flags (@witx repr u32) + $soft_purge + $ret_buf ;; all ret_buf fields must be populated + ) +) + +(typename $purge_options + (record + ;; JSON purge response as in https://developer.fastly.com/reference/api/purging/#purge-tag + (field $ret_buf_ptr (@witx pointer u8)) + (field $ret_buf_len (@witx usize)) + (field $ret_buf_nwritten_out (@witx pointer (@witx usize))) + ) +) diff --git a/lib/src/linking.rs b/lib/src/linking.rs index 58c48a07..be5bd278 100644 --- a/lib/src/linking.rs +++ b/lib/src/linking.rs @@ -88,6 +88,7 @@ pub fn link_host_functions(linker: &mut Linker) -> Result<(), Error> { wiggle_abi::fastly_http_resp::add_to_linker(linker, WasmCtx::session)?; wiggle_abi::fastly_log::add_to_linker(linker, WasmCtx::session)?; wiggle_abi::fastly_object_store::add_to_linker(linker, WasmCtx::session)?; + wiggle_abi::fastly_purge::add_to_linker(linker, WasmCtx::session)?; wiggle_abi::fastly_uap::add_to_linker(linker, WasmCtx::session)?; link_legacy_aliases(linker)?; Ok(()) diff --git a/lib/src/wiggle_abi.rs b/lib/src/wiggle_abi.rs index 52f862c1..1d476b63 100644 --- a/lib/src/wiggle_abi.rs +++ b/lib/src/wiggle_abi.rs @@ -48,6 +48,7 @@ macro_rules! multi_value_result { mod body_impl; mod dictionary_impl; mod entity; +mod fastly_purge_impl; mod geo_impl; mod headers; mod log_impl; diff --git a/lib/src/wiggle_abi/fastly_purge_impl.rs b/lib/src/wiggle_abi/fastly_purge_impl.rs new file mode 100644 index 00000000..59f704b3 --- /dev/null +++ b/lib/src/wiggle_abi/fastly_purge_impl.rs @@ -0,0 +1,19 @@ +//! fastly_purge` hostcall implementations. + +use { + super::types::{PurgeOptions, PurgeOptionsMask}, + crate::{error::Error, session::Session, wiggle_abi::fastly_purge::FastlyPurge}, + wiggle::GuestPtr, +}; + +impl FastlyPurge for Session { + #[allow(unused_variables)] // FIXME FDE 2022-09-26: Remove this directive once implemented. + fn purge_surrogate_key<'a>( + &mut self, + surrogate_key: &GuestPtr<'a, str>, + options_mask: PurgeOptionsMask, + options: &GuestPtr<'a, PurgeOptions<'a>>, + ) -> Result<(), Error> { + Err(Error::NotAvailable("FastlyPurge")) + } +}