Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .release-please-manifest.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
{
".": "6.0.1"
".": "6.1.0"
}
4 changes: 2 additions & 2 deletions .stats.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
configured_endpoints: 48
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/imagekit-inc/imagekit-diversion-ebb91d3a579cbd08d5af02b57042964052e28b703bc0c1ab73270130a7575e89.yml
openapi_spec_hash: 86c6aef81fd1ddb2a989da3155364231
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/imagekit-inc/imagekit-diversion-a078cd16edc143e212e23ebdb4d94a3898243c4a85e10f04811eb1ccf1b90c1a.yml
openapi_spec_hash: 4cbee56647635fe750024baf5e7dad5f
config_hash: 66121ffadb78b9866f6b853f19b11f3d
18 changes: 18 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,23 @@
# Changelog

## 6.1.0 (2026-06-18)

Full Changelog: [v6.0.1...v6.1.0](https://github.com/imagekit-developer/imagekit-dotnet/compare/v6.0.1...v6.1.0)

### Features

* **origins:** add useIAMRole for IAM role authentication ([ae25f9c](https://github.com/imagekit-developer/imagekit-dotnet/commit/ae25f9c2480ea5fec242e5f601bb6fb46d9088cf))


### Bug Fixes

* **csharp:** resolve ambiguity in parsing query strings ([7b1f3f3](https://github.com/imagekit-developer/imagekit-dotnet/commit/7b1f3f35117f35101f07ed55f173ed91a427efb9))


### Documentation

* colorize default intensity value to 100 ([9dd7498](https://github.com/imagekit-developer/imagekit-dotnet/commit/9dd7498ad981888b5024e0f2f7fd161dab8e01da))

## 6.0.1 (2026-05-28)

Full Changelog: [v6.0.0...v6.0.1](https://github.com/imagekit-developer/imagekit-dotnet/compare/v6.0.0...v6.0.1)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ public void FieldRoundtrip_Works()
BaseUrlForCanonicalHeader = "https://cdn.example.com",
IncludeCanonicalHeader = false,
Prefix = "images",
UseIamRole = true,
},
};

Expand All @@ -31,6 +32,7 @@ public void FieldRoundtrip_Works()
BaseUrlForCanonicalHeader = "https://cdn.example.com",
IncludeCanonicalHeader = false,
Prefix = "images",
UseIamRole = true,
};

Assert.Equal(expectedOriginRequest, parameters.OriginRequest);
Expand All @@ -50,6 +52,7 @@ public void Url_Works()
BaseUrlForCanonicalHeader = "https://cdn.example.com",
IncludeCanonicalHeader = false,
Prefix = "images",
UseIamRole = true,
},
};

Expand All @@ -74,6 +77,7 @@ public void CopyConstructor_Works()
BaseUrlForCanonicalHeader = "https://cdn.example.com",
IncludeCanonicalHeader = false,
Prefix = "images",
UseIamRole = true,
},
};

Expand Down
34 changes: 34 additions & 0 deletions src/Imagekit.Tests/Models/Accounts/Origins/OriginRequestTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ public void S3ValidationWorks()
BaseUrlForCanonicalHeader = "https://cdn.example.com",
IncludeCanonicalHeader = false,
Prefix = "raw-assets",
UseIamRole = true,
};
value.Validate();
}
Expand Down Expand Up @@ -52,6 +53,7 @@ public void CloudinaryBackupValidationWorks()
BaseUrlForCanonicalHeader = "https://cdn.example.com",
IncludeCanonicalHeader = false,
Prefix = "raw-assets",
UseIamRole = true,
};
value.Validate();
}
Expand Down Expand Up @@ -143,6 +145,7 @@ public void S3SerializationRoundtripWorks()
BaseUrlForCanonicalHeader = "https://cdn.example.com",
IncludeCanonicalHeader = false,
Prefix = "raw-assets",
UseIamRole = true,
};
string element = JsonSerializer.Serialize(value, ModelBase.SerializerOptions);
var deserialized = JsonSerializer.Deserialize<OriginRequest>(
Expand Down Expand Up @@ -189,6 +192,7 @@ public void CloudinaryBackupSerializationRoundtripWorks()
BaseUrlForCanonicalHeader = "https://cdn.example.com",
IncludeCanonicalHeader = false,
Prefix = "raw-assets",
UseIamRole = true,
};
string element = JsonSerializer.Serialize(value, ModelBase.SerializerOptions);
var deserialized = JsonSerializer.Deserialize<OriginRequest>(
Expand Down Expand Up @@ -319,6 +323,7 @@ public void FieldRoundtrip_Works()
BaseUrlForCanonicalHeader = "https://cdn.example.com",
IncludeCanonicalHeader = false,
Prefix = "raw-assets",
UseIamRole = true,
};

