package writeas import ( "fmt" "net/http" ) type ( // Author represents a Write.as author. Author struct { User *User Name string `json:"name"` Slug string `json:"slug"` } // AuthorParams are used to create or update a Write.as author. AuthorParams struct { // Name is the public display name of the Author. Name string `json:"name"` // Slug is the optional slug for the Author. Slug string `json:"slug"` // OrgAlias is the alias of the organization the Author belongs to. OrgAlias string `json:"-"` } ) // CreateContributor creates a new contributor on the given organization. func (c *Client) CreateContributor(sp *AuthorParams) (*Author, error) { if sp.OrgAlias == "" { return nil, fmt.Errorf("AuthorParams.OrgAlias is required.") } a := &Author{} env, err := c.post("/organizations/"+sp.OrgAlias+"/contributors", sp, a) if err != nil { return nil, err } var ok bool if a, ok = env.Data.(*Author); !ok { return nil, fmt.Errorf("Wrong data returned from API.") } status := env.Code if status != http.StatusCreated { if status == http.StatusBadRequest { return nil, fmt.Errorf("Bad request: %s", env.ErrorMessage) } return nil, fmt.Errorf("Problem creating author: %d. %s\n", status, env.ErrorMessage) } return a, nil }