github.com/elliott5/community@v0.14.1-0.20160709191136-823126fb026a/sdk/organization.go (about)

     1  // Copyright 2016 Documize Inc. <legal@documize.com>. All rights reserved.
     2  //
     3  // This software (Documize Community Edition) is licensed under 
     4  // GNU AGPL v3 http://www.gnu.org/licenses/agpl-3.0.en.html
     5  //
     6  // You can operate outside the AGPL restrictions by purchasing
     7  // Documize Enterprise Edition and obtaining a commercial license
     8  // by contacting <sales@documize.com>. 
     9  //
    10  // https://documize.com
    11  
    12  package documize
    13  
    14  import (
    15  	"bytes"
    16  	"encoding/json"
    17  	"errors"
    18  	"io/ioutil"
    19  	"net/http"
    20  
    21  	"github.com/documize/community/documize/api/entity"
    22  )
    23  
    24  // GetOrganizations returns the user's organizations.
    25  func (c *Client) GetOrganizations() ([]entity.Organization, error) {
    26  	ret := make([]entity.Organization, 0, len(c.Auth.User.Accounts))
    27  	for orgNum := range c.Auth.User.Accounts {
    28  		url := c.BaseURL + "/api/organizations/" + c.Auth.User.Accounts[orgNum].OrgID
    29  		req, err := http.NewRequest("GET", url, nil)
    30  		if err != nil {
    31  			return nil, err
    32  		}
    33  		req.Header.Add(HeaderAuthTokenName, c.Auth.Token)
    34  		resp, err := c.Client.Do(req)
    35  		if err != nil {
    36  			return nil, err
    37  		}
    38  		defer resp.Body.Close() // ignore error
    39  		b, err := ioutil.ReadAll(resp.Body)
    40  		if err != nil {
    41  			return nil, err
    42  		}
    43  		if isError(string(b)) {
    44  			return nil, errors.New(trimErrors(string(b)))
    45  		}
    46  		var m entity.Organization
    47  		err = json.Unmarshal(b, &m)
    48  		if err != nil {
    49  			return nil, err
    50  		}
    51  		ret = append(ret, m)
    52  	}
    53  	return ret, nil
    54  }
    55  
    56  // UpdateOrganization returns the user's organization information.
    57  func (c *Client) UpdateOrganization(org *entity.Organization) error {
    58  	url := c.BaseURL + "/api/organizations/" + org.RefID
    59  	bod, err := json.Marshal(org)
    60  	if err != nil {
    61  		return err
    62  	}
    63  	req, err := http.NewRequest("PUT", url, bytes.NewReader(bod))
    64  	if err != nil {
    65  		return err
    66  	}
    67  	req.Header.Add(HeaderAuthTokenName, c.Auth.Token)
    68  	resp, err := c.Client.Do(req)
    69  	if err != nil {
    70  		return err
    71  	}
    72  	defer resp.Body.Close() // ignore error
    73  	b, err := ioutil.ReadAll(resp.Body)
    74  	if err != nil {
    75  		return err
    76  	}
    77  	if isError(string(b)) {
    78  		return errors.New(trimErrors(string(b)))
    79  	}
    80  	return nil
    81  }