Skip to content

Commit ae68b97

Browse files
committed
Fix compatibility with RecyclableMemoryStream 3.x, drop compatibility with 1.x
1 parent 22ee5a2 commit ae68b97

File tree

9 files changed

+148
-99
lines changed

9 files changed

+148
-99
lines changed

src/Imageflow.AllPlatforms/packages.lock.json

+11-8
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,11 @@
4545
},
4646
"Microsoft.IO.RecyclableMemoryStream": {
4747
"type": "Transitive",
48-
"resolved": "1.2.2",
49-
"contentHash": "LA4RBTStohA0hAAs6oKchmIC5M5Mjd5MwfB7vbbl+312N5kXj8abTGOgwZy6ASJYLCiqiiK5kHS0hDGEgfkB8g=="
48+
"resolved": "2.3.2",
49+
"contentHash": "Oh1qXXFdJFcHozvb4H6XYLf2W0meZFuG0A+TfapFPj9z5fd4vxiARGEhAaLj/6XWQaMYIv4SH/9Q6H78Hw0E2Q==",
50+
"dependencies": {
51+
"System.Memory": "4.5.5"
52+
}
5053
},
5154
"Microsoft.NETCore.Platforms": {
5255
"type": "Transitive",
@@ -60,8 +63,8 @@
6063
},
6164
"System.Memory": {
6265
"type": "Transitive",
63-
"resolved": "4.5.4",
64-
"contentHash": "1MbJTHS1lZ4bS4FmsJjnuGJOu88ZzTT2rLvrhW7Ygic+pC0NWA+3hgAen0HRdsocuQXCkUTdFn9yHJJhsijDXw==",
66+
"resolved": "4.5.5",
67+
"contentHash": "XIWiDvKPXaTveaB7HVganDlOCRoj03l+jrwNvcge/t8vhGYKvqV+dMv6G4SAX2NoNmN0wZfVPTAlFwZcZvVOUw==",
6568
"dependencies": {
6669
"System.Buffers": "4.5.1",
6770
"System.Numerics.Vectors": "4.4.0",
@@ -113,7 +116,7 @@
113116
"imageflow.net": {
114117
"type": "Project",
115118
"dependencies": {
116-
"Microsoft.IO.RecyclableMemoryStream": "[1.2.*, 4.0.0)",
119+
"Microsoft.IO.RecyclableMemoryStream": "[2.*, 4.0.0)",
117120
"System.Text.Json": "[6.*, )"
118121
}
119122
}
@@ -151,8 +154,8 @@
151154
},
152155
"Microsoft.IO.RecyclableMemoryStream": {
153156
"type": "Transitive",
154-
"resolved": "1.2.2",
155-
"contentHash": "LA4RBTStohA0hAAs6oKchmIC5M5Mjd5MwfB7vbbl+312N5kXj8abTGOgwZy6ASJYLCiqiiK5kHS0hDGEgfkB8g=="
157+
"resolved": "2.3.2",
158+
"contentHash": "Oh1qXXFdJFcHozvb4H6XYLf2W0meZFuG0A+TfapFPj9z5fd4vxiARGEhAaLj/6XWQaMYIv4SH/9Q6H78Hw0E2Q=="
156159
},
157160
"System.Runtime.CompilerServices.Unsafe": {
158161
"type": "Transitive",
@@ -179,7 +182,7 @@
179182
"imageflow.net": {
180183
"type": "Project",
181184
"dependencies": {
182-
"Microsoft.IO.RecyclableMemoryStream": "[1.2.*, 4.0.0)",
185+
"Microsoft.IO.RecyclableMemoryStream": "[2.*, 4.0.0)",
183186
"System.Text.Json": "[6.*, )"
184187
}
185188
}

src/Imageflow/Fluent/IBytesSource.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ public async Task<ArraySegment<byte>> GetBytesAsync(CancellationToken cancellati
8585

8686
if (_copy == null)
8787
{
88-
_copy = new RecyclableMemoryStream(Mgr, "StreamSource: IBytesSource", (int) length);
88+
_copy = new RecyclableMemoryStream(Mgr,"StreamSource: IBytesSource", length);
8989
await underlying.CopyToAsync(_copy,81920, cancellationToken);
9090
}
9191

src/Imageflow/Imageflow.Net.csproj

+2-5
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,8 @@
1818
</PropertyGroup>
1919

2020
<ItemGroup>
21-
22-
<PackageReference Include="Microsoft.IO.RecyclableMemoryStream" Version="$(RecyclableMemoryStreamVersion)" Condition="'$(RecyclableMemoryStreamVersion)' != ''" />
23-
<PackageReference Include="Microsoft.IO.RecyclableMemoryStream" Version="[1.2.*,4)" Condition="'$(RecyclableMemoryStreamVersion)' == ''" />
24-
<PackageReference Include="System.Text.Json" Version="[6.*,)" Condition="'$(SystemTextJsonVersion)' == ''" />
25-
<PackageReference Include="System.Text.Json" Version="$(SystemTextJsonVersion)" Condition="'$(SystemTextJsonVersion)' != ''" />
21+
<PackageReference Include="Microsoft.IO.RecyclableMemoryStream" Version="[2.*,4)" />
22+
<PackageReference Include="System.Text.Json" Version="[6.*,)"/>
2623
</ItemGroup>
2724
<ItemGroup>
2825
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="8.*" PrivateAssets="All" />

src/Imageflow/packages.lock.json

+11-8
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,12 @@
44
".NETStandard,Version=v2.0": {
55
"Microsoft.IO.RecyclableMemoryStream": {
66
"type": "Direct",
7-
"requested": "[1.2.*, 4.0.0)",
8-
"resolved": "1.2.2",
9-
"contentHash": "LA4RBTStohA0hAAs6oKchmIC5M5Mjd5MwfB7vbbl+312N5kXj8abTGOgwZy6ASJYLCiqiiK5kHS0hDGEgfkB8g=="
7+
"requested": "[2.*, 4.0.0)",
8+
"resolved": "2.3.2",
9+
"contentHash": "Oh1qXXFdJFcHozvb4H6XYLf2W0meZFuG0A+TfapFPj9z5fd4vxiARGEhAaLj/6XWQaMYIv4SH/9Q6H78Hw0E2Q==",
10+
"dependencies": {
11+
"System.Memory": "4.5.5"
12+
}
1013
},
1114
"Microsoft.SourceLink.GitHub": {
1215
"type": "Direct",
@@ -78,8 +81,8 @@
7881
},
7982
"System.Memory": {
8083
"type": "Transitive",
81-
"resolved": "4.5.4",
82-
"contentHash": "1MbJTHS1lZ4bS4FmsJjnuGJOu88ZzTT2rLvrhW7Ygic+pC0NWA+3hgAen0HRdsocuQXCkUTdFn9yHJJhsijDXw==",
84+
"resolved": "4.5.5",
85+
"contentHash": "XIWiDvKPXaTveaB7HVganDlOCRoj03l+jrwNvcge/t8vhGYKvqV+dMv6G4SAX2NoNmN0wZfVPTAlFwZcZvVOUw==",
8386
"dependencies": {
8487
"System.Buffers": "4.5.1",
8588
"System.Numerics.Vectors": "4.4.0",
@@ -118,9 +121,9 @@
118121
"net8.0": {
119122
"Microsoft.IO.RecyclableMemoryStream": {
120123
"type": "Direct",
121-
"requested": "[1.2.*, 4.0.0)",
122-
"resolved": "1.2.2",
123-
"contentHash": "LA4RBTStohA0hAAs6oKchmIC5M5Mjd5MwfB7vbbl+312N5kXj8abTGOgwZy6ASJYLCiqiiK5kHS0hDGEgfkB8g=="
124+
"requested": "[2.*, 4.0.0)",
125+
"resolved": "2.3.2",
126+
"contentHash": "Oh1qXXFdJFcHozvb4H6XYLf2W0meZFuG0A+TfapFPj9z5fd4vxiARGEhAaLj/6XWQaMYIv4SH/9Q6H78Hw0E2Q=="
124127
},
125128
"Microsoft.NET.ILLink.Tasks": {
126129
"type": "Direct",

tests/Imageflow.Test/Imageflow.Test.csproj

+4-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,10 @@
2727
<PackageReference Include="xunit.runner.visualstudio" Version="2.*" />
2828
<PackageReference Include="Newtonsoft.Json" Version="[13.0.3,14)" />
2929
<PackageReference Include="coverlet.collector" Version="3.1.0" />
30-
30+
<PackageReference Include="Microsoft.IO.RecyclableMemoryStream" Version="$(RecyclableMemoryStreamVersion)" Condition="'$(RecyclableMemoryStreamVersion)' != ''" />
31+
<PackageReference Include="Microsoft.IO.RecyclableMemoryStream" Version="2.3.2" Condition="'$(RecyclableMemoryStreamVersion)' == ''" />
32+
<PackageReference Include="System.Text.Json" Version="[6.*,)" Condition="'$(SystemTextJsonVersion)' == ''" />
33+
<PackageReference Include="System.Text.Json" Version="$(SystemTextJsonVersion)" Condition="'$(SystemTextJsonVersion)' != ''" />
3134
</ItemGroup>
3235
<ItemGroup>
3336
<ProjectReference Include="..\..\src\Imageflow.AllPlatforms\Imageflow.AllPlatforms.csproj" />

tests/Imageflow.Test/TestApi.cs

+29
Original file line numberDiff line numberDiff line change
@@ -263,7 +263,36 @@ public async Task TestBuildCommandStringWithWatermarks()
263263
}
264264

265265
}
266+
[Fact]
267+
public async Task TestBuildCommandStringWithStreamsAndWatermarks()
268+
{
269+
var imageBytes = Convert.FromBase64String("iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAAA1BMVEX/TQBcNTh/AAAAAXRSTlPM0jRW/QAAAApJREFUeJxjYgAAAAYAAzY3fKgAAAAASUVORK5CYII=");
270+
// var stream1 = new BufferedStream(new System.IO.MemoryStream(imageBytes));
271+
// var stream2 = new BufferedStream(new System.IO.MemoryStream(imageBytes));
272+
var stream1 = new BufferedStream(new MemoryStream(imageBytes));
273+
Assert.Equal(137, stream1.ReadByte());
274+
stream1.Seek(0, SeekOrigin.Begin);
275+
var stream2 = new BufferedStream(new MemoryStream(imageBytes));
276+
var stream3 = new BufferedStream(new MemoryStream(imageBytes));
277+
using (var b = new ImageJob())
278+
{
279+
var watermarks = new List<InputWatermark>();
280+
watermarks.Add(new InputWatermark(new StreamSource(stream1,true), new WatermarkOptions()));
281+
watermarks.Add(new InputWatermark(new StreamSource(stream2,true), new WatermarkOptions().SetGravity(new ConstraintGravity(100,100))));
282+
283+
var r = await b.BuildCommandString(
284+
new StreamSource(stream3,true),
285+
new BytesDestination(),
286+
"width=3&height=2&mode=stretch&scale=both&format=webp",watermarks).Finish().InProcessAsync();
266287

288+
Assert.Equal(3, r.First!.Width);
289+
Assert.Equal("webp", r.First.PreferredExtension);
290+
Assert.True(r.First.TryGetBytes().HasValue);
291+
}
292+
293+
}
294+
295+
267296
[Fact]
268297
public async Task TestFilesystemJobPrep()
269298
{

0 commit comments

Comments
 (0)