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 }