Skip to content

Commit a470e35

Browse files
committed
Support for 4.5.2-4.6.1; housekeeping
1 parent f314bc3 commit a470e35

File tree

9 files changed

+165
-68
lines changed

9 files changed

+165
-68
lines changed

LICENSE.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
The MIT License (MIT)
22

3-
Copyright (c) 2015 Robert Smith
3+
Copyright (c) 2015-2016 Robert Smith
44

55
Permission is hereby granted, free of charge, to any person obtaining a copy of
66
this software and associated documentation files (the "Software"), to deal in

Nexmo.Api.Test.Integration/Nexmo.Api.Test.Integration.csproj

+24-3
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,34 @@
2121
<ErrorReport>prompt</ErrorReport>
2222
<WarningLevel>4</WarningLevel>
2323
</PropertyGroup>
24-
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
25-
<DebugType>pdbonly</DebugType>
24+
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release452|AnyCPU' ">
25+
<DebugType>none</DebugType>
2626
<Optimize>true</Optimize>
27-
<OutputPath>bin\Release\</OutputPath>
27+
<OutputPath>bin\net452\</OutputPath>
2828
<DefineConstants>TRACE</DefineConstants>
2929
<ErrorReport>prompt</ErrorReport>
3030
<WarningLevel>4</WarningLevel>
31+
<TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>
32+
</PropertyGroup>
33+
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release46|AnyCPU'">
34+
<OutputPath>bin\net46\</OutputPath>
35+
<DefineConstants>TRACE</DefineConstants>
36+
<Optimize>true</Optimize>
37+
<DebugType>none</DebugType>
38+
<PlatformTarget>AnyCPU</PlatformTarget>
39+
<ErrorReport>prompt</ErrorReport>
40+
<TargetFrameworkVersion>v4.6</TargetFrameworkVersion>
41+
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
42+
</PropertyGroup>
43+
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release461|AnyCPU'">
44+
<OutputPath>bin\net461\</OutputPath>
45+
<DefineConstants>TRACE</DefineConstants>
46+
<Optimize>true</Optimize>
47+
<DebugType>none</DebugType>
48+
<PlatformTarget>AnyCPU</PlatformTarget>
49+
<ErrorReport>prompt</ErrorReport>
50+
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
51+
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
3152
</PropertyGroup>
3253
<ItemGroup>
3354
<Reference Include="nunit.framework, Version=3.2.0.0, Culture=neutral, PublicKeyToken=2638cd05610744eb, processorArchitecture=MSIL">

Nexmo.Api.Test.Unit/Nexmo.Api.Test.Unit.csproj

+24-3
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,34 @@
2121
<ErrorReport>prompt</ErrorReport>
2222
<WarningLevel>4</WarningLevel>
2323
</PropertyGroup>
24-
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
25-
<DebugType>pdbonly</DebugType>
24+
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release452|AnyCPU' ">
25+
<DebugType>none</DebugType>
2626
<Optimize>true</Optimize>
27-
<OutputPath>bin\Release\</OutputPath>
27+
<OutputPath>bin\net452\</OutputPath>
2828
<DefineConstants>TRACE</DefineConstants>
2929
<ErrorReport>prompt</ErrorReport>
3030
<WarningLevel>4</WarningLevel>
31+
<TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>
32+
</PropertyGroup>
33+
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release46|AnyCPU'">
34+
<OutputPath>bin\net46\</OutputPath>
35+
<DefineConstants>TRACE</DefineConstants>
36+
<Optimize>true</Optimize>
37+
<DebugType>none</DebugType>
38+
<PlatformTarget>AnyCPU</PlatformTarget>
39+
<ErrorReport>prompt</ErrorReport>
40+
<TargetFrameworkVersion>v4.6</TargetFrameworkVersion>
41+
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
42+
</PropertyGroup>
43+
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release461|AnyCPU'">
44+
<OutputPath>bin\net461\</OutputPath>
45+
<DefineConstants>TRACE</DefineConstants>
46+
<Optimize>true</Optimize>
47+
<DebugType>none</DebugType>
48+
<PlatformTarget>AnyCPU</PlatformTarget>
49+
<ErrorReport>prompt</ErrorReport>
50+
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
51+
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
3152
</PropertyGroup>
3253
<ItemGroup>
3354
<Reference Include="Moq, Version=4.2.1510.2205, Culture=neutral, PublicKeyToken=69f491c39445e920, processorArchitecture=MSIL">

