Skip to content

Commit 21e91c6

Browse files
authored
Merge pull request #1159 from microsoft/bugfix/copy-constructors-relative-urls
- fixes a bug where copy constructors would fail on relative urls
2 parents c99a51a + 116b56d commit 21e91c6

File tree

8 files changed

+21
-16
lines changed

8 files changed

+21
-16
lines changed

src/Microsoft.OpenApi.Readers/Microsoft.OpenApi.Readers.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
<Company>Microsoft</Company>
1111
<Title>Microsoft.OpenApi.Readers</Title>
1212
<PackageId>Microsoft.OpenApi.Readers</PackageId>
13-
<Version>1.6.0</Version>
13+
<Version>1.6.1</Version>
1414
<Description>OpenAPI.NET Readers for JSON and YAML documents</Description>
1515
<Copyright>© Microsoft Corporation. All rights reserved.</Copyright>
1616
<PackageTags>OpenAPI .NET</PackageTags>

src/Microsoft.OpenApi/Microsoft.OpenApi.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
<Company>Microsoft</Company>
1212
<Title>Microsoft.OpenApi</Title>
1313
<PackageId>Microsoft.OpenApi</PackageId>
14-
<Version>1.6.0</Version>
14+
<Version>1.6.1</Version>
1515
<Description>.NET models with JSON and YAML writers for OpenAPI specification</Description>
1616
<Copyright>© Microsoft Corporation. All rights reserved.</Copyright>
1717
<PackageTags>OpenAPI .NET</PackageTags>

src/Microsoft.OpenApi/Models/OpenApiContact.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ public OpenApiContact() { }
4646
public OpenApiContact(OpenApiContact contact)
4747
{
4848
Name = contact?.Name ?? Name;
49-
Url = contact?.Url != null ? new Uri(contact.Url.OriginalString) : null;
49+
Url = contact?.Url != null ? new Uri(contact.Url.OriginalString, UriKind.RelativeOrAbsolute) : null;
5050
Email = contact?.Email ?? Email;
5151
Extensions = contact?.Extensions != null ? new Dictionary<string, IOpenApiExtension>(contact.Extensions) : null;
5252
}

src/Microsoft.OpenApi/Models/OpenApiExternalDocs.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,15 +32,15 @@ public class OpenApiExternalDocs : IOpenApiSerializable, IOpenApiExtensible
3232
/// <summary>
3333
/// Parameter-less constructor
3434
/// </summary>
35-
public OpenApiExternalDocs() {}
35+
public OpenApiExternalDocs() { }
3636

3737
/// <summary>
3838
/// Initializes a copy of an <see cref="OpenApiExternalDocs"/> object
3939
/// </summary>
4040
public OpenApiExternalDocs(OpenApiExternalDocs externalDocs)
4141
{
4242
Description = externalDocs?.Description ?? Description;
43-
Url = externalDocs?.Url != null ? new Uri(externalDocs.Url.OriginalString) : null;
43+
Url = externalDocs?.Url != null ? new Uri(externalDocs.Url.OriginalString, UriKind.RelativeOrAbsolute) : null;
4444
Extensions = externalDocs?.Extensions != null ? new Dictionary<string, IOpenApiExtension>(externalDocs.Extensions) : null;
4545
}
4646

src/Microsoft.OpenApi/Models/OpenApiLicense.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,15 +32,15 @@ public class OpenApiLicense : IOpenApiSerializable, IOpenApiExtensible
3232
/// <summary>
3333
/// Parameterless constructor
3434
/// </summary>
35-
public OpenApiLicense() {}
35+
public OpenApiLicense() { }
3636

3737
/// <summary>
3838
/// Initializes a copy of an <see cref="OpenApiLicense"/> object
3939
/// </summary>
4040
public OpenApiLicense(OpenApiLicense license)
4141
{
4242
Name = license?.Name ?? Name;
43-
Url = license?.Url != null ? new Uri(license.Url.OriginalString) : null;
43+
Url = license?.Url != null ? new Uri(license.Url.OriginalString, UriKind.RelativeOrAbsolute) : null;
4444
Extensions = license?.Extensions != null ? new Dictionary<string, IOpenApiExtension>(license.Extensions) : null;
4545
}
4646

