Compare commits

..

No commits in common. "master" and "v5.1.2" have entirely different histories.

14 changed files with 46 additions and 89 deletions

View file

@ -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

View file

@ -1,10 +1,9 @@
[![AppVeyor](https://img.shields.io/appveyor/build/gwinn/api-client-dotnet?logo=appveyor&logoColor=white)](https://ci.appveyor.com/project/gwinn/api-client-dotnet) [![Visual Studio Team services](https://img.shields.io/vso/build/gwinn/f01d2ec1-f511-4908-8c02-d48757d71370/3.svg?style=flat-square)](https://visualstudio.com)
[![NuGet](https://img.shields.io/nuget/v/Retailcrm.SDK.svg?logo=nuget&logoColor=white)](https://www.nuget.org/packages/Retailcrm.SDK/) [![NuGet](https://img.shields.io/nuget/v/Retailcrm.SDK.svg)](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)

View file

@ -5,11 +5,11 @@ using System.Runtime.InteropServices;
// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения, // набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения,
// связанные со сборкой. // связанные со сборкой.
[assembly: AssemblyTitle("Retailcrm.SDK")] [assembly: AssemblyTitle("Retailcrm.SDK")]
[assembly: AssemblyDescription("Multiversion API client for RetailCRM")] [assembly: AssemblyDescription("Multiversion API client for retailCRM")]
[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 2019")]
[assembly: AssemblyTrademark("RetailDriver LLC")] [assembly: AssemblyTrademark("RetailDriver LLC")]
[assembly: AssemblyCulture("")] [assembly: AssemblyCulture("")]

View file

@ -52,9 +52,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 +104,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 +123,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 +142,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)
{ {

View file

@ -2,17 +2,17 @@
<package > <package >
<metadata> <metadata>
<id>Retailcrm.SDK</id> <id>Retailcrm.SDK</id>
<version>5.1.3</version> <version>5.1.2</version>
<title>$title$</title> <title>$title$</title>
<authors>RetailCRM</authors> <authors>retailCRM</authors>
<owners>RetailCRM</owners> <owners>retailCRM</owners>
<license type="expression">MIT</license> <license type="expression">MIT</license>
<projectUrl>https://github.com/retailcrmapi-client-dotnet</projectUrl> <projectUrl>https://retailcrm.ru</projectUrl>
<iconUrl>https://s3-s1.retailcrm.tech/eu-central-1/retailcrm-static/branding/retailcrm/favicon/favicon.ico</iconUrl> <iconUrl>https://help.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>Fix POST request for big data</releaseNotes>
<copyright>Copyright 2017-2020</copyright> <copyright>Copyright 2017-2019</copyright>
<tags>crm ecommerce retailcrm sdk</tags> <tags>crm ecommerce retailcrm sdk</tags>
</metadata> </metadata>
</package> </package>

View file

@ -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)]

View file

@ -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.4.0\build\net45\MSTest.TestAdapter.props" Condition="Exists('..\packages\MSTest.TestAdapter.1.4.0\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.4.0\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.4.0\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" />
@ -95,8 +95,8 @@
<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.4.0\build\net45\MSTest.TestAdapter.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\MSTest.TestAdapter.1.4.0\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.4.0\build\net45\MSTest.TestAdapter.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\MSTest.TestAdapter.1.4.0\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.4.0\build\net45\MSTest.TestAdapter.targets" Condition="Exists('..\packages\MSTest.TestAdapter.1.4.0\build\net45\MSTest.TestAdapter.targets')" />
</Project> </Project>

View file

@ -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));

View file

@ -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");

View file

@ -60,7 +60,6 @@ namespace RetailcrmUnitTest.V4
} }
[TestMethod] [TestMethod]
[Ignore]
public void TelephonyCallEvent() public void TelephonyCallEvent()
{ {
Response response = _client.TelephonyCallEvent( Response response = _client.TelephonyCallEvent(

View file

@ -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")}
} }
); );

View file

@ -21,7 +21,6 @@ namespace RetailcrmUnitTest.V5
} }
[TestMethod] [TestMethod]
[Ignore]
public void TasksCreateUpdateGet() public void TasksCreateUpdateGet()
{ {
DateTime datetime = DateTime.Now; DateTime datetime = DateTime.Now;

View file

@ -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.4.0" targetFramework="net45" />
<package id="MSTest.TestFramework" version="2.1.0" targetFramework="net45" /> <package id="MSTest.TestFramework" version="1.4.0" targetFramework="net45" />
</packages> </packages>

View file

@ -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