Nexmo.Api.sln

+29-11
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11

22
Microsoft Visual Studio Solution File, Format Version 12.00
3-
# Visual Studio 2013
4-
VisualStudioVersion = 12.0.40629.0
3+
# Visual Studio 14
4+
VisualStudioVersion = 14.0.24720.0
55
MinimumVisualStudioVersion = 10.0.40219.1
66
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Nexmo.Api", "Nexmo.Api\Nexmo.Api.csproj", "{EE7DA727-2AE3-4C76-809A-56B7433004FE}"
77
EndProject
@@ -21,25 +21,43 @@ EndProject
2121
Global
2222
GlobalSection(SolutionConfigurationPlatforms) = preSolution
2323
Debug|Any CPU = Debug|Any CPU
24-
Release|Any CPU = Release|Any CPU
24+
net452|Any CPU = net452|Any CPU
25+
net46|Any CPU = net46|Any CPU
26+
net461|Any CPU = net461|Any CPU
2527
EndGlobalSection
2628
GlobalSection(ProjectConfigurationPlatforms) = postSolution
2729
{EE7DA727-2AE3-4C76-809A-56B7433004FE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
2830
{EE7DA727-2AE3-4C76-809A-56B7433004FE}.Debug|Any CPU.Build.0 = Debug|Any CPU
29-
{EE7DA727-2AE3-4C76-809A-56B7433004FE}.Release|Any CPU.ActiveCfg = Release|Any CPU
30-
{EE7DA727-2AE3-4C76-809A-56B7433004FE}.Release|Any CPU.Build.0 = Release|Any CPU
31+
{EE7DA727-2AE3-4C76-809A-56B7433004FE}.net452|Any CPU.ActiveCfg = Release452|Any CPU
32+
{EE7DA727-2AE3-4C76-809A-56B7433004FE}.net452|Any CPU.Build.0 = Release452|Any CPU
33+
{EE7DA727-2AE3-4C76-809A-56B7433004FE}.net46|Any CPU.ActiveCfg = Release46|Any CPU
34+
{EE7DA727-2AE3-4C76-809A-56B7433004FE}.net46|Any CPU.Build.0 = Release46|Any CPU
35+
{EE7DA727-2AE3-4C76-809A-56B7433004FE}.net461|Any CPU.ActiveCfg = Release461|Any CPU
36+
{EE7DA727-2AE3-4C76-809A-56B7433004FE}.net461|Any CPU.Build.0 = Release461|Any CPU
3137
{3B32C093-EBED-4D60-B2FC-046F8FCE11D9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
3238
{3B32C093-EBED-4D60-B2FC-046F8FCE11D9}.Debug|Any CPU.Build.0 = Debug|Any CPU
33-
{3B32C093-EBED-4D60-B2FC-046F8FCE11D9}.Release|Any CPU.ActiveCfg = Release|Any CPU
34-
{3B32C093-EBED-4D60-B2FC-046F8FCE11D9}.Release|Any CPU.Build.0 = Release|Any CPU
39+
{3B32C093-EBED-4D60-B2FC-046F8FCE11D9}.net452|Any CPU.ActiveCfg = Release452|Any CPU
40+
{3B32C093-EBED-4D60-B2FC-046F8FCE11D9}.net452|Any CPU.Build.0 = Release452|Any CPU
41+
{3B32C093-EBED-4D60-B2FC-046F8FCE11D9}.net46|Any CPU.ActiveCfg = Release46|Any CPU
42+
{3B32C093-EBED-4D60-B2FC-046F8FCE11D9}.net46|Any CPU.Build.0 = Release46|Any CPU
43+
{3B32C093-EBED-4D60-B2FC-046F8FCE11D9}.net461|Any CPU.ActiveCfg = Release461|Any CPU
44+
{3B32C093-EBED-4D60-B2FC-046F8FCE11D9}.net461|Any CPU.Build.0 = Release461|Any CPU
3545
{826FCF13-1B74-4404-B523-E59AF6F344C3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
3646
{826FCF13-1B74-4404-B523-E59AF6F344C3}.Debug|Any CPU.Build.0 = Debug|Any CPU
37-
{826FCF13-1B74-4404-B523-E59AF6F344C3}.Release|Any CPU.ActiveCfg = Release|Any CPU
38-
{826FCF13-1B74-4404-B523-E59AF6F344C3}.Release|Any CPU.Build.0 = Release|Any CPU
47+
{826FCF13-1B74-4404-B523-E59AF6F344C3}.net452|Any CPU.ActiveCfg = Release452|Any CPU
48+
{826FCF13-1B74-4404-B523-E59AF6F344C3}.net452|Any CPU.Build.0 = Release452|Any CPU
49+
{826FCF13-1B74-4404-B523-E59AF6F344C3}.net46|Any CPU.ActiveCfg = Release46|Any CPU
50+
{826FCF13-1B74-4404-B523-E59AF6F344C3}.net46|Any CPU.Build.0 = Release46|Any CPU
51+
{826FCF13-1B74-4404-B523-E59AF6F344C3}.net461|Any CPU.ActiveCfg = Release461|Any CPU
52+
{826FCF13-1B74-4404-B523-E59AF6F344C3}.net461|Any CPU.Build.0 = Release461|Any CPU
3953
{62C64008-D7DF-4647-8C2B-4F8A15A21631}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
4054
{62C64008-D7DF-4647-8C2B-4F8A15A21631}.Debug|Any CPU.Build.0 = Debug|Any CPU
41-
{62C64008-D7DF-4647-8C2B-4F8A15A21631}.Release|Any CPU.ActiveCfg = Release|Any CPU
42-
{62C64008-D7DF-4647-8C2B-4F8A15A21631}.Release|Any CPU.Build.0 = Release|Any CPU
55+
{62C64008-D7DF-4647-8C2B-4F8A15A21631}.net452|Any CPU.ActiveCfg = Release452|Any CPU
56+
{62C64008-D7DF-4647-8C2B-4F8A15A21631}.net452|Any CPU.Build.0 = Release452|Any CPU
57+
{62C64008-D7DF-4647-8C2B-4F8A15A21631}.net46|Any CPU.ActiveCfg = Release46|Any CPU
58+
{62C64008-D7DF-4647-8C2B-4F8A15A21631}.net46|Any CPU.Build.0 = Release46|Any CPU
59+
{62C64008-D7DF-4647-8C2B-4F8A15A21631}.net461|Any CPU.ActiveCfg = Release461|Any CPU
60+
{62C64008-D7DF-4647-8C2B-4F8A15A21631}.net461|Any CPU.Build.0 = Release461|Any CPU
4361
EndGlobalSection
4462
GlobalSection(SolutionProperties) = preSolution
4563
HideSolutionNode = FALSE

Nexmo.Api/Nexmo.Api.csproj

+24-3
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,34 @@
2222
<ErrorReport>prompt</ErrorReport>
2323
<WarningLevel>4</WarningLevel>
2424
</PropertyGroup>
25-
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
26-
<DebugType>pdbonly</DebugType>
25+
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release452|AnyCPU' ">
26+
<DebugType>none</DebugType>
2727
<Optimize>true</Optimize>
28-
<OutputPath>bin\Release\</OutputPath>
28+
<OutputPath>bin\net452\</OutputPath>
2929
<DefineConstants>TRACE</DefineConstants>
3030
<ErrorReport>prompt</ErrorReport>
3131
<WarningLevel>4</WarningLevel>
32+
<TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>
33+
</PropertyGroup>
34+
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release46|AnyCPU'">
35+
<OutputPath>bin\net46\</OutputPath>
36+
<DefineConstants>TRACE</DefineConstants>
37+
<Optimize>true</Optimize>
38+
<DebugType>none</DebugType>
39+
<PlatformTarget>AnyCPU</PlatformTarget>
40+
<ErrorReport>prompt</ErrorReport>
41+
<TargetFrameworkVersion>v4.6</TargetFrameworkVersion>
42+
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
43+
</PropertyGroup>
44+
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release461|AnyCPU'">
45+
<OutputPath>bin\net461\</OutputPath>
46+
<DefineConstants>TRACE</DefineConstants>
47+
<Optimize>true</Optimize>
48+
<DebugType>none</DebugType>
49+
<PlatformTarget>AnyCPU</PlatformTarget>
50+
<ErrorReport>prompt</ErrorReport>
51+
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
52+
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
3253
</PropertyGroup>
3354
<ItemGroup>
3455
<Reference Include="Newtonsoft.Json, Version=8.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">

Nexmo.Api/Nexmo.Api.nuspec

+14-4
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,27 @@
22
<package >
33
<metadata>
44
<id>Nexmo.Csharp.Client</id>
5-
<version>$version$</version>
5+
<version>1.0.0</version>
66
<title>Nexmo API Client</title>
7-
<authors>$author$</authors>
8-
<owners>$author$</owners>
7+
<authors>Nexmo</authors>
8+
<owners>Nexmo</owners>
99
<licenseUrl>https://github.com/Nexmo/csharp-client/blob/master/LICENSE.md</licenseUrl>
1010
<projectUrl>https://github.com/Nexmo/csharp-client</projectUrl>
1111
<iconUrl>https://dashboard.nexmo.com/apple-touch-icon.png</iconUrl>
1212
<requireLicenseAcceptance>false</requireLicenseAcceptance>
13-
<description>$description$</description>
13+
<description>Official C#/.NET wrapper for the nexmo API</description>
1414
<releaseNotes>Initial release.</releaseNotes>
1515
<copyright>© Nexmo 2016</copyright>
1616
<tags>SMS voice telephony phone nexmo</tags>
17+
<dependencies>
18+
<group>
19+
<dependency id="Newtonsoft.Json" version="8.0.3" />
20+
</group>
21+
</dependencies>
1722
</metadata>
23+
<files>
24+
<file src="bin\net452\Nexmo.Api.dll" target="lib\net452\Nexmo.Api.dll" />
25+
<file src="bin\net46\Nexmo.Api.dll" target="lib\net46\Nexmo.Api.dll" />
26+
<file src="bin\net461\Nexmo.Api.dll" target="lib\net461\Nexmo.Api.dll" />
27+
</files>
1828
</package>

Nexmo.Web.Sample/Nexmo.Web.Sample.csproj

+32-2
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,34 @@
3131
<ErrorReport>prompt</ErrorReport>
3232
<WarningLevel>4</WarningLevel>
3333
</PropertyGroup>
34-
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
35-
<DebugType>pdbonly</DebugType>
34+
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release452|AnyCPU' ">
35+
<DebugType>none</DebugType>
36+
<Optimize>true</Optimize>
37+
<OutputPath>bin\</OutputPath>
38+
<DefineConstants>TRACE</DefineConstants>
39+
<ErrorReport>prompt</ErrorReport>
40+
<WarningLevel>4</WarningLevel>
41+
<TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>
42+
</PropertyGroup>
43+
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release46|AnyCPU' ">
44+
<DebugType>none</DebugType>
45+
<Optimize>true</Optimize>
46+
<OutputPath>bin\</OutputPath>
47+
<DefineConstants>TRACE</DefineConstants>
48+
<ErrorReport>prompt</ErrorReport>
49+
<WarningLevel>4</WarningLevel>
50+
<TargetFrameworkVersion>v4.6</TargetFrameworkVersion>
51+
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
52+
</PropertyGroup>
53+
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release461|AnyCPU' ">
54+
<DebugType>none</DebugType>
3655
<Optimize>true</Optimize>
3756
<OutputPath>bin\</OutputPath>
3857
<DefineConstants>TRACE</DefineConstants>
3958
<ErrorReport>prompt</ErrorReport>
4059
<WarningLevel>4</WarningLevel>
60+
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
61+
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
4162
</PropertyGroup>
4263
<ItemGroup>
4364
<Reference Include="Microsoft.AspNet.Identity.Core, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
@@ -223,6 +244,15 @@
223244
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
224245
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
225246
</PropertyGroup>
247+
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release46|AnyCPU'">
248+
<OutputPath>bin\</OutputPath>
249+
<DefineConstants>TRACE</DefineConstants>
250+
<Optimize>true</Optimize>
251+
<DebugType>pdbonly</DebugType>
252+
<PlatformTarget>AnyCPU</PlatformTarget>
253+
<ErrorReport>prompt</ErrorReport>
254+
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
255+
</PropertyGroup>
226256
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
227257
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />
228258
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />

Nexmo.Web.Sample/Web.config.example

+1-1
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@
5858
</dependentAssembly>
5959
<dependentAssembly>
6060
<assemblyIdentity name="Newtonsoft.Json" culture="neutral" publicKeyToken="30ad4fe6b2a6aeed" />
61-
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
61+
<bindingRedirect oldVersion="0.0.0.0-8.0.0.0" newVersion="8.0.0.0" />
6262
</dependentAssembly>
6363
<dependentAssembly>
6464
<assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" />

README.md

+16-40
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,24 @@ Official C#/.NET wrapper for the nexmo API (http://nexmo.com/)
22

33
For full API documentation please refer to https://docs.nexmo.com/
44

5-
Usage Instructions:
5+
Installation:
66
===========================
7-
_NOTE: NuGet package coming soon!_
7+
* To install Nexmo API Client, run the following command in the Package Manager Console:
8+
9+
```
10+
Install-Package Nexmo.Csharp.Client
11+
```
12+
13+
Alternatively:
814

915
* Download or build (see developer instructions) the Nexmo.Api.dll.
1016
* If you have downloaded a release, ensure you are referencing the
1117
Newtonsoft.Json.dll dependency by either including it with your project's
1218
NuGet dependencies or manually referencing it.
1319
* Reference the assembly in your code.
20+
21+
Configuration:
22+
===========================
1423
* Provide your API key, secret, and nexmo URLs in appSettings:
1524

1625
```XML
@@ -20,6 +29,8 @@ NuGet dependencies or manually referencing it.
2029
<add key="Nexmo.api_secret" value="<YOUR SECRET>" />
2130
```
2231

32+
Usage:
33+
===========================
2334
* Use the methods provided to exercise the API. Example:
2435

2536
```C#
@@ -36,45 +47,10 @@ Make sure to copy web.config.example to web.config and enter your key/secret.
3647
Developer Instructions:
3748
===========================
3849

39-
We are currently targeting the 4.5.2 framework and using Visual Studio 2013 Update 5.
50+
We are currently targeting the 4.5.2 - 4.6.1 frameworks and using Visual Studio 2015 Update 1.
4051

41-
1. Get latest code either by cloning the repository or downloading a snapshot of the source
52+
1. Get latest code either by cloning the repository or downloading a snapshot of the source.
4253
2. Open "Nexmo.Api.sln"
4354
3. Build! NuGet dependencies should be brought down automatically; check your settings if they are not.
4455

45-
API support status:
46-
===================
47-
48-
* Account
49-
* [x] Balance
50-
* [x] Pricing
51-
* [X] Settings
52-
* [X] Top Up
53-
* [X] Numbers
54-
* Number
55-
* [X] Search
56-
* [X] Buy
57-
* [X] Cancel
58-
* [X] Update
59-
* NumberInsight
60-
* [x] Request
61-
* [x] Response
62-
* NumberVerify
63-
* [x] Verify
64-
* [x] Check
65-
* [x] Search
66-
* Search
67-
* [X] Message
68-
* [X] Messages
69-
* [X] Rejections
70-
* Short Code
71-
* [X] 2FA
72-
* [X] Alerts
73-
* [ ] Marketing
74-
* SMS
75-
* [X] Send
76-
* [X] Receipt
77-
* [X] Inbound
78-
* Voice
79-
* [X] Call
80-
* [X] TTS/TTS Prompt
56+
Pull requests are welcome!

0 commit comments

Comments
 (0)