Skip to content

Commit 561361b

Browse files
committed
Add member APIs access to Sentry
1 parent a9ccec1 commit 561361b

File tree

4 files changed

+61
-3
lines changed

4 files changed

+61
-3
lines changed

events.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import (
55
"fmt"
66
"time"
77

8-
"github.com/atlassian/go-sentry-api/datatype"
8+
"github.com/irisgve/go-sentry-api/datatype"
99
)
1010

1111
// Tag is used for a event

events_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ package sentry
33
import (
44
"testing"
55

6-
"github.com/atlassian/go-sentry-api/datatype"
6+
"github.com/irisgve/go-sentry-api/datatype"
77
)
88

99
func TestEventsResource(t *testing.T) {

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
module github.com/atlassian/go-sentry-api
1+
module github.com/irisgve/go-sentry-api
22

33
go 1.13
44

member.go

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
package sentry
2+
3+
import (
4+
"fmt"
5+
"net/url"
6+
"time"
7+
)
8+
9+
// Member is a sentry member
10+
type Member struct {
11+
Email *string `json:"email,omitempty"`
12+
Expired *bool `json:"expired,omitempty"`
13+
Name *string `json:"name,omitempty"`
14+
IsPending *bool `json:"isPending,omitempty"`
15+
DateCreated *time.Time `json:"dateCreated,omitempty"`
16+
Role *string `json:"role,omitempty"`
17+
ID *string `json:"id,omitempty"`
18+
RoleName *string `json:"roleName,omitempty"`
19+
}
20+
21+
type memberQuery struct {
22+
query string `json:"query,omitempty"`
23+
}
24+
25+
func (o *memberQuery) ToQueryString() string {
26+
query := url.Values{}
27+
query.Add("query", string(o.query))
28+
return query.Encode()
29+
}
30+
31+
// GetMember takes a user email and returns back the user
32+
func (c *Client) GetMemberByEmail(o Organization, memberEmail string) (Member, error) {
33+
var members []Member
34+
35+
err := c.doWithQuery("GET", fmt.Sprintf("organizations/%s/members", *o.Slug), &members, nil, &memberQuery{memberEmail})
36+
if err != nil {
37+
return Member{}, fmt.Errorf("failed to get member: %w", err)
38+
}
39+
40+
if len(members) == 0 {
41+
return Member{}, fmt.Errorf("no member with that email found")
42+
}
43+
44+
return members[0], err
45+
}
46+
47+
// AddMemberToTeam takes a member and adds them to a team
48+
func (c *Client) AddMemberToTeam(o Organization, t Team, m Member) error {
49+
return c.do("POST", fmt.Sprintf("organizations/%s/members/%s/teams/%s", *o.Slug, *m.ID, *t.Slug), nil, nil)
50+
}
51+
52+
// MakeAdmin takes a member and makes them admin
53+
func (c *Client) MakeAdmin(o Organization, a Member) error {
54+
adminRole := "admin"
55+
a.Role = &adminRole
56+
57+
return c.do("PUT", fmt.Sprintf("organizations/%s/members/%s", *o.Slug, *a.ID), nil, &a)
58+
}

0 commit comments

Comments
 (0)