github.com/wtfutil/wtf@v0.43.0/modules/airbrake/client.go (about)

     1  package airbrake
     2  
     3  import (
     4  	"fmt"
     5  	"net/http"
     6  
     7  	"github.com/wtfutil/wtf/utils"
     8  )
     9  
    10  func project(projectID int, authToken string) (*Project, error) {
    11  	url := fmt.Sprintf(
    12  		"https://api.airbrake.io/api/v4/projects/%d?key=%s",
    13  		projectID, authToken)
    14  	req, err := http.NewRequest("GET", url, http.NoBody)
    15  	if err != nil {
    16  		return nil, err
    17  	}
    18  
    19  	req.Header.Add("Accept", "application/json")
    20  	req.Header.Add("Content-Type", "application/json")
    21  
    22  	httpClient := &http.Client{}
    23  	resp, err := httpClient.Do(req)
    24  	if err != nil {
    25  		return nil, err
    26  	}
    27  
    28  	p := &ProjectJSON{}
    29  	err = utils.ParseJSON(p, resp.Body)
    30  	if err != nil {
    31  		return nil, err
    32  	}
    33  
    34  	return &p.Project, nil
    35  }
    36  
    37  func groups(projectID int, authToken string) ([]Group, error) {
    38  	url := fmt.Sprintf(
    39  		"https://api.airbrake.io/api/v4/projects/%d/groups?key=%s&limit=10&order=last_notice&resolved=false",
    40  		projectID, authToken)
    41  	req, err := http.NewRequest("GET", url, http.NoBody)
    42  	if err != nil {
    43  		return nil, err
    44  	}
    45  
    46  	req.Header.Add("Accept", "application/json")
    47  	req.Header.Add("Content-Type", "application/json")
    48  
    49  	httpClient := &http.Client{}
    50  	resp, err := httpClient.Do(req)
    51  	if err != nil {
    52  		return nil, err
    53  	}
    54  	defer func() { _ = resp.Body.Close() }()
    55  
    56  	j := &GroupJSON{}
    57  	err = utils.ParseJSON(j, resp.Body)
    58  	if err != nil {
    59  		return nil, err
    60  	}
    61  
    62  	return j.Groups, nil
    63  }
    64  
    65  func resolveGroup(projectID int64, groupID, authToken string) error {
    66  	url := fmt.Sprintf(
    67  		"https://airbrake.io/api/v4/projects/%d/groups/%s/resolved?key=%s",
    68  		projectID, groupID, authToken)
    69  	req, err := http.NewRequest("PUT", url, http.NoBody)
    70  	if err != nil {
    71  		return err
    72  	}
    73  
    74  	req.Header.Add("Accept", "application/json")
    75  	req.Header.Add("Content-Type", "application/json")
    76  
    77  	httpClient := &http.Client{}
    78  	resp, err := httpClient.Do(req)
    79  	if err != nil {
    80  		return err
    81  	}
    82  	defer func() { _ = resp.Body.Close() }()
    83  
    84  	return nil
    85  }
    86  
    87  func muteGroup(projectID int64, groupID, authToken string) error {
    88  	url := fmt.Sprintf(
    89  		"https://airbrake.io/api/v4/projects/%d/groups/%s/muted?key=%s",
    90  		projectID, groupID, authToken)
    91  	req, err := http.NewRequest("PUT", url, http.NoBody)
    92  	if err != nil {
    93  		return err
    94  	}
    95  
    96  	req.Header.Add("Accept", "application/json")
    97  	req.Header.Add("Content-Type", "application/json")
    98  
    99  	httpClient := &http.Client{}
   100  	resp, err := httpClient.Do(req)
   101  	if err != nil {
   102  		return err
   103  	}
   104  	defer func() { _ = resp.Body.Close() }()
   105  
   106  	return nil
   107  }
   108  
   109  func unmuteGroup(projectID int64, groupID, authToken string) error {
   110  	url := fmt.Sprintf(
   111  		"https://airbrake.io/api/v4/projects/%d/groups/%s/unmuted?key=%s",
   112  		projectID, groupID, authToken)
   113  	req, err := http.NewRequest("PUT", url, http.NoBody)
   114  	if err != nil {
   115  		return err
   116  	}
   117  
   118  	req.Header.Add("Accept", "application/json")
   119  	req.Header.Add("Content-Type", "application/json")
   120  
   121  	httpClient := &http.Client{}
   122  	resp, err := httpClient.Do(req)
   123  	if err != nil {
   124  		return err
   125  	}
   126  	defer func() { _ = resp.Body.Close() }()
   127  
   128  	return nil
   129  }