string expectedAccessKey = "AKIAIOSFODNN7EXAMPLE";
Expand All @@ -329,6 +334,7 @@ public void FieldRoundtrip_Works()
string expectedBaseUrlForCanonicalHeader = "https://cdn.example.com";
bool expectedIncludeCanonicalHeader = false;
string expectedPrefix = "raw-assets";
bool expectedUseIamRole = true;

Assert.Equal(expectedAccessKey, model.AccessKey);
Assert.Equal(expectedBucket, model.Bucket);
Expand All @@ -338,6 +344,7 @@ public void FieldRoundtrip_Works()
Assert.Equal(expectedBaseUrlForCanonicalHeader, model.BaseUrlForCanonicalHeader);
Assert.Equal(expectedIncludeCanonicalHeader, model.IncludeCanonicalHeader);
Assert.Equal(expectedPrefix, model.Prefix);
Assert.Equal(expectedUseIamRole, model.UseIamRole);
}

[Fact]
Expand All @@ -352,6 +359,7 @@ public void SerializationRoundtrip_Works()
BaseUrlForCanonicalHeader = "https://cdn.example.com",
IncludeCanonicalHeader = false,
Prefix = "raw-assets",
UseIamRole = true,
};

string json = JsonSerializer.Serialize(model, ModelBase.SerializerOptions);
Expand All @@ -372,6 +380,7 @@ public void FieldRoundtripThroughSerialization_Works()
BaseUrlForCanonicalHeader = "https://cdn.example.com",
IncludeCanonicalHeader = false,
Prefix = "raw-assets",
UseIamRole = true,
};

string element = JsonSerializer.Serialize(model, ModelBase.SerializerOptions);
Expand All @@ -386,6 +395,7 @@ public void FieldRoundtripThroughSerialization_Works()
string expectedBaseUrlForCanonicalHeader = "https://cdn.example.com";
bool expectedIncludeCanonicalHeader = false;
string expectedPrefix = "raw-assets";
bool expectedUseIamRole = true;

Assert.Equal(expectedAccessKey, deserialized.AccessKey);
Assert.Equal(expectedBucket, deserialized.Bucket);
Expand All @@ -395,6 +405,7 @@ public void FieldRoundtripThroughSerialization_Works()
Assert.Equal(expectedBaseUrlForCanonicalHeader, deserialized.BaseUrlForCanonicalHeader);
Assert.Equal(expectedIncludeCanonicalHeader, deserialized.IncludeCanonicalHeader);
Assert.Equal(expectedPrefix, deserialized.Prefix);
Assert.Equal(expectedUseIamRole, deserialized.UseIamRole);
}

[Fact]
Expand All @@ -409,6 +420,7 @@ public void Validation_Works()
BaseUrlForCanonicalHeader = "https://cdn.example.com",
IncludeCanonicalHeader = false,
Prefix = "raw-assets",
UseIamRole = true,
};

model.Validate();
Expand All @@ -431,6 +443,8 @@ public void OptionalNonNullablePropertiesUnsetAreNotSet_Works()
Assert.False(model.RawData.ContainsKey("includeCanonicalHeader"));
Assert.Null(model.Prefix);
Assert.False(model.RawData.ContainsKey("prefix"));
Assert.Null(model.UseIamRole);
Assert.False(model.RawData.ContainsKey("useIAMRole"));
}

[Fact]
Expand Down Expand Up @@ -461,6 +475,7 @@ public void OptionalNonNullablePropertiesSetToNullAreNotSet_Works()
BaseUrlForCanonicalHeader = null,
IncludeCanonicalHeader = null,
Prefix = null,
UseIamRole = null,
};

Assert.Null(model.BaseUrlForCanonicalHeader);
Expand All @@ -469,6 +484,8 @@ public void OptionalNonNullablePropertiesSetToNullAreNotSet_Works()
Assert.False(model.RawData.ContainsKey("includeCanonicalHeader"));
Assert.Null(model.Prefix);
Assert.False(model.RawData.ContainsKey("prefix"));
Assert.Null(model.UseIamRole);
Assert.False(model.RawData.ContainsKey("useIAMRole"));
}

[Fact]
Expand All @@ -485,6 +502,7 @@ public void OptionalNonNullablePropertiesSetToNullValidation_Works()
BaseUrlForCanonicalHeader = null,
IncludeCanonicalHeader = null,
Prefix = null,
UseIamRole = null,
};

model.Validate();
Expand All @@ -502,6 +520,7 @@ public void CopyConstructor_Works()
BaseUrlForCanonicalHeader = "https://cdn.example.com",
IncludeCanonicalHeader = false,
Prefix = "raw-assets",
UseIamRole = true,
};

S3 copied = new(model);
Expand Down Expand Up @@ -763,6 +782,7 @@ public void FieldRoundtrip_Works()
BaseUrlForCanonicalHeader = "https://cdn.example.com",
IncludeCanonicalHeader = false,
Prefix = "raw-assets",
UseIamRole = true,
};

