Skip to content

Commit

Permalink
fixing url encoding issue with signed SMS
Browse files Browse the repository at this point in the history
  • Loading branch information
slorello89 committed Oct 9, 2019
1 parent ea32c59 commit 32265d4
Show file tree
Hide file tree
Showing 4 changed files with 18 additions and 4 deletions.
2 changes: 1 addition & 1 deletion Nexmo.Api/Nexmo.Api.nuspec
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<package>
<metadata>
<id>Nexmo.Csharp.Client</id>
<version>4.1.1</version>
<version>4.1.2</version>
<title>Nexmo API Client</title>
<authors>Nexmo</authors>
<owners>Nexmo</owners>
Expand Down
4 changes: 2 additions & 2 deletions Nexmo.Api/Properties/AssemblyInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -34,5 +34,5 @@
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("4.1.1.0")]
[assembly: AssemblyFileVersion("4.1.1.0")]
[assembly: AssemblyVersion("4.1.2.0")]
[assembly: AssemblyFileVersion("4.1.2.0")]
11 changes: 10 additions & 1 deletion Nexmo.Api/Request/ApiRequest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -41,13 +41,21 @@ private static StringBuilder BuildQueryString(IDictionary<string, string> parame
}

var sb = new StringBuilder();
var signature_sb = new StringBuilder();
Action<IDictionary<string, string>, StringBuilder> buildStringFromParams = (param, strings) =>
{
foreach (var kvp in param)
{
strings.AppendFormat("{0}={1}&", WebUtility.UrlEncode(kvp.Key), WebUtility.UrlEncode(kvp.Value));
}
};
Action<IDictionary<string, string>, StringBuilder> buildSignatureStringFromParams = (param, strings) =>
{
foreach (var kvp in param)
{
strings.AppendFormat("{0}={1}&", kvp.Key.Replace('=','_').Replace('&','_'), kvp.Value.Replace('=', '_').Replace('&', '_'));
}
};
parameters.Add("api_key", apiKey);
if (string.IsNullOrEmpty(securitySecret))
{
Expand All @@ -59,7 +67,8 @@ private static StringBuilder BuildQueryString(IDictionary<string, string> parame
parameters.Add("timestamp", ((int)(DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalSeconds).ToString(CultureInfo.InvariantCulture));
var sortedParams = new SortedDictionary<string, string>(parameters);
buildStringFromParams(sortedParams, sb);
var signature = SmsSignatureGenerator.GenerateSignature(sb.ToString(), securitySecret, method);
buildSignatureStringFromParams(sortedParams, signature_sb);
var signature = SmsSignatureGenerator.GenerateSignature(signature_sb.ToString(), securitySecret, method);
sb.AppendFormat("sig={0}", signature);
return sb;
}
Expand Down
5 changes: 5 additions & 0 deletions Nexmo.Api/SMS.cs
Original file line number Diff line number Diff line change
Expand Up @@ -354,6 +354,11 @@ public class SMSInbound
/// The hex encoded User Data Header
/// </summary>
public string udh { get; set; }

/// <summary>
/// Signature if Applicable
/// </summary>
public string sig { get; set; }
}

/// <summary>
Expand Down

0 comments on commit 32265d4

Please sign in to comment.