require "http/client" module Backend::Auth extend self struct UsersResponse include JSON::Serializable struct Class include JSON::Serializable getter name : String getter students : Array(User) end struct User include JSON::Serializable getter username : String getter first_name : String getter last_name : String end getter error : String? getter classes : Array(Class) getter teachers : Array(User) end struct GeneratePdfResponse include JSON::Serializable getter error : String? getter filename : String? end def users : UsersResponse resp = HTTP::Client.get(Path[Backend.config.auth.url, "users"].to_s) data = UsersResponse.from_json(resp.body) raise "Error in response (#{resp.status_code}): #{data.error}" if resp.status_code != 200 data end def generate_pdf(html : String) : GeneratePdfResponse resp = HTTP::Client.post(Path[Backend.config.auth.url, "pdf"].to_s, body: {:html => html}.to_json) data = GeneratePdfResponse.from_json(resp.body) raise "Error in response (#{resp.status_code}): #{data.error}" if resp.status_code != 201 data end end