robinhood-csharp 1.1.4

There is a newer version of this package available.
See the version list below for details.
dotnet add package robinhood-csharp --version 1.1.4                
NuGet\Install-Package robinhood-csharp -Version 1.1.4                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="robinhood-csharp" Version="1.1.4" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add robinhood-csharp --version 1.1.4                
#r "nuget: robinhood-csharp, 1.1.4"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install robinhood-csharp as a Cake Addin
#addin nuget:?package=robinhood-csharp&version=1.1.4

// Install robinhood-csharp as a Cake Tool
#tool nuget:?package=robinhood-csharp&version=1.1.4                

Robinhood-csharp

Introduction

.NetCore package to make trades with Unofficial Robinhood API.

See @Sanko's Unofficial Documentation for more information.

Getting Started

  1. Install the package from GitHub packages or NuGet packages
dotnet add package robinhood-csharp
  1. Create Authentication section configuration in your project that call this package

In order to get device token, follow https://stackoverflow.com/a/64775021

"RobinhoodAuthentication": {
    //UserName is email format
    "UserName": "**********", 
    "Password": "**********",
    "ExpirationTime": 734000,
    "Timeout": 5,
    "ChallengeType": "sms",
    "DeviceToken": "**********"
  }
  1. Add the configuration needed for the package in Program.cs

    1. REST API
      builder.Services.ConfigureRb(builder.Configuration.GetSection("RobinhoodAuthentication"))
      
    2. Console APP
      private static IConfiguration _configuration;
      private static IServiceProvider _serviceProvider;
      
      private static IHostBuilder CreateHostBuilder(string[] args)
      {
          return Host.CreateDefaultBuilder(args)
              .ConfigureHostConfiguration(AddConfiguration)
              .ConfigureServices(services =>
              {
                  services.ConfigureRb(_configuration.GetSection("RobinhoodAuthentication"));
                  _serviceProvider = services.BuildServiceProvider();
              });
      }
      
      private static void AddConfiguration(IConfigurationBuilder builder)
      {
          IConfigurationBuilder configurationBuilder =
              builder
                  .SetBasePath(Directory.GetCurrentDirectory())
                  .AddJsonFile("appsettings.json", false, true);
      
          _configuration = configurationBuilder.Build();
      }
      
      
  2. Inject IRobinhood Interface

  3. Call login method

AuthenticationResponse authResponse = await _robinhood.LoginAsync();
  1. Manage challenge case
if (authResponse.IsChallenge)
{
    do
    {
        Challenge challenge = authResponse.Challenge;

        Console.WriteLine($"Input challenge code from {challenge.Type} ({challenge.RemainingAttempts}/{challenge.RemainingRetries}):");
        string code = Console.ReadLine();

        authResponse = await _robinhood.ChallengeOauth2Async(challenge.Id, code);
    } while (authResponse.IsChallenge && authResponse.Challenge.CanRetry);
}
  1. Manage Mfa case
if (authResponse.MfaRequired)
{
    int attempts = 3;
    (HttpStatusCode statusCode, AuthenticationResponse mfaAuth) mfaResponse;
    do
    {
        Console.WriteLine($"Input the MFA code:");
        string code = Console.ReadLine();

        mfaResponse = await _robinhood.MfaOath2Async(code);
        attempts--;
    } while (attempts > 0 && mfaResponse.statusCode != HttpStatusCode.OK);

    authResponse = mfaResponse.mfaAuth;
}

  1. Configure the token expiration date, refresh token and Authorization header by calling ConfigureManager method
_robinhood.ConfigureManager(authResponse);

Samples and tests

  • Check user information example :
User user = await _robinhood.GetUserAsync();
  • Find tests examples for all routes under samples/RbConsoleApp project.
  • Find one test example for REST API under samples/RbWebApi project.
Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.