string expectedAccessKey = "AKIAIOSFODNN7EXAMPLE";
Expand All @@ -773,6 +793,7 @@ public void FieldRoundtrip_Works()
string expectedBaseUrlForCanonicalHeader = "https://cdn.example.com";
bool expectedIncludeCanonicalHeader = false;
string expectedPrefix = "raw-assets";
bool expectedUseIamRole = true;

Assert.Equal(expectedAccessKey, model.AccessKey);
Assert.Equal(expectedBucket, model.Bucket);
Expand All @@ -782,6 +803,7 @@ public void FieldRoundtrip_Works()
Assert.Equal(expectedBaseUrlForCanonicalHeader, model.BaseUrlForCanonicalHeader);
Assert.Equal(expectedIncludeCanonicalHeader, model.IncludeCanonicalHeader);
Assert.Equal(expectedPrefix, model.Prefix);
Assert.Equal(expectedUseIamRole, model.UseIamRole);
}

[Fact]
Expand All @@ -796,6 +818,7 @@ public void SerializationRoundtrip_Works()
BaseUrlForCanonicalHeader = "https://cdn.example.com",
IncludeCanonicalHeader = false,
Prefix = "raw-assets",
UseIamRole = true,
};

string json = JsonSerializer.Serialize(model, ModelBase.SerializerOptions);
Expand All @@ -819,6 +842,7 @@ public void FieldRoundtripThroughSerialization_Works()
BaseUrlForCanonicalHeader = "https://cdn.example.com",
IncludeCanonicalHeader = false,
Prefix = "raw-assets",
UseIamRole = true,
};

string element = JsonSerializer.Serialize(model, ModelBase.SerializerOptions);
Expand All @@ -836,6 +860,7 @@ public void FieldRoundtripThroughSerialization_Works()
string expectedBaseUrlForCanonicalHeader = "https://cdn.example.com";
bool expectedIncludeCanonicalHeader = false;
string expectedPrefix = "raw-assets";
bool expectedUseIamRole = true;

Assert.Equal(expectedAccessKey, deserialized.AccessKey);
Assert.Equal(expectedBucket, deserialized.Bucket);
Expand All @@ -845,6 +870,7 @@ public void FieldRoundtripThroughSerialization_Works()
Assert.Equal(expectedBaseUrlForCanonicalHeader, deserialized.BaseUrlForCanonicalHeader);
Assert.Equal(expectedIncludeCanonicalHeader, deserialized.IncludeCanonicalHeader);
Assert.Equal(expectedPrefix, deserialized.Prefix);
Assert.Equal(expectedUseIamRole, deserialized.UseIamRole);
}

[Fact]
Expand All @@ -859,6 +885,7 @@ public void Validation_Works()
BaseUrlForCanonicalHeader = "https://cdn.example.com",
IncludeCanonicalHeader = false,
Prefix = "raw-assets",
UseIamRole = true,
};

model.Validate();
Expand All @@ -881,6 +908,8 @@ public void OptionalNonNullablePropertiesUnsetAreNotSet_Works()
Assert.False(model.RawData.ContainsKey("includeCanonicalHeader"));
Assert.Null(model.Prefix);
Assert.False(model.RawData.ContainsKey("prefix"));
Assert.Null(model.UseIamRole);
Assert.False(model.RawData.ContainsKey("useIAMRole"));
}

[Fact]
Expand Down Expand Up @@ -911,6 +940,7 @@ public void OptionalNonNullablePropertiesSetToNullAreNotSet_Works()
BaseUrlForCanonicalHeader = null,
IncludeCanonicalHeader = null,
Prefix = null,
UseIamRole = null,
};

Assert.Null(model.BaseUrlForCanonicalHeader);
Expand All @@ -919,6 +949,8 @@ public void OptionalNonNullablePropertiesSetToNullAreNotSet_Works()
Assert.False(model.RawData.ContainsKey("includeCanonicalHeader"));
Assert.Null(model.Prefix);
Assert.False(model.RawData.ContainsKey("prefix"));
Assert.Null(model.UseIamRole);
Assert.False(model.RawData.ContainsKey("useIAMRole"));
}

[Fact]
Expand All @@ -935,6 +967,7 @@ public void OptionalNonNullablePropertiesSetToNullValidation_Works()
BaseUrlForCanonicalHeader = null,
IncludeCanonicalHeader = null,
Prefix = null,
UseIamRole = null,
};

model.Validate();
Expand All @@ -952,6 +985,7 @@ public void CopyConstructor_Works()
BaseUrlForCanonicalHeader = "https://cdn.example.com",
IncludeCanonicalHeader = false,
Prefix = "raw-assets",
UseIamRole = true,
};

CloudinaryBackup copied = new(model);
Expand Down
Loading
Loading