Skip to content

Commit 7f10530

Browse files
committed
Merge pull request #632 from carolynvs/parse-token-without-culture
2 parents 683932f + f3fb8f1 commit 7f10530

File tree

15 files changed

+64
-42
lines changed

15 files changed

+64
-42
lines changed

src/corelib/ContentDeliveryNetworks/v1/ServiceOperationFailedException.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ public ServiceOperationFailedException(IEnumerable<ServiceError> errors)
2727
/// <param name="context">The <see cref="T:System.Runtime.Serialization.StreamingContext" /> that contains contextual information about the source or destination.</param>
2828
private ServiceOperationFailedException(SerializationInfo info, StreamingContext context) : base(info, context)
2929
{
30-
Errors = OpenStackNet.Configuration.FlurlHttpSettings.JsonSerializer.Deserialize<IEnumerable<ServiceError>>(info.GetString("service_errors"));
30+
Errors = OpenStackNet.Deserialize<IEnumerable<ServiceError>>(info.GetString("service_errors"));
3131
}
3232

3333
/// <summary>
@@ -48,7 +48,7 @@ private ServiceOperationFailedException(SerializationInfo info, StreamingContext
4848
public override void GetObjectData(SerializationInfo info, StreamingContext context)
4949
{
5050
// ReSharper disable once ExceptionNotDocumented
51-
info.AddValue("service_errors", OpenStackNet.Configuration.FlurlHttpSettings.JsonSerializer.Serialize(Errors));
51+
info.AddValue("service_errors", OpenStackNet.Serialize(Errors));
5252
base.GetObjectData(info, context);
5353
}
5454
}

src/corelib/Core/Providers/OpenStackIdentityProvider.cs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using System.Collections.Generic;
2+
using Newtonsoft.Json;
23
using OpenStack;
34
using OpenStack.Authentication;
45

@@ -109,11 +110,12 @@ public override UserAccess GetUserAccess(CloudIdentity identity, bool forceCache
109110
if (response == null || response.Data == null)
110111
return null;
111112

112-
JToken userAccessObject = response.Data["access"];
113-
if (userAccessObject == null)
113+
// The defalut json serialization is helpfully formatting the expires date string. Use our custom serializer for this part to prevent chaos of timezone proportions.
114+
var rawJson = response.Data["access"]?.ToString(Formatting.None);
115+
if (rawJson == null)
114116
return null;
115117

116-
UserAccess access = userAccessObject.ToObject<UserAccess>();
118+
UserAccess access = OpenStackNet.Deserialize<UserAccess>(rawJson);
117119
if (access == null || access.Token == null)
118120
return null;
119121

src/corelib/OpenStackNet.cs

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,26 @@ public static void ResetDefaults()
8989
}
9090
}
9191

92+
/// <summary>
93+
/// Deserializes an object from a json string representation.
94+
/// </summary>
95+
/// <typeparam name="T">The object type.</typeparam>
96+
/// <param name="json">The json string.</param>
97+
public static T Deserialize<T>(string json)
98+
{
99+
return Configuration.FlurlHttpSettings.JsonSerializer.Deserialize<T>(json);
100+
}
101+
102+
/// <summary>
103+
/// Serializes an object to a json string representation
104+
/// </summary>
105+
/// <param name="obj">The object.</param>
106+
/// <returns>The json string representation of the object.</returns>
107+
public static string Serialize(object obj)
108+
{
109+
return Configuration.FlurlHttpSettings.JsonSerializer.Serialize(obj);
110+
}
111+
92112
/// <summary>
93113
/// Provides global point for programmatically configuraing tracing
94114
/// </summary>

src/corelib/Testing/HttpTest.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ private void SetTestMode(OpenStackNetConfigurationOptions options)
5454
ResponseQueue.Enqueue(new HttpResponseMessage
5555
{
5656
StatusCode = (HttpStatusCode)status,
57-
Content = new CapturedJsonContent(OpenStackNet.Configuration.FlurlHttpSettings.JsonSerializer.Serialize(data))
57+
Content = new CapturedJsonContent(OpenStackNet.Serialize(data))
5858
});
5959
return this;
6060
}

src/testing/unit/Compute/v2_1/KeyPairTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ public void DeserializeKeyPairCollection()
4343
]
4444
}").ToString();
4545

46-
var results = OpenStackNet.Configuration.FlurlHttpSettings.JsonSerializer.Deserialize<KeyPairSummaryCollection>(json);
46+
var results = OpenStackNet.Deserialize<KeyPairSummaryCollection>(json);
4747
Assert.NotNull(results);
4848
Assert.Equal(2, results.Count());
4949
var result = results.First();

