github.com/elliott5/community@v0.14.1-0.20160709191136-823126fb026a/sdk/users.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 // GetUsers returns the users in the user's organization. 25 func (c *Client) GetUsers() ([]entity.User, error) { 26 req, err := http.NewRequest("GET", c.BaseURL+"/api/users", nil) 27 if err != nil { 28 return nil, err 29 } 30 req.Header.Add(HeaderAuthTokenName, c.Auth.Token) 31 resp, err := c.Client.Do(req) 32 if err != nil { 33 return nil, err 34 } 35 defer resp.Body.Close() // ignore error 36 users := make([]entity.User, 0, 5) 37 dec := json.NewDecoder(resp.Body) 38 err = dec.Decode(&users) 39 if err != nil { 40 return nil, err 41 } 42 return users, nil 43 } 44 45 // GetUserInfo returns the user's information. 46 func (c *Client) GetUserInfo() (*entity.User, error) { 47 req, err := http.NewRequest("GET", c.BaseURL+"/api/users/"+c.Auth.User.BaseEntity.RefID, nil) 48 if err != nil { 49 return nil, err 50 } 51 req.Header.Add(HeaderAuthTokenName, c.Auth.Token) 52 resp, err := c.Client.Do(req) 53 if err != nil { 54 return nil, err 55 } 56 defer resp.Body.Close() // ignore error 57 b, err := ioutil.ReadAll(resp.Body) 58 if err != nil { 59 return nil, err 60 } 61 if isError(string(b)) { 62 return nil, errors.New(trimErrors(string(b))) 63 } 64 user := new(entity.User) 65 err = json.Unmarshal(b, user) 66 if err != nil { 67 return nil, err 68 } 69 return user, nil 70 } 71 72 // AddUser adds the given user to the system. 73 // The version of the user record written to the database 74 // is written into the referenced User record. 75 func (c *Client) AddUser(usrp *entity.User) error { 76 b, err := json.Marshal(usrp) 77 if err != nil { 78 return err 79 } 80 req, err := http.NewRequest("POST", c.BaseURL+"/api/users", bytes.NewReader(b)) 81 if err != nil { 82 return err 83 } 84 req.Header.Add(HeaderAuthTokenName, c.Auth.Token) 85 resp, err := c.Client.Do(req) 86 if err != nil { 87 return err 88 } 89 defer resp.Body.Close() // ignore error 90 b, err = ioutil.ReadAll(resp.Body) 91 if err != nil { 92 return err 93 } 94 if isError(string(b)) { 95 return errors.New(trimErrors(string(b))) 96 } 97 err = json.Unmarshal(b, usrp) 98 return err 99 } 100 101 // UpdateUser updates the given user, writing the changed version back into the given User structure. 102 func (c *Client) UpdateUser(usrp *entity.User) error { 103 b, err := json.Marshal(usrp) 104 if err != nil { 105 return err 106 } 107 req, err := http.NewRequest("PUT", c.BaseURL+"/api/users/"+usrp.BaseEntity.RefID, bytes.NewReader(b)) 108 if err != nil { 109 return err 110 } 111 req.Header.Add(HeaderAuthTokenName, c.Auth.Token) 112 resp, err := c.Client.Do(req) 113 if err != nil { 114 return err 115 } 116 defer resp.Body.Close() // ignore error 117 b, err = ioutil.ReadAll(resp.Body) 118 if err != nil { 119 return err 120 } 121 if isError(string(b)) { 122 return errors.New(trimErrors(string(b))) 123 } 124 err = json.Unmarshal(b, usrp) 125 return err 126 } 127 128 // DeleteUser deletes the given user. 129 func (c *Client) DeleteUser(userID string) error { 130 req, err := http.NewRequest("DELETE", c.BaseURL+"/api/users/"+userID, nil) 131 if err != nil { 132 return err 133 } 134 req.Header.Add(HeaderAuthTokenName, c.Auth.Token) 135 resp, err := c.Client.Do(req) 136 if err != nil { 137 return err 138 } 139 defer resp.Body.Close() // ignore error 140 b, err := ioutil.ReadAll(resp.Body) 141 if err != nil { 142 return err 143 } 144 if isError(string(b)) { 145 return errors.New(trimErrors(string(b))) 146 } 147 return nil 148 } 149 150 // GetUserFolderPermissions gets the folder permissions for the current user. 151 func (c *Client) GetUserFolderPermissions() (*[]entity.LabelRole, error) { 152 req, err := http.NewRequest("GET", c.BaseURL+"/api/users/"+c.Auth.User.RefID+"/permissions", nil) 153 if err != nil { 154 return nil, err 155 } 156 req.Header.Add(HeaderAuthTokenName, c.Auth.Token) 157 resp, err := c.Client.Do(req) 158 if err != nil { 159 return nil, err 160 } 161 defer resp.Body.Close() // ignore error 162 b, err := ioutil.ReadAll(resp.Body) 163 if err != nil { 164 return nil, err 165 } 166 if isError(string(b)) { 167 return nil, errors.New(trimErrors(string(b))) 168 } 169 perm := make([]entity.LabelRole, 0, 2) 170 err = json.Unmarshal(b, &perm) 171 return &perm, err 172 }