diff --git a/RetsSdk/Models/ConnectionOptions.cs b/RetsSdk/Models/ConnectionOptions.cs index e002984..7fce51b 100644 --- a/RetsSdk/Models/ConnectionOptions.cs +++ b/RetsSdk/Models/ConnectionOptions.cs @@ -9,7 +9,7 @@ public class ConnectionOptions public string Password { get; set; } public AuthenticationType Type { get; set; } public string UserAgent { get; set; } - public string UserAgentPassward { get; set; } + public string UserAgentPassword { get; set; } public SupportedRetsVersion RetsServerVersion { get; set; } = SupportedRetsVersion.Version_1_7_2; public string LoginUrl { get; set; } public TimeSpan Timeout { get; set; } diff --git a/RetsSdk/Models/SessionResource.cs b/RetsSdk/Models/SessionResource.cs index ce3b4d3..833d32e 100644 --- a/RetsSdk/Models/SessionResource.cs +++ b/RetsSdk/Models/SessionResource.cs @@ -7,6 +7,7 @@ namespace CrestApps.RetsSdk.Models { public class SessionResource { + public string BaseUri { get; set; } public string SessionId { get; set; } public string Cookie { get; set; } @@ -19,19 +20,24 @@ public SessionResource() public void AddCapability(Capability name, string url) { + if (url.StartsWith("/")) + { + url = BaseUri + url; + } + var uri = new Uri(url); if (Capabilities.ContainsKey(name) || !uri.IsWellFormedOriginalString()) { return; } - + Capabilities.TryAdd(name, uri); } public Uri GetCapability(Capability name) { - if(!Capabilities.ContainsKey(name)) + if (!Capabilities.ContainsKey(name)) { throw new MissingCapabilityException(); } diff --git a/RetsSdk/Services/RetsSession.cs b/RetsSdk/Services/RetsSession.cs index 783b27e..4fcf060 100644 --- a/RetsSdk/Services/RetsSession.cs +++ b/RetsSdk/Services/RetsSession.cs @@ -76,6 +76,7 @@ protected SessionResource GetRetsResource(string[] parts, string cookie) { var resource = new SessionResource() { + BaseUri = LoginUri.AbsoluteUri.Substring(0, LoginUri.AbsoluteUri.Length - LoginUri.PathAndQuery.Length), SessionId = MakeRetsSessionId(cookie), Cookie = cookie, }; @@ -102,12 +103,12 @@ private string MakeRetsSessionId(string cookie) { string sessionId = ExtractSessionId(cookie); - if(string.IsNullOrWhiteSpace(sessionId)) + if (string.IsNullOrWhiteSpace(sessionId)) { return null; } - string agentData = Str.Md5(Options.UserAgent + ":" + Options.UserAgentPassward); + string agentData = Str.Md5(Options.UserAgent + ":" + Options.UserAgentPassword); return $"{agentData}::{sessionId}:{Options.Version.AsHeader()}"; }