mirror of
https://github.com/retailcrm/api-client-dotnet.git
synced 2025-04-08 19:42:09 +00:00
Compare commits
No commits in common. "master" and "v5.1.1" have entirely different histories.
21 changed files with 60 additions and 217 deletions
2
LICENSE
2
LICENSE
|
@ -1,6 +1,6 @@
|
||||||
The MIT License (MIT)
|
The MIT License (MIT)
|
||||||
|
|
||||||
Copyright (c) 2015-2020 RetailDriver LLC
|
Copyright (c) 2015-2018 RetailDriver LLC
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|
25
README.md
25
README.md
|
@ -1,10 +1,9 @@
|
||||||
[](https://ci.appveyor.com/project/gwinn/api-client-dotnet)
|
[](https://www.nuget.org/packages/Retailcrm.SDK/)
|
||||||
[](https://www.nuget.org/packages/Retailcrm.SDK/)
|
|
||||||
|
|
||||||
|
|
||||||
# RetailCRM API C# client
|
# retailCRM API C# client
|
||||||
|
|
||||||
This is C# RetailCRM API client. This library allows to use all available API versions.
|
This is C# retailCRM API client. This library allows to use all available API versions.
|
||||||
|
|
||||||
## Install
|
## Install
|
||||||
|
|
||||||
|
@ -22,11 +21,11 @@ using Retailcrm;
|
||||||
using Retailcrm.Versions.V5;
|
using Retailcrm.Versions.V5;
|
||||||
...
|
...
|
||||||
|
|
||||||
Client api = new Client("https://demo.retailcrm.pro", "T9DMPvuNt7FQJMszHUdG8Fkt6xHsqngH");
|
Client api = new Client("https://demo.retailcrm.ru", "T9DMPvuNt7FQJMszHUdG8Fkt6xHsqngH");
|
||||||
Response response = api.OrdersGet("12345", "externalId");
|
Response response = api.OrdersGet("12345", "externalId");
|
||||||
|
|
||||||
if (response.IsSuccessful()) {
|
if (response.isSuccessful()) {
|
||||||
Debug.WriteLine(response.GetRawResponse());
|
Debug.WriteLine(Response.GetRawResponse());
|
||||||
} else {
|
} else {
|
||||||
Debug.WriteLine($"Ошибка: [Статус HTTP-ответа {response.GetStatusCode().ToString()}]");
|
Debug.WriteLine($"Ошибка: [Статус HTTP-ответа {response.GetStatusCode().ToString()}]");
|
||||||
}
|
}
|
||||||
|
@ -40,7 +39,7 @@ using Retailcrm;
|
||||||
using Retailcrm.Versions.V4;
|
using Retailcrm.Versions.V4;
|
||||||
...
|
...
|
||||||
|
|
||||||
Client api = new Client("https://demo.retailcrm.pro", "T9DMPvuNt7FQJMszHUdG8Fkt6xHsqngH");
|
Client api = new Client("https://demo.retailcrm.ru", "T9DMPvuNt7FQJMszHUdG8Fkt6xHsqngH");
|
||||||
Response response = api.OrdersCreate(new Dictionary<string, object>
|
Response response = api.OrdersCreate(new Dictionary<string, object>
|
||||||
{
|
{
|
||||||
{"externalId", "12345"},
|
{"externalId", "12345"},
|
||||||
|
@ -65,10 +64,14 @@ Response response = api.OrdersCreate(new Dictionary<string, object>
|
||||||
}}
|
}}
|
||||||
});
|
});
|
||||||
|
|
||||||
if (response.IsSuccessful()) {
|
if (response.isSuccessful()) {
|
||||||
Debug.WriteLine(response.GetResponse()["externalId"].ToString());
|
Debug.WriteLine(Response.GetResponse()["externalId"].ToString());
|
||||||
} else {
|
} else {
|
||||||
Debug.WriteLine($"Error: [HTTP status code {response.GetStatusCode().ToString()}]");
|
Debug.WriteLine($"Ошибка: [Статус HTTP-ответа {response.GetStatusCode().ToString()}]");
|
||||||
}
|
}
|
||||||
|
|
||||||
```
|
```
|
||||||
|
### Documentation
|
||||||
|
|
||||||
|
* [English](http://www.retailcrm.pro/docs/Developers/Index)
|
||||||
|
* [Russian](http://www.retailcrm.ru/docs/Developers/Index)
|
||||||
|
|
|
@ -9,7 +9,7 @@ using System.Runtime.InteropServices;
|
||||||
[assembly: AssemblyConfiguration("")]
|
[assembly: AssemblyConfiguration("")]
|
||||||
[assembly: AssemblyCompany("RetailDriver LLC")]
|
[assembly: AssemblyCompany("RetailDriver LLC")]
|
||||||
[assembly: AssemblyProduct("Retailcrm.SDK")]
|
[assembly: AssemblyProduct("Retailcrm.SDK")]
|
||||||
[assembly: AssemblyCopyright("Copyright © RetailDriver LLC 2020")]
|
[assembly: AssemblyCopyright("Copyright © RetailDriver LLC 2017")]
|
||||||
[assembly: AssemblyTrademark("RetailDriver LLC")]
|
[assembly: AssemblyTrademark("RetailDriver LLC")]
|
||||||
[assembly: AssemblyCulture("")]
|
[assembly: AssemblyCulture("")]
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,6 @@
|
||||||
using System.Collections;
|
using System.Collections;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Web;
|
|
||||||
|
|
||||||
namespace Retailcrm
|
namespace Retailcrm
|
||||||
{
|
{
|
||||||
|
@ -38,8 +37,8 @@ namespace Retailcrm
|
||||||
return String.Join(argSeperator,
|
return String.Join(argSeperator,
|
||||||
_keyValuePairs.Select(kvp =>
|
_keyValuePairs.Select(kvp =>
|
||||||
{
|
{
|
||||||
var key = HttpUtility.UrlEncode(kvp.Key);
|
var key = Uri.EscapeDataString(kvp.Key);
|
||||||
var value = HttpUtility.UrlEncode(kvp.Value.ToString());
|
var value = Uri.EscapeDataString(kvp.Value.ToString());
|
||||||
return $"{key}={value}";
|
return $"{key}={value}";
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
@ -52,9 +51,10 @@ namespace Retailcrm
|
||||||
/// <param name="allowObjects"></param>
|
/// <param name="allowObjects"></param>
|
||||||
private void AddEntry(string prefix, object instance, bool allowObjects)
|
private void AddEntry(string prefix, object instance, bool allowObjects)
|
||||||
{
|
{
|
||||||
|
var dictionary = instance as IDictionary;
|
||||||
var collection = instance as ICollection;
|
var collection = instance as ICollection;
|
||||||
|
|
||||||
if (instance is IDictionary dictionary)
|
if (dictionary != null)
|
||||||
{
|
{
|
||||||
Add(prefix, GetDictionaryAdapter(dictionary));
|
Add(prefix, GetDictionaryAdapter(dictionary));
|
||||||
}
|
}
|
||||||
|
@ -103,7 +103,7 @@ namespace Retailcrm
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="data"></param>
|
/// <param name="data"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
private static IEnumerable<Entry> GetObjectAdapter(object data)
|
private IEnumerable<Entry> GetObjectAdapter(object data)
|
||||||
{
|
{
|
||||||
var properties = data.GetType().GetProperties();
|
var properties = data.GetType().GetProperties();
|
||||||
|
|
||||||
|
@ -122,7 +122,7 @@ namespace Retailcrm
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="collection"></param>
|
/// <param name="collection"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
private static IEnumerable<Entry> GetArrayAdapter(ICollection collection)
|
private IEnumerable<Entry> GetArrayAdapter(ICollection collection)
|
||||||
{
|
{
|
||||||
int i = 0;
|
int i = 0;
|
||||||
foreach (var item in collection)
|
foreach (var item in collection)
|
||||||
|
@ -141,7 +141,7 @@ namespace Retailcrm
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="collection"></param>
|
/// <param name="collection"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
private static IEnumerable<Entry> GetDictionaryAdapter(IDictionary collection)
|
private IEnumerable<Entry> GetDictionaryAdapter(IDictionary collection)
|
||||||
{
|
{
|
||||||
foreach (DictionaryEntry item in collection)
|
foreach (DictionaryEntry item in collection)
|
||||||
{
|
{
|
||||||
|
|
|
@ -77,6 +77,7 @@ namespace Retailcrm
|
||||||
}
|
}
|
||||||
|
|
||||||
Exception exception = null;
|
Exception exception = null;
|
||||||
|
|
||||||
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(path);
|
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(path);
|
||||||
request.Method = method;
|
request.Method = method;
|
||||||
|
|
||||||
|
@ -111,6 +112,7 @@ namespace Retailcrm
|
||||||
throw new WebException(exception.ToString(), exception);
|
throw new WebException(exception.ToString(), exception);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ReSharper disable once AssignNullToNotNullAttribute
|
||||||
StreamReader reader = new StreamReader(response.GetResponseStream());
|
StreamReader reader = new StreamReader(response.GetResponseStream());
|
||||||
string responseBody = reader.ReadToEnd();
|
string responseBody = reader.ReadToEnd();
|
||||||
int statusCode = (int)response.StatusCode;
|
int statusCode = (int)response.StatusCode;
|
||||||
|
|
|
@ -34,7 +34,6 @@
|
||||||
<Reference Include="System" />
|
<Reference Include="System" />
|
||||||
<Reference Include="System.Core" />
|
<Reference Include="System.Core" />
|
||||||
<Reference Include="System.Runtime.Serialization" />
|
<Reference Include="System.Runtime.Serialization" />
|
||||||
<Reference Include="System.Web" />
|
|
||||||
<Reference Include="System.Web.Extensions" />
|
<Reference Include="System.Web.Extensions" />
|
||||||
<Reference Include="System.Data" />
|
<Reference Include="System.Data" />
|
||||||
<Reference Include="System.Xml" />
|
<Reference Include="System.Xml" />
|
||||||
|
|
|
@ -2,17 +2,17 @@
|
||||||
<package >
|
<package >
|
||||||
<metadata>
|
<metadata>
|
||||||
<id>Retailcrm.SDK</id>
|
<id>Retailcrm.SDK</id>
|
||||||
<version>5.1.3</version>
|
<version>5.1.1</version>
|
||||||
<title>$title$</title>
|
<title>$title$</title>
|
||||||
<authors>RetailCRM</authors>
|
<authors>Retailcrm</authors>
|
||||||
<owners>RetailCRM</owners>
|
<owners>Retailcrm</owners>
|
||||||
<license type="expression">MIT</license>
|
<licenseUrl>https://opensource.org/licenses/MIT</licenseUrl>
|
||||||
<projectUrl>https://github.com/retailcrmapi-client-dotnet</projectUrl>
|
<projectUrl>http://retailcrm.ru</projectUrl>
|
||||||
<iconUrl>https://s3-s1.retailcrm.tech/eu-central-1/retailcrm-static/branding/retailcrm/favicon/favicon.ico</iconUrl>
|
<iconUrl>http://www.retailcrm.ru/favicon.ico</iconUrl>
|
||||||
<requireLicenseAcceptance>false</requireLicenseAcceptance>
|
<requireLicenseAcceptance>false</requireLicenseAcceptance>
|
||||||
<description>Multiversion API client for RetailCRM</description>
|
<description>Multiversion API client for RetailCRM</description>
|
||||||
<releaseNotes>Rebranding</releaseNotes>
|
<releaseNotes>Update tests, setup auto builds</releaseNotes>
|
||||||
<copyright>Copyright 2017-2020</copyright>
|
<copyright>Copyright 2017-2018</copyright>
|
||||||
<tags>crm ecommerce retailcrm sdk</tags>
|
<tags>crm ecommerce retailcrm sdk</tags>
|
||||||
</metadata>
|
</metadata>
|
||||||
</package>
|
</package>
|
|
@ -154,10 +154,6 @@ namespace Retailcrm.Versions.V5
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Couriers list
|
|
||||||
/// </summary>
|
|
||||||
/// <returns></returns>
|
|
||||||
public Response Couriers()
|
public Response Couriers()
|
||||||
{
|
{
|
||||||
return Request.MakeRequest(
|
return Request.MakeRequest(
|
||||||
|
@ -166,11 +162,6 @@ namespace Retailcrm.Versions.V5
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Create a courier
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="courier"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public Response CouriersCreate(Dictionary<string, object> courier)
|
public Response CouriersCreate(Dictionary<string, object> courier)
|
||||||
{
|
{
|
||||||
return Request.MakeRequest(
|
return Request.MakeRequest(
|
||||||
|
@ -183,11 +174,6 @@ namespace Retailcrm.Versions.V5
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Edit a courier
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="courier"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public Response CouriersEdit(Dictionary<string, object> courier)
|
public Response CouriersEdit(Dictionary<string, object> courier)
|
||||||
{
|
{
|
||||||
if (!courier.ContainsKey("id"))
|
if (!courier.ContainsKey("id"))
|
||||||
|
|
|
@ -1,4 +1,6 @@
|
||||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
using System.Collections.Specialized;
|
||||||
|
using System.Configuration;
|
||||||
|
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||||
using Retailcrm;
|
using Retailcrm;
|
||||||
|
|
||||||
namespace RetailcrmUnitTest
|
namespace RetailcrmUnitTest
|
||||||
|
|
|
@ -2,12 +2,12 @@ using System.Reflection;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
[assembly: AssemblyTitle("RetailcrmUnitTest")]
|
[assembly: AssemblyTitle("RetailcrmUnitTest")]
|
||||||
[assembly: AssemblyDescription("Tests for RetailCRM SDK")]
|
[assembly: AssemblyDescription("")]
|
||||||
[assembly: AssemblyConfiguration("")]
|
[assembly: AssemblyConfiguration("")]
|
||||||
[assembly: AssemblyCompany("RetailDriver LLC")]
|
[assembly: AssemblyCompany("")]
|
||||||
[assembly: AssemblyProduct("RetailcrmUnitTest")]
|
[assembly: AssemblyProduct("RetailcrmUnitTest")]
|
||||||
[assembly: AssemblyCopyright("Copyright © RetailDriver LLC 2020")]
|
[assembly: AssemblyCopyright("Copyright © 2017")]
|
||||||
[assembly: AssemblyTrademark("RetailDriver LLC")]
|
[assembly: AssemblyTrademark("")]
|
||||||
[assembly: AssemblyCulture("")]
|
[assembly: AssemblyCulture("")]
|
||||||
|
|
||||||
[assembly: ComVisible(false)]
|
[assembly: ComVisible(false)]
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
<Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
<Import Project="..\packages\MSTest.TestAdapter.2.1.0\build\net45\MSTest.TestAdapter.props" Condition="Exists('..\packages\MSTest.TestAdapter.2.1.0\build\net45\MSTest.TestAdapter.props')" />
|
<Import Project="..\packages\MSTest.TestAdapter.1.1.18\build\net45\MSTest.TestAdapter.props" Condition="Exists('..\packages\MSTest.TestAdapter.1.1.18\build\net45\MSTest.TestAdapter.props')" />
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||||
|
@ -39,10 +39,10 @@
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Reference Include="Microsoft.VisualStudio.TestPlatform.TestFramework, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.VisualStudio.TestPlatform.TestFramework, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\MSTest.TestFramework.2.1.0\lib\net45\Microsoft.VisualStudio.TestPlatform.TestFramework.dll</HintPath>
|
<HintPath>..\packages\MSTest.TestFramework.1.1.18\lib\net45\Microsoft.VisualStudio.TestPlatform.TestFramework.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\MSTest.TestFramework.2.1.0\lib\net45\Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.dll</HintPath>
|
<HintPath>..\packages\MSTest.TestFramework.1.1.18\lib\net45\Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System" />
|
<Reference Include="System" />
|
||||||
<Reference Include="System.Configuration" />
|
<Reference Include="System.Configuration" />
|
||||||
|
@ -80,23 +80,25 @@
|
||||||
<Compile Include="V5\ReferencesTest.cs" />
|
<Compile Include="V5\ReferencesTest.cs" />
|
||||||
<Compile Include="V5\SegmentsTest.cs" />
|
<Compile Include="V5\SegmentsTest.cs" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="packages.config">
|
||||||
|
<SubType>Designer</SubType>
|
||||||
|
</None>
|
||||||
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\Retailcrm\Retailcrm.csproj">
|
<ProjectReference Include="..\Retailcrm\Retailcrm.csproj">
|
||||||
<Project>{9c378ef4-9f9b-4214-a9aa-1fc3c44edb41}</Project>
|
<Project>{9c378ef4-9f9b-4214-a9aa-1fc3c44edb41}</Project>
|
||||||
<Name>Retailcrm</Name>
|
<Name>Retailcrm</Name>
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
|
||||||
<None Include="packages.config" />
|
|
||||||
</ItemGroup>
|
|
||||||
<Import Project="$(VSToolsPath)\TeamTest\Microsoft.TestTools.targets" Condition="Exists('$(VSToolsPath)\TeamTest\Microsoft.TestTools.targets')" />
|
<Import Project="$(VSToolsPath)\TeamTest\Microsoft.TestTools.targets" Condition="Exists('$(VSToolsPath)\TeamTest\Microsoft.TestTools.targets')" />
|
||||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<ErrorText>Данный проект ссылается на пакеты NuGet, отсутствующие на этом компьютере. Используйте восстановление пакетов NuGet, чтобы скачать их. Дополнительную информацию см. по адресу: http://go.microsoft.com/fwlink/?LinkID=322105. Отсутствует следующий файл: {0}.</ErrorText>
|
<ErrorText>Данный проект ссылается на пакеты NuGet, отсутствующие на этом компьютере. Используйте восстановление пакетов NuGet, чтобы скачать их. Дополнительную информацию см. по адресу: http://go.microsoft.com/fwlink/?LinkID=322105. Отсутствует следующий файл: {0}.</ErrorText>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Error Condition="!Exists('..\packages\MSTest.TestAdapter.2.1.0\build\net45\MSTest.TestAdapter.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\MSTest.TestAdapter.2.1.0\build\net45\MSTest.TestAdapter.props'))" />
|
<Error Condition="!Exists('..\packages\MSTest.TestAdapter.1.1.18\build\net45\MSTest.TestAdapter.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\MSTest.TestAdapter.1.1.18\build\net45\MSTest.TestAdapter.props'))" />
|
||||||
<Error Condition="!Exists('..\packages\MSTest.TestAdapter.2.1.0\build\net45\MSTest.TestAdapter.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\MSTest.TestAdapter.2.1.0\build\net45\MSTest.TestAdapter.targets'))" />
|
<Error Condition="!Exists('..\packages\MSTest.TestAdapter.1.1.18\build\net45\MSTest.TestAdapter.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\MSTest.TestAdapter.1.1.18\build\net45\MSTest.TestAdapter.targets'))" />
|
||||||
</Target>
|
</Target>
|
||||||
<Import Project="..\packages\MSTest.TestAdapter.2.1.0\build\net45\MSTest.TestAdapter.targets" Condition="Exists('..\packages\MSTest.TestAdapter.2.1.0\build\net45\MSTest.TestAdapter.targets')" />
|
<Import Project="..\packages\MSTest.TestAdapter.1.1.18\build\net45\MSTest.TestAdapter.targets" Condition="Exists('..\packages\MSTest.TestAdapter.1.1.18\build\net45\MSTest.TestAdapter.targets')" />
|
||||||
</Project>
|
</Project>
|
|
@ -1,5 +1,7 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Collections.Specialized;
|
||||||
|
using System.Configuration;
|
||||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||||
using Retailcrm;
|
using Retailcrm;
|
||||||
using Retailcrm.Versions.V3;
|
using Retailcrm.Versions.V3;
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Diagnostics;
|
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||||
|
@ -23,7 +22,6 @@ namespace RetailcrmUnitTest.V3
|
||||||
}
|
}
|
||||||
|
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
[Ignore]
|
|
||||||
public void PacksCreateUpdateReadDelete()
|
public void PacksCreateUpdateReadDelete()
|
||||||
{
|
{
|
||||||
string uid = Guid.NewGuid().ToString().Replace("-", string.Empty).Substring(0, 12);
|
string uid = Guid.NewGuid().ToString().Replace("-", string.Empty).Substring(0, 12);
|
||||||
|
@ -71,7 +69,8 @@ namespace RetailcrmUnitTest.V3
|
||||||
|
|
||||||
foreach (Dictionary<string, object> s in arr.OfType<Dictionary<string, object>>())
|
foreach (Dictionary<string, object> s in arr.OfType<Dictionary<string, object>>())
|
||||||
{
|
{
|
||||||
int.TryParse(s["id"].ToString(), NumberStyles.Any, null, out int itemId);
|
int itemId;
|
||||||
|
int.TryParse(s["id"].ToString(), NumberStyles.Any, null, out itemId);
|
||||||
id[0] = itemId;
|
id[0] = itemId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -85,7 +84,6 @@ namespace RetailcrmUnitTest.V3
|
||||||
|
|
||||||
Response packsCreateResponse = _client.PacksCreate(pack);
|
Response packsCreateResponse = _client.PacksCreate(pack);
|
||||||
|
|
||||||
Debug.WriteLine(packsCreateResponse.GetRawResponse());
|
|
||||||
Assert.IsTrue(packsCreateResponse.IsSuccessfull());
|
Assert.IsTrue(packsCreateResponse.IsSuccessfull());
|
||||||
Assert.IsTrue(packsCreateResponse.GetStatusCode() == 201);
|
Assert.IsTrue(packsCreateResponse.GetStatusCode() == 201);
|
||||||
Assert.IsInstanceOfType(packsCreateResponse, typeof(Response));
|
Assert.IsInstanceOfType(packsCreateResponse, typeof(Response));
|
||||||
|
|
|
@ -20,7 +20,6 @@ namespace RetailcrmUnitTest.V3
|
||||||
}
|
}
|
||||||
|
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
[Ignore]
|
|
||||||
public void TelephonyManagerGet()
|
public void TelephonyManagerGet()
|
||||||
{
|
{
|
||||||
Response response = _client.TelephonyManagerGet("+79999999999");
|
Response response = _client.TelephonyManagerGet("+79999999999");
|
||||||
|
|
|
@ -37,113 +37,5 @@ namespace RetailcrmUnitTest.V4
|
||||||
Assert.IsInstanceOfType(response, typeof(Response));
|
Assert.IsInstanceOfType(response, typeof(Response));
|
||||||
Assert.IsTrue(response.GetResponse().ContainsKey("history"));
|
Assert.IsTrue(response.GetResponse().ContainsKey("history"));
|
||||||
}
|
}
|
||||||
|
|
||||||
[TestMethod]
|
|
||||||
public void BigOrderCreateUpdate()
|
|
||||||
{
|
|
||||||
long epochTicks = new DateTime(1970, 1, 1).Ticks;
|
|
||||||
long unixTime = ((DateTime.UtcNow.Ticks - epochTicks) / TimeSpan.TicksPerSecond);
|
|
||||||
|
|
||||||
List<Dictionary<string, object>> items = new List<Dictionary<string, object>>();
|
|
||||||
Dictionary<string, object> properties = new Dictionary<string, object>();
|
|
||||||
|
|
||||||
for (int j = 0; j < 10; j++)
|
|
||||||
{
|
|
||||||
properties.Add(
|
|
||||||
$"property_{j}",
|
|
||||||
new Dictionary<string, object> {
|
|
||||||
{ "name", $"Property_{j}" },
|
|
||||||
{ "code", $"property_{j}" },
|
|
||||||
{ "value", $"{Guid.NewGuid().ToString()}" },
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
for (int i = 0; i < 100; i++) {
|
|
||||||
Dictionary<string, object> item = new Dictionary<string, object> {
|
|
||||||
{ "initialPrice", i + 100 },
|
|
||||||
{ "purchasePrice", i + 90 },
|
|
||||||
{ "productName", $"Product_{i}" },
|
|
||||||
{ "quantity", 2 },
|
|
||||||
{
|
|
||||||
"offer",
|
|
||||||
new Dictionary<string, object> {
|
|
||||||
{ "name", $"Product_{i}" },
|
|
||||||
{ "xmlId", $"{Guid.NewGuid().ToString()}" }
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{ "properties", properties }
|
|
||||||
};
|
|
||||||
|
|
||||||
items.Add(item);
|
|
||||||
}
|
|
||||||
|
|
||||||
Dictionary<string, object> order = new Dictionary<string, object>
|
|
||||||
{
|
|
||||||
{"number", unixTime},
|
|
||||||
{"createdAt", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")},
|
|
||||||
{"lastName", "Doe"},
|
|
||||||
{"firstName", "John"},
|
|
||||||
{"email", "john@example.com"},
|
|
||||||
{"phone", "+79999999999"},
|
|
||||||
{"items", items},
|
|
||||||
{
|
|
||||||
"delivery",
|
|
||||||
new Dictionary<string, object> {
|
|
||||||
{ "code", "self-delivery" },
|
|
||||||
{ "cost", "300" },
|
|
||||||
{
|
|
||||||
"address", new Dictionary<string, object> {
|
|
||||||
{ "city", "Москва" },
|
|
||||||
{ "street", "Ярославская" },
|
|
||||||
{ "building", "10" },
|
|
||||||
{ "flat", "2" },
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
Response createResponse = _client.OrdersCreate(order);
|
|
||||||
|
|
||||||
Assert.IsTrue(createResponse.IsSuccessfull());
|
|
||||||
Assert.IsInstanceOfType(createResponse, typeof(Response));
|
|
||||||
Assert.AreEqual(createResponse.GetStatusCode(), 201);
|
|
||||||
Assert.IsTrue(createResponse.GetResponse().ContainsKey("id"));
|
|
||||||
|
|
||||||
List<Dictionary<string, object>> newItems = new List<Dictionary<string, object>>();
|
|
||||||
|
|
||||||
for (int i = 0; i < 120; i++)
|
|
||||||
{
|
|
||||||
Dictionary<string, object> item = new Dictionary<string, object> {
|
|
||||||
{ "initialPrice", i + 100 },
|
|
||||||
{ "purchasePrice", i + 90 },
|
|
||||||
{ "productName", $"Product_{i}" },
|
|
||||||
{ "quantity", 2 },
|
|
||||||
{
|
|
||||||
"offer",
|
|
||||||
new Dictionary<string, object> {
|
|
||||||
{ "name", $"Product_{i}" },
|
|
||||||
{ "xmlId", $"{Guid.NewGuid().ToString()}" }
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{ "properties", properties }
|
|
||||||
};
|
|
||||||
|
|
||||||
newItems.Add(item);
|
|
||||||
}
|
|
||||||
|
|
||||||
Response updateResponse = _client.OrdersUpdate(
|
|
||||||
new Dictionary<string, object> {
|
|
||||||
{ "id", createResponse.GetResponse()["id"].ToString()},
|
|
||||||
{ "items", newItems }
|
|
||||||
},
|
|
||||||
"id"
|
|
||||||
);
|
|
||||||
|
|
||||||
Assert.IsTrue(updateResponse.IsSuccessfull());
|
|
||||||
Assert.IsInstanceOfType(updateResponse, typeof(Response));
|
|
||||||
Assert.AreEqual(updateResponse.GetStatusCode(), 200);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
using System;
|
using System;
|
||||||
|
using System.Collections.Specialized;
|
||||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||||
using Retailcrm;
|
using Retailcrm;
|
||||||
using Retailcrm.Versions.V4;
|
using Retailcrm.Versions.V4;
|
||||||
|
@ -9,6 +10,7 @@ namespace RetailcrmUnitTest.V4
|
||||||
public class StoresTest
|
public class StoresTest
|
||||||
{
|
{
|
||||||
private readonly Client _client;
|
private readonly Client _client;
|
||||||
|
private readonly NameValueCollection _appSettings;
|
||||||
|
|
||||||
public StoresTest()
|
public StoresTest()
|
||||||
{
|
{
|
||||||
|
|
|
@ -60,7 +60,6 @@ namespace RetailcrmUnitTest.V4
|
||||||
}
|
}
|
||||||
|
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
[Ignore]
|
|
||||||
public void TelephonyCallEvent()
|
public void TelephonyCallEvent()
|
||||||
{
|
{
|
||||||
Response response = _client.TelephonyCallEvent(
|
Response response = _client.TelephonyCallEvent(
|
||||||
|
|
|
@ -25,29 +25,11 @@ namespace RetailcrmUnitTest.V5
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void NotesCreateDelete()
|
public void NotesCreateDelete()
|
||||||
{
|
{
|
||||||
Dictionary<string, object> customer = new Dictionary<string, object>
|
|
||||||
{
|
|
||||||
{"externalId", Guid.NewGuid().ToString().Replace("-", string.Empty).Substring(0, 12)},
|
|
||||||
{"lastName", "Took"},
|
|
||||||
{"firstName", "Peregrin"},
|
|
||||||
{"email", "took@example.com"},
|
|
||||||
{"phone", "+78888888989"}
|
|
||||||
};
|
|
||||||
|
|
||||||
Response createResponse = _client.CustomersCreate(customer);
|
|
||||||
|
|
||||||
Assert.IsTrue(createResponse.IsSuccessfull());
|
|
||||||
Assert.IsInstanceOfType(createResponse, typeof(Response));
|
|
||||||
Assert.IsTrue(createResponse.GetStatusCode() == 201);
|
|
||||||
Assert.IsTrue(createResponse.GetResponse().ContainsKey("id"));
|
|
||||||
|
|
||||||
string id = createResponse.GetResponse()["id"].ToString();
|
|
||||||
|
|
||||||
Response responseFiltered = _client.NotesCreate(
|
Response responseFiltered = _client.NotesCreate(
|
||||||
new Dictionary<string, object>
|
new Dictionary<string, object>
|
||||||
{
|
{
|
||||||
{ "text", "test task" },
|
{ "text", "test task" },
|
||||||
{ "customer", new Dictionary<string, object> { { "id", id } }},
|
{ "customer", new Dictionary<string, object> { { "id", "4717" } }},
|
||||||
{ "managerId", Environment.GetEnvironmentVariable("RETAILCRM_USER")}
|
{ "managerId", Environment.GetEnvironmentVariable("RETAILCRM_USER")}
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
|
@ -21,7 +21,6 @@ namespace RetailcrmUnitTest.V5
|
||||||
}
|
}
|
||||||
|
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
[Ignore]
|
|
||||||
public void TasksCreateUpdateGet()
|
public void TasksCreateUpdateGet()
|
||||||
{
|
{
|
||||||
DateTime datetime = DateTime.Now;
|
DateTime datetime = DateTime.Now;
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<packages>
|
<packages>
|
||||||
<package id="MSTest.TestAdapter" version="2.1.0" targetFramework="net45" />
|
<package id="MSTest.TestAdapter" version="1.1.18" targetFramework="net45" />
|
||||||
<package id="MSTest.TestFramework" version="2.1.0" targetFramework="net45" />
|
<package id="MSTest.TestFramework" version="1.1.18" targetFramework="net45" />
|
||||||
</packages>
|
</packages>
|
24
appveyor.yml
24
appveyor.yml
|
@ -1,24 +0,0 @@
|
||||||
version: 5.1.{build}
|
|
||||||
pull_requests:
|
|
||||||
do_not_increment_build_number: true
|
|
||||||
branches:
|
|
||||||
only:
|
|
||||||
- master
|
|
||||||
skip_tags: true
|
|
||||||
image: Visual Studio 2019
|
|
||||||
configuration: Release
|
|
||||||
environment:
|
|
||||||
RETAILCRM_URL:
|
|
||||||
secure: +XvDVl4qowEEYYTdURDytjGjtBPeyehSzCqQs4XcavM=
|
|
||||||
RETAILCRM_KEY:
|
|
||||||
secure: xRC/iy3F1W4PCS1V1eiruJv4Sdj4A9Ln2s36fp0MtgiiIdGDHeK+Qmlm+eHAZgjh
|
|
||||||
RETAILCRM_SITE:
|
|
||||||
secure: 2w6OVirZRJLlkzME0kpXzQ==
|
|
||||||
RETAILCRM_STORE:
|
|
||||||
secure: UCnYSIgosQyIqtVwDrVv4w==
|
|
||||||
RETAILCRM_USER:
|
|
||||||
secure: tClF7XYbv+nGE5WpZIF7ng==
|
|
||||||
before_build:
|
|
||||||
- ps: nuget restore
|
|
||||||
build:
|
|
||||||
verbosity: minimal
|
|
Loading…
Add table
Reference in a new issue