github.com/go-email-validator/go-email-validator@v0.0.0-20230409163946-b8b9e6a0552e/pkg/presentation/check-if-email-exist/cmd/dep_test_generator/gen.go (about)

     1  // +build ignore
     2  
     3  package main
     4  
     5  import (
     6  	"bytes"
     7  	"encoding/json"
     8  	"fmt"
     9  	"github.com/go-email-validator/go-email-validator/pkg/presentation/check_if_email_exist"
    10  	"github.com/go-email-validator/go-email-validator/pkg/presentation/converter"
    11  	"io/ioutil"
    12  	"log"
    13  	"net/http"
    14  	"os"
    15  )
    16  
    17  // TODO DRY for gen fixtures
    18  func main() {
    19  	var bodyBytes []byte
    20  	var err error
    21  	emails := converter.EmailsForTests()
    22  	deps := make([]interface{}, len(emails))
    23  
    24  	err = godotenv.Load()
    25  	die(err)
    26  
    27  	apiKey := os.Getenv("CHECK_IF_EMAIL_EXIST")
    28  
    29  	for i, email := range emails {
    30  		message := map[string]interface{}{
    31  			"to_email": email,
    32  		}
    33  
    34  		bytesRepresentation, _ := json.Marshal(message)
    35  		req, err := http.NewRequest(
    36  			"POST",
    37  			"https://ssfy.sh/amaurymartiny/reacher@2d2ce35c/check_email",
    38  			bytes.NewBuffer(bytesRepresentation),
    39  		)
    40  		die(err)
    41  		req.Header.Set("Content-Type", "application/json")
    42  		if apiKey != "" {
    43  			req.Header.Set("authorization", apiKey)
    44  		}
    45  
    46  		func() {
    47  			resp, err := http.DefaultClient.Do(req)
    48  			die(err)
    49  			defer resp.Body.Close()
    50  			bodyBytes, err = ioutil.ReadAll(resp.Body)
    51  			die(err)
    52  		}()
    53  
    54  		var dep checkifemailexist.DepPresentation
    55  		err = json.Unmarshal(bodyBytes, &dep)
    56  		die(err)
    57  
    58  		if dep.Error != "" {
    59  			panic(fmt.Sprint(email, dep.Error))
    60  		}
    61  
    62  		deps[i] = dep
    63  	}
    64  
    65  	f, err := os.Create(test.DefaultDepFixtureFile)
    66  	die(err)
    67  	defer f.Close()
    68  
    69  	bytes, err := json.MarshalIndent(deps, "", "  ")
    70  	die(err)
    71  	_, err = f.Write(bytes)
    72  	die(err)
    73  }
    74  
    75  func die(err error) {
    76  	if err != nil {
    77  		log.Fatal(err)
    78  	}
    79  }