Code Monkey home page Code Monkey logo

dotnetcore-canvas's Introduction

.NET Core Canvas

An easy-to-use .NET Core compatible API interface for the Canvas Learning Management System (LMS) from Instructure.

Configuration

The easiest way to configure the .NET Core Canvas API is to use the standard dependency injection from Microsoft. This process will be made easier in the future through the use of extensions.

// Add default HTTP client
const string canvasHttpClient = "CanvasHttpClient";

services.AddHttpClient(
    canvasHttpClient,
    static (provider, client) =>
    {
        client.BaseAddress = "https://canvas.instructure.com/api";
        client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "Token");
    });

// Add REST services
services.AddScoped<ICanvasRestApi, CanvasRestApi>();
services.AddHttpClient<IPageEndpoint, PageEndpoint>(canvasHttpClient);
services.AddHttpClient<IFileEndpoint, FileEndpoint>(canvasHttpClient);
services.AddHttpClient<IAccountEndpoint, AccountEndpoint>(canvasHttpClient);

// Add GraphQL services
services.AddHttpClient<ICanvasGraphQlApi, CanvasGraphQlApi>(canvasHttpClient);

Contributors

License

.NET Core Canvas is licensed under the terms of GPL v3. See LICENSE for details.

dotnetcore-canvas's People

Contributors

nealgeilen avatar typiqally avatar

Watchers

 avatar  avatar

dotnetcore-canvas's Issues

Cannot dynamically create an instance of a record

When creating unit test for an application. Data needs to be faked. But not all data is needed to be filled for a test to succeed. The records however required this.

Also, due to the structure of these records, a workaround is needed to work with these records and Faker. Resulting in the following mess

When using the following faker snippet:

        return new Faker<EnrollmentTerm>().RuleFor(static f => f.Id, static f => f.Random.String())
            .RuleFor(static f => f.Name, static f => f.Random.String())
            .RuleFor(static f => f.StartAt, static f => f.Date.Past())
            .RuleFor(static f => f.EndAt, static f => f.Date.Soon(80, f.Date.Past()));

the following error occurs:
Cannot dynamically create an instance of type 'Tpcly.Canvas.Abstractions.GraphQl.EnrollmentTerm'. Reason: No parameterless constructor defined.

However, the faker snippet is preferd for a good clean code base.

Any suggestions?

Support for Other GraphQL structure

For Epsilon we are in need of a new GraphQL structure
The following is needed:

query MyQuery {
  legacyNode(_id: "6", type: User) {
    ... on User {
      id
      email
      _id
      enrollments {
        course {
          name
          term {
            name
            startAt
            endAt
            _id
          }
          submissionsConnection {
            nodes {
              assignment {
                _id
                htmlUrl
                rubric {
                  criteria {
                    outcome {
                      _id
                      masteryPoints
                    }
                  }
                }
              }
              postedAt
              submittedAt
              attempt
              rubricAssessmentsConnection {
                nodes {
                  assessmentRatings {
                    _id
                    criterion {
                      outcome {
                        _id
                        masteryPoints
                      }
                      points
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.