Skip to content

Commit

Permalink
Merge pull request #1 from purkayasta/development
Browse files Browse the repository at this point in the history
0.1 PR
  • Loading branch information
purkayasta authored Mar 27, 2023
2 parents 9b276ce + 713dc52 commit ba64bad
Show file tree
Hide file tree
Showing 22 changed files with 436 additions and 170 deletions.
32 changes: 31 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1 +1,31 @@
# The-UtilityVerse
# The UtilityVerse

## Give it a star if you like the project. 👏 🌠 🌟

UtilityVerse is for you to do what you do best.

![Nuget](https://img.shields.io/nuget/v/TheUtilityVerse)
![Nuget](https://img.shields.io/nuget/dt/TheUtilityVerse?style=plastic)
![Nuget](https://img.shields.io/github/repo-size/purkayasta/TheUtilityVerse?style=social)
![Nuget](https://img.shields.io/github/last-commit/purkayasta/TheUtilityVerse?style=flat-square)

[Nuget](https://www.nuget.org/packages/TheUtilityVerse/)

Invoke this library using ```UtilityVerse``` class.

## Extensions
- DateOnly
- DateTime
- Generic
- Integer
- Object
- String


## Helpers
- HttpRequest Creation.
- Manual Retry Mechanism



Made ❤ with C#.
10 changes: 2 additions & 8 deletions UtilityVerse-Soln.sln
Original file line number Diff line number Diff line change
Expand Up @@ -5,18 +5,17 @@ VisualStudioVersion = 17.5.33502.453
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{4CA7E6FA-0DC4-4E66-BD2E-31A6447E6CD7}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "UtilityVerse", "UtilityVerse\UtilityVerse.csproj", "{256CD825-08FD-4531-8095-08833BABE1D3}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "UtilityVerse", "src\UtilityVerse\UtilityVerse.csproj", "{256CD825-08FD-4531-8095-08833BABE1D3}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{3D24A8E3-F6A7-4A0E-B22B-4DF324D85BB6}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UtilityVerse.Test.Console-4.8", "UtilityVerse.Test.Console-4.8\UtilityVerse.Test.Console-4.8.csproj", "{28606EC6-EF13-47F0-B8DC-0C7253C11A1D}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "__solution-items__", "__solution-items__", "{EB18ECF8-4342-4BA6-8901-3753C6F337DF}"
ProjectSection(SolutionItems) = preProject
.gitattributes = .gitattributes
.gitignore = .gitignore
LICENSE.txt = LICENSE.txt
README.md = README.md
assets\utility-verse.png = assets\utility-verse.png
EndProjectSection
EndProject
Global
Expand All @@ -29,17 +28,12 @@ Global
{256CD825-08FD-4531-8095-08833BABE1D3}.Debug|Any CPU.Build.0 = Debug|Any CPU
{256CD825-08FD-4531-8095-08833BABE1D3}.Release|Any CPU.ActiveCfg = Release|Any CPU
{256CD825-08FD-4531-8095-08833BABE1D3}.Release|Any CPU.Build.0 = Release|Any CPU
{28606EC6-EF13-47F0-B8DC-0C7253C11A1D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{28606EC6-EF13-47F0-B8DC-0C7253C11A1D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{28606EC6-EF13-47F0-B8DC-0C7253C11A1D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{28606EC6-EF13-47F0-B8DC-0C7253C11A1D}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{256CD825-08FD-4531-8095-08833BABE1D3} = {4CA7E6FA-0DC4-4E66-BD2E-31A6447E6CD7}
{28606EC6-EF13-47F0-B8DC-0C7253C11A1D} = {3D24A8E3-F6A7-4A0E-B22B-4DF324D85BB6}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {5D3B1F59-B642-4106-91C6-ADDA4D3BD4A5}
Expand Down
6 changes: 0 additions & 6 deletions UtilityVerse.Test.Console-4.8/App.config

This file was deleted.

15 changes: 0 additions & 15 deletions UtilityVerse.Test.Console-4.8/Program.cs

This file was deleted.

36 changes: 0 additions & 36 deletions UtilityVerse.Test.Console-4.8/Properties/AssemblyInfo.cs

This file was deleted.

59 changes: 0 additions & 59 deletions UtilityVerse.Test.Console-4.8/UtilityVerse.Test.Console-4.8.csproj

This file was deleted.

13 changes: 0 additions & 13 deletions UtilityVerse/Extensions/DateOnlyExtensions.cs

This file was deleted.

15 changes: 0 additions & 15 deletions UtilityVerse/Extensions/DateTimeExtensions.cs

This file was deleted.

8 changes: 0 additions & 8 deletions UtilityVerse/Extensions/StringExtensions.cs

This file was deleted.

9 changes: 0 additions & 9 deletions UtilityVerse/UtilityVerse.csproj

This file was deleted.

Binary file added assets/utility-verse.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
16 changes: 16 additions & 0 deletions src/UtilityVerse/Contracts/RetryOption.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
namespace UtilityVerse.Contracts
{
public class RetryOption
{

/// <summary>
/// When it will retry again.
/// </summary>
public TimeSpan? Delay { get; set; } = TimeSpan.FromSeconds(1);

/// <summary>
/// Retry Count. How many time it will try?
/// </summary>
public int? Count { get; set; } = 1;
}
}
21 changes: 21 additions & 0 deletions src/UtilityVerse/Extensions/DateOnlyExtensions.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
namespace UtilityVerse.Extensions
{
public static class DateOnlyExtensions
{
/// <summary>
/// This method will help to determine is the dateonly instance is in between range or not.
/// </summary>
/// <param name="dt"></param>
/// <param name="startDate"></param>
/// <param name="endDate"></param>
/// <returns></returns>
public static bool IsInBetween(this DateOnly? dt, DateOnly? startDate, DateOnly? endDate)
{
ArgumentNullException.ThrowIfNull(dt, nameof(dt));
ArgumentNullException.ThrowIfNull(startDate, nameof(startDate));
ArgumentNullException.ThrowIfNull(endDate, nameof(endDate));

return dt.Value >= startDate && dt < endDate;
}
}
}
48 changes: 48 additions & 0 deletions src/UtilityVerse/Extensions/DateTimeExtensions.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
namespace UtilityVerse.Extensions
{
public static class DateTimeExtensions
{
private static DateTime _defaultDateTime = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);

/// <summary>
/// This method will help you determine if the target datetime is within the given range (start and end)
/// </summary>
/// <param name="dt"></param>
/// <param name="startDateTime"></param>
/// <param name="endDateTime"></param>
/// <returns></returns>
/// <exception cref="ArgumentNullException"></exception>
public static bool IsInBetween(this DateTime? dt, DateTime? startDateTime, DateTime? endDateTime)
{
ArgumentNullException.ThrowIfNull(dt, nameof(dt));
ArgumentNullException.ThrowIfNull(startDateTime, nameof(startDateTime));
ArgumentNullException.ThrowIfNull(endDateTime, nameof(endDateTime));

return dt >= startDateTime && dt < endDateTime;
}

/// <summary>
/// This method will convert datetime object into unix time stamp
/// </summary>
/// <param name="dt"></param>
/// <returns></returns>
public static int ToUnixTimeStamp(this DateTime? dt)
{
if (dt is null) return 0;
return (int)dt.Value.Subtract(_defaultDateTime).TotalSeconds;
}

/// <summary>
/// This method will convert any valid timestamp into a DateTime object
/// </summary>
/// <param name="timeStamp"></param>
/// <returns></returns>
/// <exception cref="ArgumentOutOfRangeException"></exception>
public static DateTime ToDateTime(this int? timeStamp)
{
ArgumentNullException.ThrowIfNull(timeStamp);
if (timeStamp < 1) throw new ArgumentOutOfRangeException(nameof(timeStamp), "invalid value");
return _defaultDateTime.AddSeconds(timeStamp.Value);
}
}
}
32 changes: 32 additions & 0 deletions src/UtilityVerse/Extensions/GenericExtensions.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
using System.Text;
using System.Text.Json;

namespace UtilityVerse.Extensions
{
public static class GenericExtensions
{
/// <summary>
/// This method will convert byte array into desired model.
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="byteArr"></param>
/// <returns></returns>
public static T? To<T>(this byte[]? byteArr)
{
ArgumentNullException.ThrowIfNull(byteArr);
return JsonSerializer.Deserialize<T>(byteArr);
}

/// <summary>
/// This method will convert poco model into byte array.
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="instance"></param>
/// <returns></returns>
public static byte[] ToByteArray<T>(this T? instance)
{
ArgumentNullException.ThrowIfNull(instance);
return Encoding.UTF8.GetBytes(JsonSerializer.Serialize<T>(instance));
}
}
}
22 changes: 22 additions & 0 deletions src/UtilityVerse/Extensions/IntExtensions.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
namespace UtilityVerse.Extensions
{
public static class IntExtensions
{
/// <summary>
/// This method will help to determine that source number is in between or not.
/// </summary>
/// <param name="source"></param>
/// <param name="min"></param>
/// <param name="max"></param>
/// <returns></returns>
public static bool IsInBetween(this int? source, int? min, int? max)
{
ArgumentNullException.ThrowIfNull(source, nameof(source));
ArgumentNullException.ThrowIfNull(min, nameof(min));
ArgumentNullException.ThrowIfNull(max, nameof(max));

return min <= source && max <= source;
}

}
}
Loading

0 comments on commit ba64bad

Please sign in to comment.