From e939c5da50353d8770943e0d5673bf073ed1860b Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Mon, 13 Apr 2026 02:08:37 +0000 Subject: [PATCH 01/17] codegen metadata --- .stats.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.stats.yml b/.stats.yml index f9ac8b4..c58cb0b 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 48 openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/imagekit-inc%2Fimagekit-70c42eda2bee929830b2537f758400a58dded1f1ef5686a286e2469c35a041a0.yml openapi_spec_hash: cdaeed824e91657b45092765cf55eb42 -config_hash: e3c2679d25f6235381dfb11962fbf3d9 +config_hash: 83967503e501e4199b4042d0d0f2b615 From 799e47c306c5f681891804c6e3ca738b0b2c053c Mon Sep 17 00:00:00 2001 From: Manu Chaudhary Date: Mon, 13 Apr 2026 02:33:03 +0000 Subject: [PATCH 02/17] docs: remove example code for verifying webhook signatures --- README.md | 94 ++----------------------------------------------------- 1 file changed, 2 insertions(+), 92 deletions(-) diff --git a/README.md b/README.md index a136d08..bd98316 100644 --- a/README.md +++ b/README.md @@ -759,100 +759,10 @@ These authentication parameters can be used in client-side upload forms to secur The ImageKit SDK provides utilities to verify webhook signatures for secure event handling. This ensures that webhook requests are actually coming from ImageKit and haven't been tampered with. -### Verifying webhook signatures - -```go -package main - -import ( - "fmt" - "io" - "log" - "net/http" - "os" - - "github.com/imagekit-developer/imagekit-go/v2" - "github.com/imagekit-developer/imagekit-go/v2/option" -) - -func main() { - client := imagekit.NewClient( - option.WithPrivateKey("your_private_key"), - option.WithWebhookSecret("whsec_..."), // Copy from ImageKit dashboard - ) - - // Webhook handler with proper request body handling - http.HandleFunc("/webhook", func(w http.ResponseWriter, req *http.Request) { - // Limit request body size to prevent abuse (64KB should be sufficient for most webhooks) - const MaxBodyBytes = int64(65536) - req.Body = http.MaxBytesReader(w, req.Body, MaxBodyBytes) - - // Read the raw webhook payload - payload, err := io.ReadAll(req.Body) - if err != nil { - fmt.Fprintf(os.Stderr, "Error reading request body: %v\n", err) - w.WriteHeader(http.StatusServiceUnavailable) - return - } - - // Verify and unwrap webhook payload - event, err := client.Webhooks.Unwrap(payload, req.Header) - if err != nil { - fmt.Fprintf(os.Stderr, "Invalid webhook signature or malformed payload: %v\n", err) - w.WriteHeader(http.StatusUnauthorized) - return - } - - fmt.Printf("Verified webhook event: %s\n", event.Type) - - // Handle different event types with full type safety - switch event.Type { - case "video.transformation.accepted": - videoEvent := event.AsVideoTransformationAcceptedEvent() - fmt.Printf("Video transformation accepted: %s\n", videoEvent.Data.Asset.URL) - // Debugging: Track transformation requests - // handleVideoTransformationAccepted(videoEvent) - - case "video.transformation.ready": - videoEvent := event.AsVideoTransformationReadyEvent() - fmt.Printf("Video transformation ready: %s\n", videoEvent.Data.Transformation.Output.URL) - // Update your database/CMS to show the transformed video - // handleVideoTransformationReady(videoEvent) - - case "video.transformation.error": - videoEvent := event.AsVideoTransformationErrorEvent() - fmt.Printf("Video transformation error: %s\n", videoEvent.Data.Transformation.Error.Reason) - // Log error and check your origin/URL endpoint settings - // handleVideoTransformationError(videoEvent) - - case "upload.pre-transform.success": - uploadEvent := event.AsUploadPreTransformSuccessEvent() - fmt.Printf("Pre-transform success: %s\n", uploadEvent.Data.FileID) - // File uploaded and pre-transformation completed - // handleUploadPreTransformSuccess(uploadEvent) - - case "upload.post-transform.success": - postEvent := event.AsUploadPostTransformSuccessEvent() - fmt.Printf("Post-transform success: %s\n", postEvent.Data.Name) - // Additional transformation completed - // handleUploadPostTransformSuccess(postEvent) - - // Handle other event types as needed - default: - fmt.Printf("Unhandled event type: %s\n", event.Type) - } - - w.WriteHeader(http.StatusOK) - }) - - // Start the server - fmt.Println("Webhook server listening on :8080") - log.Fatal(http.ListenAndServe(":8080", nil)) -} -``` - For detailed information about webhook setup, signature verification, and handling different webhook events, refer to the [ImageKit webhook documentation](https://imagekit.io/docs/webhooks#verify-webhook-signature). +## Advanced Usage + ### Errors When the API returns a non-success status code, we return an error with type From 0951290e27f1568894dd90e717fc49612e24bedd Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Mon, 20 Apr 2026 03:52:06 +0000 Subject: [PATCH 03/17] chore: configure new SDK language --- .stats.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.stats.yml b/.stats.yml index c58cb0b..63b404e 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 48 openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/imagekit-inc%2Fimagekit-70c42eda2bee929830b2537f758400a58dded1f1ef5686a286e2469c35a041a0.yml openapi_spec_hash: cdaeed824e91657b45092765cf55eb42 -config_hash: 83967503e501e4199b4042d0d0f2b615 +config_hash: 2a6f67c966b8b3db6f986be4ac23a507 From 69caef36646b7f49ac8ae4468d76439c5070b003 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Mon, 20 Apr 2026 04:52:00 +0000 Subject: [PATCH 04/17] codegen metadata --- .stats.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.stats.yml b/.stats.yml index 63b404e..8717ca9 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 48 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/imagekit-inc%2Fimagekit-70c42eda2bee929830b2537f758400a58dded1f1ef5686a286e2469c35a041a0.yml -openapi_spec_hash: cdaeed824e91657b45092765cf55eb42 -config_hash: 2a6f67c966b8b3db6f986be4ac23a507 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/imagekit-inc%2Fimagekit-c7f578172392bde58bbb72be2a25b9e917529cd07550358c645ce155debf2418.yml +openapi_spec_hash: f0d797a17b1e8e81707517700cd44b13 +config_hash: cc8ab8a2b72639af4d57e4e268ed3f73 From 791dd8c9fa7b8e9ee247918f6aceffc77ad7f8cf Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Mon, 20 Apr 2026 05:09:09 +0000 Subject: [PATCH 05/17] feat(api): manual updates --- .stats.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.stats.yml b/.stats.yml index 8717ca9..1ad0150 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 48 openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/imagekit-inc%2Fimagekit-c7f578172392bde58bbb72be2a25b9e917529cd07550358c645ce155debf2418.yml openapi_spec_hash: f0d797a17b1e8e81707517700cd44b13 -config_hash: cc8ab8a2b72639af4d57e4e268ed3f73 +config_hash: d886c9d8ebe60aa25c77553dba16d410 From 243c70a7ff86724b37ffb2b1c4c662b1f7b329c9 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Mon, 20 Apr 2026 05:10:35 +0000 Subject: [PATCH 06/17] codegen metadata --- .stats.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.stats.yml b/.stats.yml index 1ad0150..e970479 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 48 openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/imagekit-inc%2Fimagekit-c7f578172392bde58bbb72be2a25b9e917529cd07550358c645ce155debf2418.yml openapi_spec_hash: f0d797a17b1e8e81707517700cd44b13 -config_hash: d886c9d8ebe60aa25c77553dba16d410 +config_hash: 4fa07762cb363071cfdeef3f7eeec56e From 19917f7b76c1851c69604319d0c4cfc652a838b9 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Mon, 20 Apr 2026 05:51:49 +0000 Subject: [PATCH 07/17] codegen metadata --- .stats.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.stats.yml b/.stats.yml index e970479..a4b4a76 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 48 openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/imagekit-inc%2Fimagekit-c7f578172392bde58bbb72be2a25b9e917529cd07550358c645ce155debf2418.yml openapi_spec_hash: f0d797a17b1e8e81707517700cd44b13 -config_hash: 4fa07762cb363071cfdeef3f7eeec56e +config_hash: ef918f7e878d4168a07e867607eb68ea From f20ad95962ce6e56e2a2f4c0fd982d2ed18e247c Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Mon, 20 Apr 2026 05:52:55 +0000 Subject: [PATCH 08/17] codegen metadata --- .stats.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.stats.yml b/.stats.yml index a4b4a76..82f27b8 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 48 openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/imagekit-inc%2Fimagekit-c7f578172392bde58bbb72be2a25b9e917529cd07550358c645ce155debf2418.yml openapi_spec_hash: f0d797a17b1e8e81707517700cd44b13 -config_hash: ef918f7e878d4168a07e867607eb68ea +config_hash: 85ee7f056e5c05338bd9b7a7abb33c6e From 0825bb742295ecfd59c9d72e04759215c4923a6d Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Mon, 20 Apr 2026 06:57:56 +0000 Subject: [PATCH 09/17] codegen metadata --- .stats.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.stats.yml b/.stats.yml index 82f27b8..c4363a8 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 48 openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/imagekit-inc%2Fimagekit-c7f578172392bde58bbb72be2a25b9e917529cd07550358c645ce155debf2418.yml openapi_spec_hash: f0d797a17b1e8e81707517700cd44b13 -config_hash: 85ee7f056e5c05338bd9b7a7abb33c6e +config_hash: 4e6bdc90056ab9bddbeb207bd720cf53 From ca35b0ce4cd749f9ebfbcf20a7bb62e1cf5a457f Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Mon, 20 Apr 2026 18:43:20 +0000 Subject: [PATCH 10/17] codegen metadata --- .stats.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.stats.yml b/.stats.yml index c4363a8..ee722a8 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 48 openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/imagekit-inc%2Fimagekit-c7f578172392bde58bbb72be2a25b9e917529cd07550358c645ce155debf2418.yml openapi_spec_hash: f0d797a17b1e8e81707517700cd44b13 -config_hash: 4e6bdc90056ab9bddbeb207bd720cf53 +config_hash: da0c89d794fefcf600a4ddfc78553c2a From 5888120dc9032b1826cc0b7018f53f34db89666e Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Wed, 22 Apr 2026 13:54:24 +0000 Subject: [PATCH 11/17] chore(internal): more robust bootstrap script --- scripts/bootstrap | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/bootstrap b/scripts/bootstrap index 5ab3066..46547f1 100755 --- a/scripts/bootstrap +++ b/scripts/bootstrap @@ -4,7 +4,7 @@ set -e cd "$(dirname "$0")/.." -if [ -f "Brewfile" ] && [ "$(uname -s)" = "Darwin" ] && [ "$SKIP_BREW" != "1" ] && [ -t 0 ]; then +if [ -f "Brewfile" ] && [ "$(uname -s)" = "Darwin" ] && [ "${SKIP_BREW:-}" != "1" ] && [ -t 0 ]; then brew bundle check >/dev/null 2>&1 || { echo -n "==> Install Homebrew dependencies? (y/N): " read -r response From aa138546cbf84151bc7b98bdbb1bbbed45e3f9f3 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Fri, 24 Apr 2026 05:08:34 +0000 Subject: [PATCH 12/17] codegen metadata --- .stats.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.stats.yml b/.stats.yml index ee722a8..655bd5f 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 48 openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/imagekit-inc%2Fimagekit-c7f578172392bde58bbb72be2a25b9e917529cd07550358c645ce155debf2418.yml openapi_spec_hash: f0d797a17b1e8e81707517700cd44b13 -config_hash: da0c89d794fefcf600a4ddfc78553c2a +config_hash: 94f48fd13b7d41b8b6a203a3a8cee9ed From f4d5e6bc9096d5e51368b2aa8810c22352900643 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Fri, 24 Apr 2026 19:56:26 +0000 Subject: [PATCH 13/17] feat(go): add default http client with timeout --- client.go | 2 +- default_http_client.go | 24 ++++++++++++++++++++++++ go.mod | 2 +- go.sum | 4 ++-- 4 files changed, 28 insertions(+), 4 deletions(-) create mode 100644 default_http_client.go diff --git a/client.go b/client.go index 9d76257..daf2cd4 100644 --- a/client.go +++ b/client.go @@ -35,7 +35,7 @@ type Client struct { // OPTIONAL_IMAGEKIT_IGNORES_THIS, IMAGEKIT_WEBHOOK_SECRET, IMAGE_KIT_BASE_URL). // This should be used to initialize new clients. func DefaultClientOptions() []option.RequestOption { - defaults := []option.RequestOption{option.WithEnvironmentProduction()} + defaults := []option.RequestOption{option.WithHTTPClient(defaultHTTPClient()), option.WithEnvironmentProduction()} if o, ok := os.LookupEnv("IMAGE_KIT_BASE_URL"); ok { defaults = append(defaults, option.WithBaseURL(o)) } diff --git a/default_http_client.go b/default_http_client.go new file mode 100644 index 0000000..b0a3e6c --- /dev/null +++ b/default_http_client.go @@ -0,0 +1,24 @@ +// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. + +package imagekit + +import ( + "net/http" + "time" +) + +// defaultResponseHeaderTimeout bounds the time between a fully written request +// and the server's response headers. It does not apply to the response body, +// so long-running streams are unaffected. Without this, a server that accepts +// the connection but never responds would hang the request indefinitely. +const defaultResponseHeaderTimeout = 10 * time.Minute + +// defaultHTTPClient returns an [*http.Client] used when the caller does not +// supply one via [option.WithHTTPClient]. It clones [http.DefaultTransport] +// and adds a [http.Transport.ResponseHeaderTimeout] so stuck connections +// fail fast instead of compounding across retries. +func defaultHTTPClient() *http.Client { + transport := http.DefaultTransport.(*http.Transport).Clone() + transport.ResponseHeaderTimeout = defaultResponseHeaderTimeout + return &http.Client{Transport: transport} +} diff --git a/go.mod b/go.mod index 12b1fb0..cbedae8 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module github.com/imagekit-developer/imagekit-go/v2 go 1.22 require ( - github.com/standard-webhooks/standard-webhooks/libraries v0.0.0-20260309172517-425968d811b9 + github.com/standard-webhooks/standard-webhooks/libraries v0.0.0-20260424193022-1b18f5a0af85 github.com/tidwall/gjson v1.18.0 github.com/tidwall/sjson v1.2.5 ) diff --git a/go.sum b/go.sum index ff28d75..85bb15c 100644 --- a/go.sum +++ b/go.sum @@ -1,5 +1,5 @@ -github.com/standard-webhooks/standard-webhooks/libraries v0.0.0-20260309172517-425968d811b9 h1:3Bb7YLURYzIPwqxoBpfhHaA/wu7zUNaHa2W6DJ1zD6s= -github.com/standard-webhooks/standard-webhooks/libraries v0.0.0-20260309172517-425968d811b9/go.mod h1:L1MQhA6x4dn9r007T033lsaZMv9EmBAdXyU/+EF40fo= +github.com/standard-webhooks/standard-webhooks/libraries v0.0.0-20260424193022-1b18f5a0af85 h1:aL0xBfE1hWVUbUkIoM7qryM/MfPUlJdpaipvrdIK8gs= +github.com/standard-webhooks/standard-webhooks/libraries v0.0.0-20260424193022-1b18f5a0af85/go.mod h1:L1MQhA6x4dn9r007T033lsaZMv9EmBAdXyU/+EF40fo= github.com/tidwall/gjson v1.14.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/gjson v1.18.0 h1:FIDeeyB800efLX89e5a8Y0BNH+LOngJyGrIWxG2FKQY= github.com/tidwall/gjson v1.18.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= From 904d9f3ebf4291f4142dcd99db48b832761fba7f Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Fri, 24 Apr 2026 20:10:24 +0000 Subject: [PATCH 14/17] chore(internal): codegen related update --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index cbedae8..5797e6a 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module github.com/imagekit-developer/imagekit-go/v2 go 1.22 require ( - github.com/standard-webhooks/standard-webhooks/libraries v0.0.0-20260424193022-1b18f5a0af85 + github.com/standard-webhooks/standard-webhooks/libraries v0.0.0-20260424193505-a2086b6cd44f github.com/tidwall/gjson v1.18.0 github.com/tidwall/sjson v1.2.5 ) diff --git a/go.sum b/go.sum index 85bb15c..53781e5 100644 --- a/go.sum +++ b/go.sum @@ -1,5 +1,5 @@ -github.com/standard-webhooks/standard-webhooks/libraries v0.0.0-20260424193022-1b18f5a0af85 h1:aL0xBfE1hWVUbUkIoM7qryM/MfPUlJdpaipvrdIK8gs= -github.com/standard-webhooks/standard-webhooks/libraries v0.0.0-20260424193022-1b18f5a0af85/go.mod h1:L1MQhA6x4dn9r007T033lsaZMv9EmBAdXyU/+EF40fo= +github.com/standard-webhooks/standard-webhooks/libraries v0.0.0-20260424193505-a2086b6cd44f h1:GNSNFGbT/SEoxCfPFvOwtez9bE6e5EdktVQCLIrpmYM= +github.com/standard-webhooks/standard-webhooks/libraries v0.0.0-20260424193505-a2086b6cd44f/go.mod h1:L1MQhA6x4dn9r007T033lsaZMv9EmBAdXyU/+EF40fo= github.com/tidwall/gjson v1.14.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/gjson v1.18.0 h1:FIDeeyB800efLX89e5a8Y0BNH+LOngJyGrIWxG2FKQY= github.com/tidwall/gjson v1.18.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= From 14d3582a90625f39b54ffb31000db0e35a849027 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Mon, 27 Apr 2026 20:27:35 +0000 Subject: [PATCH 15/17] chore(internal): codegen related update --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 5797e6a..aa2f58e 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module github.com/imagekit-developer/imagekit-go/v2 go 1.22 require ( - github.com/standard-webhooks/standard-webhooks/libraries v0.0.0-20260424193505-a2086b6cd44f + github.com/standard-webhooks/standard-webhooks/libraries v0.0.0-20260427160145-3afa6683f8b2 github.com/tidwall/gjson v1.18.0 github.com/tidwall/sjson v1.2.5 ) diff --git a/go.sum b/go.sum index 53781e5..4fda201 100644 --- a/go.sum +++ b/go.sum @@ -1,5 +1,5 @@ -github.com/standard-webhooks/standard-webhooks/libraries v0.0.0-20260424193505-a2086b6cd44f h1:GNSNFGbT/SEoxCfPFvOwtez9bE6e5EdktVQCLIrpmYM= -github.com/standard-webhooks/standard-webhooks/libraries v0.0.0-20260424193505-a2086b6cd44f/go.mod h1:L1MQhA6x4dn9r007T033lsaZMv9EmBAdXyU/+EF40fo= +github.com/standard-webhooks/standard-webhooks/libraries v0.0.0-20260427160145-3afa6683f8b2 h1:q/QNlQMqBFYT7z9zt8vjbh0XvbcTXhN4Q+gi7aEBvkY= +github.com/standard-webhooks/standard-webhooks/libraries v0.0.0-20260427160145-3afa6683f8b2/go.mod h1:L1MQhA6x4dn9r007T033lsaZMv9EmBAdXyU/+EF40fo= github.com/tidwall/gjson v1.14.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/gjson v1.18.0 h1:FIDeeyB800efLX89e5a8Y0BNH+LOngJyGrIWxG2FKQY= github.com/tidwall/gjson v1.18.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= From 3872a5eb58f1c091b8be08183dd4c972e8a68f75 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Mon, 27 Apr 2026 22:28:28 +0000 Subject: [PATCH 16/17] feat: support setting headers via env --- client.go | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/client.go b/client.go index daf2cd4..b768a40 100644 --- a/client.go +++ b/client.go @@ -7,6 +7,7 @@ import ( "net/http" "os" "slices" + "strings" "github.com/imagekit-developer/imagekit-go/v2/internal/requestconfig" "github.com/imagekit-developer/imagekit-go/v2/lib" @@ -49,6 +50,14 @@ func DefaultClientOptions() []option.RequestOption { if o, ok := os.LookupEnv("IMAGEKIT_WEBHOOK_SECRET"); ok { defaults = append(defaults, option.WithWebhookSecret(o)) } + if o, ok := os.LookupEnv("IMAGE_KIT_CUSTOM_HEADERS"); ok { + for _, line := range strings.Split(o, "\n") { + colon := strings.Index(line, ":") + if colon >= 0 { + defaults = append(defaults, option.WithHeader(strings.TrimSpace(line[:colon]), strings.TrimSpace(line[colon+1:]))) + } + } + } return defaults } From 690228fb36bfa49a7864c59e7ab75745e34eb982 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Mon, 27 Apr 2026 22:29:59 +0000 Subject: [PATCH 17/17] release: 2.5.0 --- .release-please-manifest.json | 2 +- CHANGELOG.md | 23 +++++++++++++++++++++++ README.md | 2 +- internal/version.go | 2 +- 4 files changed, 26 insertions(+), 3 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index b44b287..4dedeae 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "2.4.0" + ".": "2.5.0" } \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 0ab64eb..b2b9cca 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,28 @@ # Changelog +## 2.5.0 (2026-04-27) + +Full Changelog: [v2.4.0...v2.5.0](https://github.com/imagekit-developer/imagekit-go/compare/v2.4.0...v2.5.0) + +### Features + +* **api:** manual updates ([791dd8c](https://github.com/imagekit-developer/imagekit-go/commit/791dd8c9fa7b8e9ee247918f6aceffc77ad7f8cf)) +* **go:** add default http client with timeout ([f4d5e6b](https://github.com/imagekit-developer/imagekit-go/commit/f4d5e6bc9096d5e51368b2aa8810c22352900643)) +* support setting headers via env ([3872a5e](https://github.com/imagekit-developer/imagekit-go/commit/3872a5eb58f1c091b8be08183dd4c972e8a68f75)) + + +### Chores + +* configure new SDK language ([0951290](https://github.com/imagekit-developer/imagekit-go/commit/0951290e27f1568894dd90e717fc49612e24bedd)) +* **internal:** codegen related update ([14d3582](https://github.com/imagekit-developer/imagekit-go/commit/14d3582a90625f39b54ffb31000db0e35a849027)) +* **internal:** codegen related update ([904d9f3](https://github.com/imagekit-developer/imagekit-go/commit/904d9f3ebf4291f4142dcd99db48b832761fba7f)) +* **internal:** more robust bootstrap script ([5888120](https://github.com/imagekit-developer/imagekit-go/commit/5888120dc9032b1826cc0b7018f53f34db89666e)) + + +### Documentation + +* remove example code for verifying webhook signatures ([799e47c](https://github.com/imagekit-developer/imagekit-go/commit/799e47c306c5f681891804c6e3ca738b0b2c053c)) + ## 2.4.0 (2026-04-13) Full Changelog: [v2.3.0...v2.4.0](https://github.com/imagekit-developer/imagekit-go/compare/v2.3.0...v2.4.0) diff --git a/README.md b/README.md index bd98316..5c4165c 100644 --- a/README.md +++ b/README.md @@ -59,7 +59,7 @@ Or to pin the version: ```sh -go get -u 'github.com/imagekit-developer/imagekit-go/v2@v2.4.0' +go get -u 'github.com/imagekit-developer/imagekit-go/v2@v2.5.0' ``` diff --git a/internal/version.go b/internal/version.go index eaba12d..0d6e599 100644 --- a/internal/version.go +++ b/internal/version.go @@ -2,4 +2,4 @@ package internal -const PackageVersion = "2.4.0" // x-release-please-version +const PackageVersion = "2.5.0" // x-release-please-version