src/Microsoft.OpenApi/Models/OpenApiOAuthFlow.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,16 +44,16 @@ public class OpenApiOAuthFlow : IOpenApiSerializable, IOpenApiExtensible
4444
/// <summary>
4545
/// Parameterless constructor
4646
/// </summary>
47-
public OpenApiOAuthFlow() {}
47+
public OpenApiOAuthFlow() { }
4848

4949
/// <summary>
5050
/// Initializes a copy of an <see cref="OpenApiOAuthFlow"/> object
5151
/// </summary>
5252
public OpenApiOAuthFlow(OpenApiOAuthFlow oAuthFlow)
5353
{
54-
AuthorizationUrl = oAuthFlow?.AuthorizationUrl != null ? new Uri(oAuthFlow.AuthorizationUrl.OriginalString) : null;
55-
TokenUrl = oAuthFlow?.TokenUrl != null ? new Uri(oAuthFlow.TokenUrl.OriginalString) : null;
56-
RefreshUrl = oAuthFlow?.RefreshUrl != null ? new Uri(oAuthFlow.RefreshUrl.OriginalString) : null;
54+
AuthorizationUrl = oAuthFlow?.AuthorizationUrl != null ? new Uri(oAuthFlow.AuthorizationUrl.OriginalString, UriKind.RelativeOrAbsolute) : null;
55+
TokenUrl = oAuthFlow?.TokenUrl != null ? new Uri(oAuthFlow.TokenUrl.OriginalString, UriKind.RelativeOrAbsolute) : null;
56+
RefreshUrl = oAuthFlow?.RefreshUrl != null ? new Uri(oAuthFlow.RefreshUrl.OriginalString, UriKind.RelativeOrAbsolute) : null;
5757
Scopes = oAuthFlow?.Scopes != null ? new Dictionary<string, string>(oAuthFlow.Scopes) : null;
5858
Extensions = oAuthFlow?.Extensions != null ? new Dictionary<string, IOpenApiExtension>(oAuthFlow.Extensions) : null;
5959
}

src/Microsoft.OpenApi/Models/OpenApiSecurityScheme.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ public class OpenApiSecurityScheme : IOpenApiSerializable, IOpenApiReferenceable
7777
/// <summary>
7878
/// Parameterless constructor
7979
/// </summary>
80-
public OpenApiSecurityScheme() {}
80+
public OpenApiSecurityScheme() { }
8181

8282
/// <summary>
8383
/// Initializes a copy of <see cref="OpenApiSecurityScheme"/> object
@@ -91,7 +91,7 @@ public OpenApiSecurityScheme(OpenApiSecurityScheme securityScheme)
9191
Scheme = securityScheme?.Scheme ?? Scheme;
9292
BearerFormat = securityScheme?.BearerFormat ?? BearerFormat;
9393
Flows = securityScheme?.Flows != null ? new(securityScheme?.Flows) : null;
94-
OpenIdConnectUrl = securityScheme?.OpenIdConnectUrl != null ? new Uri(securityScheme.OpenIdConnectUrl.OriginalString) : null;
94+
OpenIdConnectUrl = securityScheme?.OpenIdConnectUrl != null ? new Uri(securityScheme.OpenIdConnectUrl.OriginalString, UriKind.RelativeOrAbsolute) : null;
9595
Extensions = securityScheme?.Extensions != null ? new Dictionary<string, IOpenApiExtension>(securityScheme.Extensions) : null;
9696
UnresolvedReference = securityScheme?.UnresolvedReference ?? UnresolvedReference;
9797
Reference = securityScheme?.Reference != null ? new(securityScheme?.Reference) : null;
@@ -107,8 +107,8 @@ public void SerializeAsV3(IOpenApiWriter writer)
107107
throw Error.ArgumentNull(nameof(writer));
108108
}
109109

110-
111-
if (Reference != null)
110+
111+
if (Reference != null)
112112
{
113113
Reference.SerializeAsV3(writer);
114114
return;

test/Microsoft.OpenApi.Tests/Writers/OpenApiYamlWriterTests.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -618,7 +618,12 @@ public void WriteInlineRecursiveSchemav2()
618618
type: object
619619
properties:
620620
children:
621-
$ref: '#/definitions/thing'
621+
type: object
622+
properties:
623+
children:
624+
$ref: '#/definitions/thing'
625+
related:
626+
type: integer
622627
related:
623628
type: integer";
624629
// Component schemas that are there due to cycles are still inlined because the items they reference may not exist in the components because they don't have cycles.

0 commit comments

Comments
 (0)