feat: create dialog

This commit is contained in:
2024-01-20 21:58:49 -06:00
parent c24251cfbf
commit 639788d37b
11 changed files with 715 additions and 62 deletions

View File

@@ -23,7 +23,7 @@ func NewAPIClient(host string) *APIClient {
}
}
func (c *APIClient) retrieveSingleAsset(r *http.Request) (*types.AssetResponse, error) {
func makeRequest[T any](c *APIClient, r *http.Request) (*T, error) {
r.Header.Set("User-Agent", userAgent)
//r.Header.Set("Authorization", "Bearer "+c.Token)
r.Header.Set("Accept", "application/json")
@@ -41,57 +41,7 @@ func (c *APIClient) retrieveSingleAsset(r *http.Request) (*types.AssetResponse,
return nil, err
}
resp, err := unmarshal[types.AssetResponse](body)
if err != nil {
return nil, fmt.Errorf("%s", "An unexpected response was received")
}
return resp, nil
}
func (c *APIClient) retrieveMultipleAssets(r *http.Request) (*types.MultipleAssetsResponse, error) {
r.Header.Set("User-Agent", userAgent)
//r.Header.Set("Authorization", "Bearer "+c.Token)
r.Header.Set("Accept", "application/json")
r.Header.Set("Content-Type", "application/json")
httpCli := http.Client{}
httpResp, err := httpCli.Do(r)
if err != nil {
return nil, err
}
defer httpResp.Body.Close()
body, err := io.ReadAll(httpResp.Body)
if err != nil {
return nil, err
}
resp, err := unmarshal[types.MultipleAssetsResponse](body)
if err != nil {
return nil, fmt.Errorf("%s", "An unexpected response was received")
}
return resp, nil
}
func (c *APIClient) retrieveMultipleShelves(r *http.Request) (*types.MultipleShelfResponse, error) {
r.Header.Set("User-Agent", userAgent)
//r.Header.Set("Authorization", "Bearer "+c.Token)
r.Header.Set("Accept", "application/json")
r.Header.Set("Content-Type", "application/json")
httpCli := http.Client{}
httpResp, err := httpCli.Do(r)
if err != nil {
return nil, err
}
defer httpResp.Body.Close()
body, err := io.ReadAll(httpResp.Body)
if err != nil {
return nil, err
}
resp, err := unmarshal[types.MultipleShelfResponse](body)
resp, err := unmarshal[T](body)
if err != nil {
return nil, fmt.Errorf("%s", "An unexpected response was received")
}
@@ -102,7 +52,7 @@ func (c *APIClient) RetrieveAssetByID(idNumber string) (*types.Asset, error) {
url := fmt.Sprintf("%s/assets/%s", c.Host, idNumber)
req, _ := http.NewRequest("GET", url, bytes.NewBuffer([]byte{}))
resp, err := c.retrieveSingleAsset(req)
resp, err := makeRequest[types.AssetResponse](c, req)
if err != nil {
return nil, err
}
@@ -120,7 +70,7 @@ func (c *APIClient) CreateAsset(request types.CreateAssetRequest) (*types.Asset,
req, _ := http.NewRequest("POST", url, bytes.NewBuffer(body))
resp, err := c.retrieveSingleAsset(req)
resp, err := makeRequest[types.AssetResponse](c, req)
if err != nil {
return nil, err
}
@@ -132,7 +82,7 @@ func (c *APIClient) RetrieveAllAssets() ([]*types.Asset, error) {
url := fmt.Sprintf("%s/assets", c.Host)
req, _ := http.NewRequest("GET", url, bytes.NewBuffer([]byte{}))
resp, err := c.retrieveMultipleAssets(req)
resp, err := makeRequest[types.MultipleAssetsResponse](c, req)
if err != nil {
return nil, err
}
@@ -144,7 +94,7 @@ func (c *APIClient) DeleteAssetByID(idNumber string) (*types.Asset, error) {
url := fmt.Sprintf("%s/assets/%s", c.Host, idNumber)
req, _ := http.NewRequest("DELETE", url, bytes.NewBuffer([]byte{}))
resp, err := c.retrieveSingleAsset(req)
resp, err := makeRequest[types.AssetResponse](c, req)
if err != nil {
return nil, err
}
@@ -156,10 +106,22 @@ func (c *APIClient) RetrieveAllShelves() ([]*types.ShelfLocation, error) {
url := fmt.Sprintf("%s/shelves", c.Host)
req, _ := http.NewRequest("GET", url, bytes.NewBuffer([]byte{}))
resp, err := c.retrieveMultipleShelves(req)
resp, err := makeRequest[types.MultipleShelfResponse](c, req)
if err != nil {
return nil, err
}
return resp.ShelfLocations, nil
}
func (c *APIClient) RetrieveAllCategories() ([]*types.Category, error) {
url := fmt.Sprintf("%s/categories", c.Host)
req, _ := http.NewRequest("GET", url, bytes.NewBuffer([]byte{}))
resp, err := makeRequest[types.MultipleCategoryResponse](c, req)
if err != nil {
return nil, err
}
return resp.Categories, nil
}