// Copyright (C) The Arvados Authors. All rights reserved.
//
// SPDX-License-Identifier: Apache-2.0

// Somewhat inspired by https://github.com/mattn/go-redmine (MIT licensed)

package redmine

import (
	"strconv"
)

type projectWrapper struct {
	Project Project `json:"project"`
}

type projectsResult struct {
	Projects []Project `json:"projects"`
}

type Project struct {
	ID          int    `json:"id"`
	Parent      IDName `json:"parent"`
	Name        string `json:"name"`
	IDentifier  string `json:"identifier"`
	Description string `json:"description"`
	CreatedOn   string `json:"created_on"`
	UpdatedOn   string `json:"updated_on"`
}

func (c *Client) GetProject(id int) (*Project, error) {
	res, err := c.Get("/projects/" + strconv.Itoa(id) + ".json")
	if err != nil {
		return nil, err
	}
	defer res.Body.Close()

	var r projectWrapper
	err = responseHelper(res, &r, 200)
	if err != nil {
		return nil, err
	}
	return &r.Project, nil
}

func (c *Client) GetProjectByName(name string) (*Project, error) {
	res, err := c.Get("/projects/" + name + ".json")
	if err != nil {
		return nil, err
	}
	defer res.Body.Close()

	var r projectWrapper
	err = responseHelper(res, &r, 200)
	if err != nil {
		return nil, err
	}
	return &r.Project, nil
}