Reverse-engineered API + SDK for the Amizone Student Portal.

go-amizone

Tests Coverage Status Go Report Card Go Reference Issues License

go-amizone is a simple and robust Go library and API server for the Amizone student portal. This library is intended to be used as a self-hosted Go API or as an SDK in your Go application.

Inspiration

Amizone is the student portal for Amity University. It's indispensable for students to access their grades, attendance, class schedule and other information. The catch: it's buggy, slow and goes down all the time! Students have made a slew of alternative apps and tools to access the portal over the years -- many of them mobile apps, but also arguably better approaches like the excellent monday-api bot by @0xSaurabh (my initial inspiration!)

But why go-amizone? Because I wanted a simple, lean and robust API client for Amizone to develop an application of my own and no existing solution seemed good enough. With this, I set out to develop something everyone (including me) could use to build their own projects around the portal. While go-amizone is written in Go (duh), it has a WIP OpenAPI documented API server which enables autogenerated SDKs for any language under the sun!

Completeness

go-amizone is far from complete. While its completely possible to use in applications today, there are no guarantees yet for a stable API, which will come around with the 1.0 stable release. In the coming weeks I'll be adding more features to drive the library closer to covering a more complete range of the data and features the Amizone portal exposes.

Installation

The library can be installed either as an SDK to use in your own Go project or as a self-hosted API with the server binary. With the latter, you would be able to use Swagger to generate SDKs for other languages in the near future.

SDK

Install the library using go get github.com/ditsuke/amizone-go. Usage is well documented go docs, and docs are due to be published soon.

API Server

The API Server offers a RESTful API through a single Go binary. It is intended to be used self-hosted on a VPS or a PaaS like Heroku, but I'll have a central deployment up soon so everyone can try out! To try locally, run:

go install github.com/ditsuke/amizone-go/cmd/amizone-api-server@latest # installs the binary
amizone-api-server # runs the server

A docker image will be made available soon to make deployments easier.

Contributing

Contributions to the library are welcome! If you have a bug or feature request, please open an issue on the GitHub repo. Code contributions should be a great way to get started with Go development and learn about the language, reverse-engineering, and other cool stuff. Another way to get involved would be to just use the library in your own project! If you're working or planning to work on one, I would love to hear from you!

Owner
Tushar
GSoC'22 Mentor @joomla | LFX Mentee @Kubernetes-SIGS
Tushar
Comments
  • feat(server): gRPC + REST API with protobuf + OpenAPI schemas

    feat(server): gRPC + REST API with protobuf + OpenAPI schemas

    • refactor(sdk): Improve model naming and semantics
    • feat(server): Add protobuf schema and service
    • chore(server): Add generated stubs + OpenAPI schema
    • feat(server): Implement gRPC + HTTP server
  • ci: Add fly.io deploy config

    ci: Add fly.io deploy config

    What

    Adds the deployment configuration for the prod deployment on fly.io plus the prod dockerfile. The deployment has been up and reliable for months, should be replicable for others looking to host their own.

  • fix: Semester wise course getter

    fix: Semester wise course getter

    Why

    GetCourses() has been broken because it queries an invalid endpoint and the parses it shares with GetCurrentCourses didn't work for the more limited markup returned by the semester-wise endpoint. This PR fixes these issues and adds test cases to match.

  • refactor(api-server): Decouple the server and the server command

    refactor(api-server): Decouple the server and the server command

    Context

    With this PR, the server and the command are decoupled. The command now rests in the conventional /cmd/<command-name> location. The new server architecture opens up the possibility of better testing, too, with the use of the new amizone.ClientFactoryInterface for the authentication handler layer.

  • ci(tests): Add GitHub actions for tests and coverage

    ci(tests): Add GitHub actions for tests and coverage

    Context

    This PR adds a GitHub workflow for running unit tests, integraton tests and generating a test coverage report that's sent to https://coveralls.io.

  • refactor: Promote amizone lib to top-level package [1]

    refactor: Promote amizone lib to top-level package [1]

    Context

    Amizone should be promoted to a top-level package so its not coupled with whatever is build on top. I feel the module can be useful enough on it own.

  • feat: Wifi macs

    feat: Wifi macs

    What

    • [x] SDK: Get wifi registration info
    • [x] SDK: Register a new mac address
    • [x] SDK: Remove registered mac address
    • [ ] API: Get info
    • [ ] API: Register mac
    • [ ] API: Remove registered mac
    • [ ] Tests
