Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
53 changes: 53 additions & 0 deletions KiteConnect/CandleJsonConverter.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
using System;
using System.Globalization;
using System.Text.Json;
using System.Text.Json.Serialization;

namespace KiteConnect
{
internal class CandleJsonConverter : JsonConverter<Candle>
{
public override Candle Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
{
if (reader.TokenType != JsonTokenType.StartArray)
throw new JsonException("Expected StartArray token.");

var candle = new Candle();

reader.Read();
candle.TimeStamp = DateTime.ParseExact(reader.GetString(), "yyyy-MM-ddTHH:mm:sszzz", CultureInfo.InvariantCulture);

reader.Read();
candle.Open = reader.GetDecimal();

reader.Read();
candle.High = reader.GetDecimal();

reader.Read();
candle.Low = reader.GetDecimal();

reader.Read();
candle.Close = reader.GetDecimal();

reader.Read();
candle.Volume = reader.GetUInt64();

reader.Read();
if (reader.TokenType == JsonTokenType.EndArray)
return candle;
else
candle.OI = reader.GetUInt64();

reader.Read();
if (reader.TokenType != JsonTokenType.EndArray)
throw new JsonException("Expected EndArray token.");

return candle;
}

public override void Write(Utf8JsonWriter writer, Candle value, JsonSerializerOptions options)
{
throw new NotImplementedException();
}
}
}
26 changes: 26 additions & 0 deletions KiteConnect/CustomDateTimeJsonConverter.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
using System;
using System.Globalization;
using System.Text.Json;
using System.Text.Json.Serialization;

namespace KiteConnect
{
internal class CustomDateTimeJsonConverter : JsonConverter<DateTime>
{
public override DateTime Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
{
var value = reader.GetString();
if (value.Length == 10)
return DateTime.ParseExact(value, "yyyy-MM-dd", CultureInfo.InvariantCulture);
else if (value.Length == 16)
return DateTime.ParseExact(value, "yyyy-MM-dd HH:mm", CultureInfo.InvariantCulture);
else
return DateTime.ParseExact(value, "yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture);
}

public override void Write(Utf8JsonWriter writer, DateTime value, JsonSerializerOptions options)
{
throw new NotImplementedException();
}
}
}
1,249 changes: 604 additions & 645 deletions KiteConnect/Kite.cs

Large diffs are not rendered by default.

17 changes: 13 additions & 4 deletions KiteConnect/KiteConnect.csproj
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<TargetFramework>net8.0</TargetFramework>
<Authors>Ajin Asokan</Authors>
<Company>Zerodha Technology Pvt. Ltd.</Company>
<PackageId>Tech.Zerodha.KiteConnect</PackageId>
Expand All @@ -22,14 +22,23 @@
<GenerateDocumentationFile>true</GenerateDocumentationFile>
</PropertyGroup>

<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<WarningsAsErrors>$(WarningsAsErrors);NU1605;CS4014</WarningsAsErrors>
</PropertyGroup>

<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
<WarningsAsErrors>$(WarningsAsErrors);NU1605;CS4014</WarningsAsErrors>
</PropertyGroup>

<ItemGroup>
<None Include="..\icon.png" Pack="true" PackagePath="\"/>
<None Include="..\icon.png" Pack="true" PackagePath="\" />
</ItemGroup>

<ItemGroup>
<PackageReference Include="CsvTextFieldParser" Version="1.2.1" />
<PackageReference Include="CsvHelper" Version="33.1.0" />
<PackageReference Include="CsvTextFieldParser" Version="1.2.2" />
<PackageReference Include="Microsoft.CSharp" Version="4.7.0" />
<PackageReference Include="System.Text.Json" Version="4.7.1" />
<PackageReference Include="System.Text.Json" Version="10.0.1" />
</ItemGroup>

</Project>
76 changes: 76 additions & 0 deletions KiteConnect/ParametersBuilder.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
using System;
using System.Collections.Generic;

namespace KiteConnect
{
internal readonly struct ParametersBuilder
{
private readonly List<KeyValuePair<string, string>> _parameters;
public ParametersBuilder()
{
_parameters = new List<KeyValuePair<string, string>>();
}

public ParametersBuilder Add(string key, string value)
{
_parameters.Add(new KeyValuePair<string, string>(key, value));
return this;
}

public ParametersBuilder Add(string key, bool value)
{
_parameters.Add(new KeyValuePair<string, string>(key, value.ToString()));
return this;
}

public ParametersBuilder AddAsO1(string key, bool value)
{
_parameters.Add(new KeyValuePair<string, string>(key, value ? "1" : "0"));
return this;
}

public ParametersBuilder Add(string key, DateTime value)
{
_parameters.Add(new KeyValuePair<string, string>(key, value.ToString("yyyy-MM-dd HH:mm:ss")));
return this;
}

public ParametersBuilder AddIfNotNull(string key, string value)
{
if (value != null)
_parameters.Add(new KeyValuePair<string, string>(key, value));
return this;
}

public ParametersBuilder Add(string key, int value)
{
_parameters.Add(new KeyValuePair<string, string>(key, value.ToString()));
return this;
}

public ParametersBuilder Add(string key, decimal value)
{
_parameters.Add(new KeyValuePair<string, string>(key, value.ToString()));
return this;
}

public ParametersBuilder AddIfNotNull(string key, int? value)
{
if (value != null)
_parameters.Add(new KeyValuePair<string, string>(key, value.ToString()));
return this;
}

public ParametersBuilder AddIfNotNull(string key, decimal? value)
{
if (value != null)
_parameters.Add(new KeyValuePair<string, string>(key, value.ToString()));
return this;
}

public IReadOnlyCollection<KeyValuePair<string, string>> Build()
{
return _parameters;
}
}
}
13 changes: 0 additions & 13 deletions KiteConnect/Routes.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,6 @@ public static class Routes
{
public const string Parameters = "/parameters";

public static class API
{
public const string Token = "/session/token";
public const string Refresh = "/session/refresh_token";
}

public static class Instrument
{
public const string Margins = "/margins/{segment}";
Expand All @@ -33,13 +27,6 @@ public static class Basket
public const string Margins = "/margins/basket";
}

public static class User
{
public const string Profile = "/user/profile";
public const string Margins = "/user/margins";
public const string SegmentMargins = "/user/margins/{segment}";
}

public static class GTT
{
public const string AllGTTs = "/gtt/triggers";
Expand Down
Loading