package ru.m.api; import hw.net.JsonLoader; import promhx.Promise; typedef UnsplashImage = { var id:String; var width:Int; var height:Int; var urls:{ raw:String, full:String, regular:String, small:String, thumb:String, }; } typedef UnsplashResponse = { var total:Int; var total_pages:Int; var results:Array; } class UnsplashApi { private var baseUrl:String = "https://api.unsplash.com"; private var key:String; public function new(key:String) { this.key = key; } private function buildQuery(queryMap:Map):String { return [for (k in queryMap.keys()) '${k}=${queryMap.get(k)}'].join("&"); } private function buildRequest(queryMap:Map):String { queryMap.set("client_id", key); var query = buildQuery(queryMap); return '${baseUrl}/search/photos?${query}'; } public function getPage(page:Int, perPage:Int, query:String):Promise { return new JsonLoader().GET(buildRequest([ "per_page" => perPage, "page" => page, "order_by" => "relevant", "orientation" => "landscape", "query" => query, ])); } public function get(id:String):Promise { var queryMap = ["client_id" => key,]; var query = buildQuery(queryMap); return new JsonLoader().GET('${baseUrl}/photos/${id}?${query}'); } }