Nextengine-sdk-go: the NextEngine SDK for the Go programming language

NextEngine SDK for Go nextengine-sdk-go is the NextEngine SDK for the Go programming language. Getting Started Install go get github.com/takaaki-s/nex

Dec 7, 2021
Commercetools-go-sdk is fork of original commercetools-go-sdk

commercetools-go-sdk The Commercetools Go SDK is automatically generated based on the official API specifications of Commercetools. It should therefor

Dec 13, 2021
Sdk-go - Go version of the Synapse SDK

synapsesdk-go Synapse Protocol's Go SDK. Currently in super duper alpha, do not

Jan 7, 2022
Redash-go-sdk - An SDK for the programmatic management of Redash, in Go
Redash-go-sdk - An SDK for the programmatic management of Redash, in Go

Redash Go SDK An SDK for the programmatic management of Redash. The main compone

Dec 13, 2022
Go library to access geocoding and reverse geocoding APIs

GeoService in Go Code Coverage A geocoding service developed in Go's way, idiomatic and elegant, not just in golang. This product is designed to open

Dec 23, 2022
This repo introduces a simple server, which provided some APIs for search DAS account's records or reverse records

Prerequisites Install Usage Others Das-Account-Indexer This repo introduces a simple server, which provided some APIs for search DAS account's records

Dec 13, 2022
A Facebook Graph API SDK For Go.

A Facebook Graph API SDK In Golang This is a Go package that fully supports the Facebook Graph API with file upload, batch request and marketing API.

Dec 12, 2022
A Golang SDK for Medium's OAuth2 API

Medium SDK for Go This repository contains the open source SDK for integrating Medium's OAuth2 API into your Go app. Install go get github.com/Medium/

Nov 28, 2022
Unofficial SDK of official notion API in Go

notion-go A go client for the Notion API Description This aims to be an unofficial Go version of the official SDK which is written in JavaScript. Inst

May 12, 2022
Go written SDK for Notion.so API

go-notion Go written Notion SDK. Note: The Notion API is in beta phase Supported APIs It supports all APIs for Notion API (as for 2021-05-15). Blocks

Dec 10, 2021
The Fabric Token SDK is a set of API and services that lets developers create token-based distributed application on Hyperledger Fabric.

The Fabric Token SDK is a set of API and services that let developers create token-based distributed application on Hyperledger Fabric.

Dec 14, 2022
SDK to provide access to JUNO API (Open Banking) (2.0.0)

Juno API - Golang SDK Juno API (Open Banking) (2.0.0) Why? This project is part of my personal portfolio, so, I'll be happy if you could provide me an

Aug 9, 2021
Instagram Messaging API GO SDK

Instagram Messaging API GO SDK Introduction Instabot, Instagram Messaging API GO SDK makes it easy to work with instagram messaging API. It uses Insta

Nov 13, 2022
Unofficial Go SDK for GoPay Payments REST API

Unofficial Go SDK for GoPay Payments REST API Installation go get https://github.com/apparently-studio/gopay-go-api Basic usage client := gopay.NewCl

Nov 18, 2022
unofficial NBA Stats API SDK in Go

nba api go (nag) is an unofficial NBA Stats API in Go. it is very much a Go port of nba_api. endpoints alltimeleadersgrids assistleaders assisttracker

Sep 23, 2022
SDK for API MercadoBitcoin

MercadoBitcoin SDK Easy way to consume the public api informations from MercadoBitcoin Example of API consume of Version 3 Simple code writed on main.

May 24, 2022
🚀 BiliBili API SDK in Golang
🚀 BiliBili API SDK in Golang

BiliGO BiliBili API SDK in Golang 简介 BiliBili API 的 Golang 实现,目前已经实现了 100+ API,还在进一步更新中 特性 良好的设计,支持自定义 client 与 UA 完善的单元测试,易懂的函数命名,极少的第三方库依赖 代码、结构体注释完

Nov 13, 2022
A Golang SDK for binance API

go-binance A Golang SDK for binance API. All the REST APIs listed in binance API document are implemented, as well as the websocket APIs. For best com

Oct 28, 2021
Zenvia API - Golang SDK

Zenvia API - Golang SDK Zenvia API (2.0) Why? This project is part of my personal portfolio, so, I'll be happy if you could provide me any feedback ab

Nov 5, 2021