src/testing/unit/Compute/v2_1/SecurityGroupTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ public void DeserializeSecurityGroupRule()
9898
},
9999
'id': '55d75417-37df-48e2-96aa-20ba53a82900'
100100
}}";
101-
var result = OpenStackNet.Configuration.FlurlHttpSettings.JsonSerializer.Deserialize<SecurityGroupRule>(JObject.Parse(json).ToString());
101+
var result = OpenStackNet.Deserialize<SecurityGroupRule>(JObject.Parse(json).ToString());
102102
Assert.Equal("0.0.0.0 / 24", result.CIDR);
103103
}
104104

src/testing/unit/Compute/v2_1/ServerTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ public void SerializeServerWithSchedulerHints()
2929
server.SchedulerHints = new SchedulerHints();
3030
server.SchedulerHints.Add("group", "groupId");
3131

32-
var json = OpenStackNet.Configuration.FlurlHttpSettings.JsonSerializer.Serialize(server);
32+
var json = OpenStackNet.Serialize(server);
3333
Assert.Equal(expectedJson, json);
3434
}
3535

@@ -40,7 +40,7 @@ public void SerializeServerWithoutSchedulerHints()
4040
.ToString(Formatting.None);
4141
var server = new ServerCreateDefinition("name", Guid.Empty, Guid.Empty);
4242

43-
var json = OpenStackNet.Configuration.FlurlHttpSettings.JsonSerializer.Serialize(server);
43+
var json = OpenStackNet.Serialize(server);
4444
Assert.Equal(expectedJson, json);
4545
}
4646

src/testing/unit/Compute/v2_1/VolumeTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ public VolumeTests()
2424
public void DeserializeVolumeWithEmptyAttachment()
2525
{
2626
var json = JObject.Parse(@"{'volume': {'attachments': [{}]}}").ToString();
27-
var result = OpenStackNet.Configuration.FlurlHttpSettings.JsonSerializer.Deserialize<Volume>(json);
27+
var result = OpenStackNet.Deserialize<Volume>(json);
2828
Assert.Empty(result.Attachments);
2929
}
3030

src/testing/unit/ContentDeliveryNetworks/v1/ServiceCacheTests.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ public void SerializeTimeToLiveToSeconds()
1212
{
1313
var cache = new ServiceCache("cache", TimeSpan.FromSeconds(60));
1414

15-
var json = OpenStackNet.Configuration.FlurlHttpSettings.JsonSerializer.Serialize(cache);
15+
var json = OpenStackNet.Serialize(cache);
1616

1717
var result = JObject.Parse(json);
1818
Assert.Equal(60, result.Value<double>("ttl"));
@@ -22,9 +22,9 @@ public void SerializeTimeToLiveToSeconds()
2222
public void DeserializeTimeToLiveFromSeconds()
2323
{
2424
var cache = new ServiceCache("cache", TimeSpan.FromSeconds(60));
25-
var json = OpenStackNet.Configuration.FlurlHttpSettings.JsonSerializer.Serialize(cache);
25+
var json = OpenStackNet.Serialize(cache);
2626

27-
var result = OpenStackNet.Configuration.FlurlHttpSettings.JsonSerializer.Deserialize<ServiceCache>(json);
27+
var result = OpenStackNet.Deserialize<ServiceCache>(json);
2828

2929
Assert.Equal(60, result.TimeToLive.TotalSeconds);
3030
}

src/testing/unit/ContentDeliveryNetworks/v1/ServiceTests.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,11 @@ public void SerializeServiceCollection()
3232
Items = {new Service {Id = "service-id"}},
3333
Links = {new PageLink("next", "http://api.com/next")}
3434
};
35-
string json = OpenStackNet.Configuration.FlurlHttpSettings.JsonSerializer.Serialize(services);
35+
string json = OpenStackNet.Serialize(services);
3636
Assert.Contains("\"services\"", json);
3737
Assert.DoesNotContain("\"service\"", json);
3838

39-
var result = OpenStackNet.Configuration.FlurlHttpSettings.JsonSerializer.Deserialize<ServiceCollection>(json);
39+
var result = OpenStackNet.Deserialize<ServiceCollection>(json);
4040
Assert.NotNull(result);
4141
Assert.Equal(1, result.Count());
4242
Assert.Equal(1, result.Items.Count());
@@ -48,9 +48,9 @@ public void SerializeServiceCollection()
4848
public void SerializePageLink()
4949
{
5050
var link = new PageLink("next", "http://api.com/next");
51-
string json = OpenStackNet.Configuration.FlurlHttpSettings.JsonSerializer.Serialize(link);
51+
string json = OpenStackNet.Serialize(link);
5252

53-
var result = OpenStackNet.Configuration.FlurlHttpSettings.JsonSerializer.Deserialize<PageLink>(json);
53+
var result = OpenStackNet.Deserialize<PageLink>(json);
5454
Assert.NotNull(result);
5555
Assert.True(result.IsNextPage);
5656
}

0 commit comments

Comments
 (0)