43 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Go
		
	
	
		
		
			
		
	
	
			43 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Go
		
	
	
|  | package nutrislice | ||
|  | 
 | ||
|  | import ( | ||
|  | 	"fmt" | ||
|  | 	"time" | ||
|  | 
 | ||
|  | 	"code.jhot.me/jhot/hats/internal/util" | ||
|  | 	"github.com/go-resty/resty/v2" | ||
|  | ) | ||
|  | 
 | ||
|  | type NutrisliceClient struct { | ||
|  | 	restClient *resty.Client | ||
|  | 	district   string | ||
|  | } | ||
|  | 
 | ||
|  | func New(district string) *NutrisliceClient { | ||
|  | 	return &NutrisliceClient{ | ||
|  | 		restClient: resty.New().SetBaseURL(fmt.Sprintf("https://%s.api.nutrislice.com", district)), | ||
|  | 		district:   district, | ||
|  | 	} | ||
|  | } | ||
|  | 
 | ||
|  | func (c *NutrisliceClient) GetSchools() ([]School, error) { | ||
|  | 	var data []School | ||
|  | 	_, err := util.CheckSuccess(c.restClient.R().SetResult(&data).Get("menu/api/schools/?format=json")) | ||
|  | 	return data, err | ||
|  | } | ||
|  | 
 | ||
|  | func (c *NutrisliceClient) GetWeeklyMenu(menuType MenuType, year int, month int, startDay int) (WeekMenu, error) { | ||
|  | 	var data WeekMenu | ||
|  | 	_, err := util.CheckSuccess(c.restClient.R().SetResult(&data).Get(fmt.Sprintf("menu/api/weeks/school/bauder/menu-type/%s/%d/%02d/%02d/?format=json", menuType, year, month, startDay))) | ||
|  | 	return data, err | ||
|  | } | ||
|  | 
 | ||
|  | func (c *NutrisliceClient) GetTodaysMenu(menuType MenuType) ([]MenuItem, error) { | ||
|  | 	now := time.Now() | ||
|  | 	weekData, err := c.GetWeeklyMenu(menuType, now.Year(), int(now.Month()), now.Day()) | ||
|  | 	if err != nil { | ||
|  | 		return []MenuItem{}, err | ||
|  | 	} | ||
|  | 	return weekData.Days[int(now.Weekday())].MenuItems, nil | ||
|  | } |