diff options
Diffstat (limited to 'cmd/username.go')
| -rw-r--r-- | cmd/username.go | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/cmd/username.go b/cmd/username.go new file mode 100644 index 0000000..f67890b --- /dev/null +++ b/cmd/username.go @@ -0,0 +1,59 @@ +package cmd + +import ( + "encoding/json" + "fmt" + + "git.db.org.ai/dborg/internal/formatter" + "git.db.org.ai/dborg/internal/models" + "github.com/spf13/cobra" +) + +var usernameCmd = &cobra.Command{ + Use: "username [username]", + Short: "Check username availability across websites", + Long: `Check username availability across hundreds of websites using WhatsMyName dataset`, + Args: cobra.ExactArgs(1), + RunE: runUsernameCheck, +} + +func init() { + rootCmd.AddCommand(usernameCmd) + usernameCmd.Flags().StringSliceP("sites", "s", []string{}, "Specific sites to check (comma-separated)") + usernameCmd.Flags().BoolP("fuzzy", "f", false, "Enable fuzzy validation mode") + usernameCmd.Flags().IntP("max_tasks", "m", 50, "Maximum concurrent tasks") +} + +func runUsernameCheck(cmd *cobra.Command, args []string) error { + c, err := newUnauthenticatedClient() + if err != nil { + return err + } + + params := &models.USRSXParams{ + Username: args[0], + } + params.Sites, _ = cmd.Flags().GetStringSlice("sites") + params.Fuzzy, _ = cmd.Flags().GetBool("fuzzy") + params.MaxTasks, _ = cmd.Flags().GetInt("max_tasks") + + err = c.CheckUsernameStream(params, func(result json.RawMessage) error { + if IsJSONOutput() { + fmt.Println(string(result)) + return nil + } + + var siteResult models.SiteResult + if err := json.Unmarshal(result, &siteResult); err != nil { + return err + } + + return formatter.FormatUsernameSiteResult(&siteResult) + }) + + if err != nil { + return err + } + + return nil +} |
