1
1
using System ;
2
2
using System . ComponentModel ;
3
+ using System . Diagnostics ;
3
4
using System . IO ;
5
+ using System . Net . Http ;
4
6
using Avalonia . Platform ;
5
7
using ShimSkiaSharp ;
6
8
using SM = Svg . Model ;
@@ -29,22 +31,35 @@ public class SvgSource
29
31
if ( File . Exists ( path ) )
30
32
{
31
33
var document = SM . SvgExtensions . Open ( path ) ;
32
- if ( document is { } )
34
+ return document is { } ? SM . SvgExtensions . ToModel ( document , s_assetLoader , out _ , out _ ) : default ;
35
+ }
36
+
37
+ if ( Uri . TryCreate ( path , UriKind . Absolute , out var uriHttp ) && ( uriHttp . Scheme == "http" || uriHttp . Scheme == "https" ) )
38
+ {
39
+ try
33
40
{
34
- return SM . SvgExtensions . ToModel ( document , s_assetLoader , out _ , out _ ) ;
41
+ var response = new HttpClient ( ) . GetAsync ( uriHttp ) . Result ;
42
+ if ( response . IsSuccessStatusCode )
43
+ {
44
+ var stream = response . Content . ReadAsStreamAsync ( ) . Result ;
45
+ var document = SM . SvgExtensions . Open ( stream ) ;
46
+ return document is { } ? SM . SvgExtensions . ToModel ( document , s_assetLoader , out _ , out _ ) : default ;
47
+ }
35
48
}
49
+ catch ( HttpRequestException e )
50
+ {
51
+ Debug . WriteLine ( "Failed to connect to " + uriHttp ) ;
52
+ Debug . WriteLine ( e . ToString ( ) ) ;
53
+ }
54
+
36
55
return default ;
37
56
}
38
57
39
58
var uri = path . StartsWith ( "/" ) ? new Uri ( path , UriKind . Relative ) : new Uri ( path , UriKind . RelativeOrAbsolute ) ;
40
59
if ( uri . IsAbsoluteUri && uri . IsFile )
41
60
{
42
61
var document = SM . SvgExtensions . Open ( uri . LocalPath ) ;
43
- if ( document is { } )
44
- {
45
- return SM . SvgExtensions . ToModel ( document , s_assetLoader , out _ , out _ ) ;
46
- }
47
- return default ;
62
+ return document is { } ? SM . SvgExtensions . ToModel ( document , s_assetLoader , out _ , out _ ) : default ;
48
63
}
49
64
else
50
65
{
@@ -55,11 +70,7 @@ public class SvgSource
55
70
return default ;
56
71
}
57
72
var document = SM . SvgExtensions . Open ( stream ) ;
58
- if ( document is { } )
59
- {
60
- return SM . SvgExtensions . ToModel ( document , s_assetLoader , out _ , out _ ) ;
61
- }
62
- return default ;
73
+ return document is { } ? SM . SvgExtensions . ToModel ( document , s_assetLoader , out _ , out _ ) : default ;
63
74
}
64
75
}
65
76
0 commit comments