diff --git a/user/services/github_test.go b/user/services/github_test.go index b50d930..007e35e 100644 --- a/user/services/github_test.go +++ b/user/services/github_test.go @@ -22,14 +22,13 @@ func TestGithub(t *testing.T) { usr, err := user.New(kid, "github", "gabriel", urs, 1) require.NoError(t, err) - st, msg, err := services.RequestVerify(context.TODO(), services.Github, client, usr) - require.NoError(t, err) - require.Equal(t, user.StatusOK, st) + result := services.Verify(context.TODO(), services.Github, client, usr) + require.Equal(t, user.StatusOK, result.Status) expected := `BEGIN MESSAGE. kdZaJI1U5AS7G6i VoUxdP8OtPzEoM6 pYhVl0YQZJnotVE wLg9BDb5SUO05pm abUSeCvBfdPoRpP J8wrcF5PP3wTCKq 6Xr2MZHgg6m2Qal gJCD6vMqlBQfIg6 QsfB27aP5DMuXlJ AUVIAvMDHIoptmS riNMzfpwBjRShVL WH70a0GOEqD6L8b kC5EFOwCedvHFpc AQVqULHjcSpeCfZ EIOaQ2IP. END MESSAGE.` - require.Equal(t, expected, msg) + require.Equal(t, expected, result.Statement) } diff --git a/user/services/https_test.go b/user/services/https_test.go index f4b597f..3d5896b 100644 --- a/user/services/https_test.go +++ b/user/services/https_test.go @@ -20,14 +20,13 @@ func TestHTTPS(t *testing.T) { usr, err := user.New(kid, "https", "keys.pub", "https://keys.pub/keyspub.txt", 1) require.NoError(t, err) client := http.NewClient() - st, msg, err := services.RequestVerify(context.TODO(), services.HTTPS, client, usr) - require.NoError(t, err) - require.Equal(t, user.StatusOK, st) + result := services.Verify(context.TODO(), services.HTTPS, client, usr) + require.Equal(t, user.StatusOK, result.Status) expected := `BEGIN MESSAGE. 7PPiOMcdjhvnXzM 1uVwr224ccgiOKt I5vwzYoRY3xgUdL 86O3X1DnuZwCTIP ACnuZKXBB4y39qQ f7sq7eoQs8oTCKq 6Xr2MZHgg7F8Mca NbI7en6mNzlIVvQ zIh84hprPPEByeP D9s1xc5HURCNFcv rsOvrUoV0oHQfyi 89aehuNSV2AP9hp 8dGT8SwS3TEo3FP b1X8S32XyBenWKF aJv7L2IP. END MESSAGE.` - require.Equal(t, expected, msg) + require.Equal(t, expected, result.Statement) } diff --git a/user/services/keyspub_test.go b/user/services/keyspub_test.go index 9cb5e74..7cd857e 100644 --- a/user/services/keyspub_test.go +++ b/user/services/keyspub_test.go @@ -23,14 +23,13 @@ func TestKeysPub(t *testing.T) { client := http.NewClient() - st, msg, err := services.RequestVerify(context.TODO(), services.KeysPub, client, usr) - require.NoError(t, err) - require.Equal(t, user.StatusOK, st) + result := services.Verify(context.TODO(), services.KeysPub, client, usr) + require.Equal(t, user.StatusOK, result.Status) expected := `BEGIN MESSAGE. kdZaJI1U5AS7G6i VoUxdP8OtPzEoM6 pYhVl0YQZJnotVE wLg9BDb5SUO05pm abUSeCvBfdPoRpP J8wrcF5PP3wTCKq 6Xr2MZHgg6m2Qal gJCD6vMqlBQfIg6 QsfB27aP5DMuXlJ AUVIAvMDHIoptmS riNMzfpwBjRShVL WH70a0GOEqD6L8b kC5EFOwCedvHFpc AQVqULHjcSpeCfZ EIOaQ2IP. END MESSAGE.` - require.Equal(t, expected, msg) + require.Equal(t, expected, result.Statement) } diff --git a/user/services/proxy_test.go b/user/services/proxy_test.go index 3aa669e..a8bdc54 100644 --- a/user/services/proxy_test.go +++ b/user/services/proxy_test.go @@ -21,9 +21,8 @@ func TestProxy(t *testing.T) { usr, err := user.New(kid, "twitter", "gabrlh", urs, 1) require.NoError(t, err) client := http.NewClient() - st, msg, err := services.RequestVerify(context.TODO(), services.Proxy, client, usr) - require.NoError(t, err) - require.Equal(t, user.StatusOK, st) + result := services.Verify(context.TODO(), services.Proxy, client, usr) + require.Equal(t, user.StatusOK, result.Status) expected := "BEGIN MESSAGE.\nEqcgDt8RfXvPq9b 4qCV8S3VPKIQKqa N7Rc1YruQQYuVS8 niHzUv7jdykkEPSrKGcJQCNTkNE7uF swPuwfpaZX6TCKq 6Xr2MZHgg6S0Mjg WFMJ1KHxazTuXs4icK3k8SZCR8mVLQ MSVhFeMrvz0qJOm A96zW9RAY6whsLo 5fC8i3fRJjyo9mQJZid8MwBXJl1XDL 5ZOSkLYs6sk6a2g CiGyA2IP.\nEND MESSAGE." - require.Equal(t, expected, msg) + require.Equal(t, expected, result.Statement) } diff --git a/user/services/reddit_test.go b/user/services/reddit_test.go index ba18372..05af1b9 100644 --- a/user/services/reddit_test.go +++ b/user/services/reddit_test.go @@ -20,11 +20,10 @@ func TestReddit(t *testing.T) { usr, err := user.New(kid, "reddit", "gabrlh", "https://www.reddit.com/r/keyspubmsgs/comments/f8g9vd/gabrlh/", 1) require.NoError(t, err) client := http.NewClient() - st, msg, err := services.RequestVerify(context.TODO(), services.Reddit, client, usr) - require.NoError(t, err) - require.Equal(t, user.StatusOK, st) + result := services.Verify(context.TODO(), services.Reddit, client, usr) + require.Equal(t, user.StatusOK, result.Status) expected := `BEGIN MESSAGE. tm8882H30GKybLj cOvOw3ezalNCV4z HIeF7ZIDa53DM5l m43v3AdpuM5xtqTZDGIhyQbA863bYk fiIRdpUYVzMTCKq 6Xr2MZHgg4bh2Wj m5fbDX2FnO9rt6TWzS6zMQo6Pf4PXS De2cdyxT0J3mPah X4cThM1A4yFIFaF lo99DSnDd3LOLwUrP9mdKCnNdvKkl1 WLZZaBlQZWXAisM CCwny21. END MESSAGE.` - require.Equal(t, expected, msg) + require.Equal(t, expected, result.Statement) } diff --git a/user/services/twitter_test.go b/user/services/twitter_test.go index 4a367eb..8b7e133 100644 --- a/user/services/twitter_test.go +++ b/user/services/twitter_test.go @@ -49,8 +49,7 @@ func TestTwitter(t *testing.T) { usr, err := user.New(kid, "twitter", "gabrlh", urs, 1) require.NoError(t, err) client := http.NewClient() - st, _, err := services.RequestVerify(context.TODO(), services.Twitter, client, usr) - require.NoError(t, err) - require.Equal(t, user.StatusOK, st) + result := services.Verify(context.TODO(), services.Twitter, client, usr) + require.Equal(t, user.StatusOK, result.Status) // TODO: Require msg } diff --git a/user/services/verify.go b/user/services/verify.go index 876d73a..fed9738 100644 --- a/user/services/verify.go +++ b/user/services/verify.go @@ -10,37 +10,23 @@ import ( "github.com/pkg/errors" ) -// RequestVerify get user URL using client and verifies it. -// If there is an error, it is set on the result. -func RequestVerify(ctx context.Context, service Service, client http.Client, usr *user.User) (user.Status, string, error) { - st, body, err := service.Request(ctx, client, usr) - if err != nil { - return st, "", err - } - if st != user.StatusOK { - return st, "", err - } - if body == nil { - return user.StatusResourceNotFound, "", errors.Errorf("resource not found") - } - - st, msg, err := service.Verify(ctx, body, usr) - if err != nil { - logger.Warningf("Failed to check content: %s", err) - return st, "", err - } - - return st, msg, nil +// Verify a user. +// The result.Status is success (StatusOK) or type of failure. +// If a failure, result.Err has the error message. +func Verify(ctx context.Context, service Service, client http.Client, usr *user.User) *user.Result { + result := &user.Result{User: usr} + UpdateResult(ctx, service, result, client, time.Now()) + return result } -// UpdateResult updates a user.Result using client. +// UpdateResult updates a user.Result. // The result.Status is success (StatusOK) or type of failure. // If a failure, result.Err has the error message. func UpdateResult(ctx context.Context, service Service, result *user.Result, client http.Client, now time.Time) { logger.Infof("Update user %s", result.User.String()) result.Timestamp = tsutil.Millis(now) - st, msg, err := RequestVerify(ctx, service, client, result.User) + st, msg, err := requestVerify(ctx, service, client, result.User) if err != nil { result.Err = err.Error() result.Status = st @@ -54,3 +40,26 @@ func UpdateResult(ctx context.Context, service Service, result *user.Result, cli result.Status = st result.VerifiedAt = tsutil.Millis(now) } + +// requestVerify get user URL using client and verifies it. +// If there is an error, it is set on the result. +func requestVerify(ctx context.Context, service Service, client http.Client, usr *user.User) (user.Status, string, error) { + st, body, err := service.Request(ctx, client, usr) + if err != nil { + return st, "", err + } + if st != user.StatusOK { + return st, "", err + } + if body == nil { + return user.StatusResourceNotFound, "", errors.Errorf("resource not found") + } + + st, msg, err := service.Verify(ctx, body, usr) + if err != nil { + logger.Warningf("Failed to check content: %s", err) + return st, "", err + } + + return st, msg, nil +}