Skip to content

omarzer0/AZ-API-Tester

Repository files navigation

AZ-API-Tester

App Demo

Download the app

app_demo_compresed.mp4

About:

A task for Instabug Internship. The idea is simple, create an app to test Rest API's endpoints that support GET and POST requests

Requirements (✔️ Done):

  • Enter URL to connect to
  • Add request headers which numbers are dynamic
  • App must support GET/POST:
    • For POST request type, App must provide a way to enter request body as string
  • After request completion the app needs to display the following:
    • Response code
    • Error if any
    • Request/Response headers
    • Request body or query parameters depending on request type/Response body
  • If the device is offline then app must show an error message and do not make the call

Bouns (✔️ Done):

  • Requests alongside their responses should be cached
  • App must allow to view cached requests and responses
  • App must allow sorting cached requests/responses by their execution time.
  • App must allow filtering cached requests/responses by request type.
  • Your app must handle configuration changes like screen rotation
  • Hint: check httpbin.org

Extra (✔️ Done):

  • Night mode support 🤩🤩
  • RTL support

Important Notes 📝📝:

App must not use any third party libraries. (Retrofit,volley, coroutines, room….etc) considered as 3rd parties (NOT ALLOWED)

App Keynotes 📝:

  • MVI Clean Architecture 🚧🏗️
  • Singleton pattern to provide the same instance for Database and Network Helper.
  • States to describe screens state, easily observe data changes, handle configuration changes, and separate UI from app logic.
  • Actions to easily communicate with view models and Events to deliver events back to UI.
  • AZExecutors (a wrapper around Executors) to do background thread work neatly.
  • Dynamically add views and save their data on configuration changes.
  • Repository to group different data sources and provide a single interface for view models to get the data.
  • SQLite to persist data locally (Room is considered a third-party library and not allowed).
  • Manually provide objects (Dagger is considered a third party library and not allowed )
  • Greate UI with little layout animations
  • More to explore and more to be added ... 🤩

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages