Compare commits

..

2 commits

Author SHA1 Message Date
bff329f46c
Merge pull request #35 from freman/main
Add latestbreach api
2024-05-08 11:59:05 +02:00
Shannon Wynter
f2f530e9c3 Add latestbreach api 2024-05-08 13:57:07 +10:00
2 changed files with 30 additions and 0 deletions

View file

@ -161,6 +161,22 @@ func (b *BreachAPI) BreachByName(n string, options ...BreachOption) (*Breach, *h
return bd, hr, nil return bd, hr, nil
} }
// LatestBreach returns the single most recent breach
func (b *BreachAPI) LatestBreach() (*Breach, *http.Response, error) {
au := fmt.Sprintf("%s/latestbreach", BaseURL)
hb, hr, err := b.hibp.HTTPResBody(http.MethodGet, au, nil)
if err != nil {
return nil, hr, err
}
var bd *Breach
if err := json.Unmarshal(hb, &bd); err != nil {
return nil, hr, err
}
return bd, hr, nil
}
// DataClasses are attribute of a record compromised in a breach. This method returns a list of strings // DataClasses are attribute of a record compromised in a breach. This method returns a list of strings
// with all registered data classes known to HIBP // with all registered data classes known to HIBP
func (b *BreachAPI) DataClasses() ([]string, *http.Response, error) { func (b *BreachAPI) DataClasses() ([]string, *http.Response, error) {

View file

@ -162,6 +162,20 @@ func TestBreachAPI_BreachByName_Errors(t *testing.T) {
} }
} }
// TestBreachAPI_LatestBreach tests the LatestBreach method of the breaches API
func TestBreachAPI_LatestBreach(t *testing.T) {
hc := New()
breach, _, err := hc.BreachAPI.LatestBreach()
if err != nil {
t.Error(err)
return
}
if breach == nil {
t.Error("No breach returned")
}
}
// TestBreachAPI_DataClasses tests the DataClasses() method of the breaches API // TestBreachAPI_DataClasses tests the DataClasses() method of the breaches API
func TestBreachAPI_DataClasses(t *testing.T) { func TestBreachAPI_DataClasses(t *testing.T) {
hc := New() hc := New()