Init: Main app created
This commit is contained in:
		
						commit
						f74ff68b76
					
				
							
								
								
									
										177
									
								
								main.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										177
									
								
								main.go
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,177 @@ | ||||
| package main | ||||
| 
 | ||||
| import ( | ||||
| 	"bytes" | ||||
| 	"flag" | ||||
| 	"fmt" | ||||
| 	"io/ioutil" | ||||
| 	"log" | ||||
| 	"net/http" | ||||
| 	"os" | ||||
| 	"strings" | ||||
| ) | ||||
| 
 | ||||
| func main() { | ||||
| 	// Name of the executable | ||||
| 	exeName := "poster" | ||||
| 	// Help Message (-h, --help) | ||||
| 	helpMsg := `Usage: %[1]s [FLAGS] URL | ||||
| Execute HTTP-Requests and print responses to stdout | ||||
| 
 | ||||
|   -m <method> Method to use for the request (default "get") | ||||
|      POST '{"mydata": "string", "nene": 31}' https://rest.api/lele/lala | ||||
|      PUT '{"mydata": "string", "nene": 31}' https://rest.api/lele/lala/31 | ||||
|      PATCH '{"mydata": "string", "nene": 31}' https://rest.api/lele/lala/31 | ||||
|      Note: Use "" around everything but numbers, also wrap whole json in '' | ||||
|   -h, --help Print this message. | ||||
| 
 | ||||
| Examples: | ||||
|   %[1]s https://rest.api/posts/1337 | ||||
|   %[1]s -m PUT '{"fooo": "bäü߀r", "userId": 42}' https://rest.api/posts/1 | ||||
|   %[1]s -m DELETE https://rest.api/posts/1 | ||||
| ` | ||||
| 	flag.Usage = func() { | ||||
| 		fmt.Fprintf(flag.CommandLine.Output(), helpMsg, exeName) | ||||
| 	} | ||||
| 
 | ||||
| 	// Name, default val, help | ||||
| 	m := flag.String("m", "get", "Method for the request.") | ||||
| 
 | ||||
| 	flag.Parse() | ||||
| 	// Number of all flags (executable name included -> 0 indexed) | ||||
| 	l := len(os.Args) - flag.NArg() | ||||
| 	// Only get the arguments after all flags | ||||
| 	args := os.Args[l:] | ||||
| 	al := len(args) | ||||
| 	// Requested url/web resource | ||||
| 	resource := args[al - 1] | ||||
| 	// http client used for PUT, PATCH, DELETE | ||||
| 	client := &http.Client{} | ||||
| 
 | ||||
| 	method := strings.ToLower(*m) | ||||
| 	switch method { | ||||
| 	// ------------------------------------------------------------------------- | ||||
| 	//	GET | ||||
| 	// ------------------------------------------------------------------------- | ||||
| 	case "get": | ||||
| 		fmt.Println("GET -> " + resource + " reported:") | ||||
| 		res, err := http.Get(resource) | ||||
| 		if err != nil { | ||||
| 			log.Fatal(err) | ||||
| 		} | ||||
| 		defer res.Body.Close() | ||||
| 		// Read everything from body | ||||
| 		body, err := ioutil.ReadAll(res.Body) | ||||
| 		if err != nil { | ||||
| 			log.Fatal(err) | ||||
| 		} | ||||
| 		fmt.Printf("\n\n%s\n\n", body) | ||||
| 	// ------------------------------------------------------------------------- | ||||
| 	//	HEAD | ||||
| 	// ------------------------------------------------------------------------- | ||||
| 	case "head": | ||||
| 		fmt.Println("HEAD -> " + resource + " reported:") | ||||
| 		res, err := http.Head(resource) | ||||
| 		if err != nil { | ||||
| 			log.Fatal(err) | ||||
| 		} | ||||
| 		fmt.Printf("\n\n%s\n\n", res.Header) | ||||
| 	// ------------------------------------------------------------------------- | ||||
| 	//	POST | ||||
| 	// ------------------------------------------------------------------------- | ||||
| 	case "post": | ||||
| 		fmt.Println("POST -> " + resource + " reported:") | ||||
| 		if al != 2 { | ||||
| 			msg := `Error: Wrong number of arguments | ||||
| Usage: %s -m POST '{"mydata": "string", "nene": 31}' https://a-website.org/lele/lala | ||||
| Note: Use "" around everything but numbers, also wrap json in '' | ||||
| ` | ||||
| 			fmt.Printf(msg, exeName) | ||||
| 			os.Exit(1) | ||||
| 		} | ||||
| 		data := args[0] | ||||
| 		res, err := http.Post(resource, "application/json; charset=UTF-8", bytes.NewBufferString(data)) | ||||
| 		if err != nil { | ||||
| 			log.Fatal(err) | ||||
| 		} | ||||
| 		defer res.Body.Close() | ||||
| 		body, err := ioutil.ReadAll(res.Body) | ||||
| 		if err != nil { | ||||
| 			log.Fatal(err) | ||||
| 		} | ||||
| 		fmt.Printf("\n\n%s\n\n", body) | ||||
| 	// ------------------------------------------------------------------------- | ||||
| 	//	PUT | ||||
| 	// ------------------------------------------------------------------------- | ||||
| 	case "put": | ||||
| 		fmt.Println("PUT -> " + resource + " reported:") | ||||
| 		if al != 2 { | ||||
| 			msg := `Error: Wrong number of arguments | ||||
| Usage: %s -m PUT '{"mydata": "string", "nene": 31}' https://a-website.org/lele/lala/123 | ||||
| Note: Use "" around everything but numbers, also wrap json in '' | ||||
| ` | ||||
| 			fmt.Printf(msg, exeName) | ||||
| 			os.Exit(1) | ||||
| 		} | ||||
| 		data := args[0] | ||||
| 		req, err := http.NewRequest(http.MethodPut, resource ,bytes.NewBufferString(data)) | ||||
| 		if err != nil { | ||||
| 			log.Fatal(err) | ||||
| 		} | ||||
| 		req.Header.Set("Content-Type", "application/json; charset=UTF-8") | ||||
| 		res, err := client.Do(req) | ||||
| 		defer res.Body.Close() | ||||
| 		body, err := ioutil.ReadAll(res.Body) | ||||
| 		if err != nil { | ||||
| 			log.Fatal(err) | ||||
| 		} | ||||
| 		fmt.Printf("\n\n%s\n\n", body) | ||||
| 	// ------------------------------------------------------------------------- | ||||
| 	//	PATCH | ||||
| 	// ------------------------------------------------------------------------- | ||||
| 	case "patch": | ||||
| 		fmt.Println("PATCH -> " + resource + " reported:") | ||||
| 		if al != 2 { | ||||
| 			msg := `Error: Wrong number of arguments | ||||
| Usage: %s -m PUT '{"mydata": "string", "nene": 31}' https://a-website.org/lele/lala/123 | ||||
| Note: Use "" around everything but numbers, also wrap json in '' | ||||
| ` | ||||
| 			fmt.Printf(msg, exeName) | ||||
| 			os.Exit(1) | ||||
| 		} | ||||
| 		data := args[0] | ||||
| 		req, err := http.NewRequest(http.MethodPatch, resource ,bytes.NewBufferString(data)) | ||||
| 		if err != nil { | ||||
| 			log.Fatal(err) | ||||
| 		} | ||||
| 		req.Header.Set("Content-Type", "application/json; charset=UTF-8") | ||||
| 		res, err := client.Do(req) | ||||
| 		defer res.Body.Close() | ||||
| 		body, err := ioutil.ReadAll(res.Body) | ||||
| 		if err != nil { | ||||
| 			log.Fatal(err) | ||||
| 		} | ||||
| 		fmt.Printf("\n\n%s\n\n", body) | ||||
| 	// ------------------------------------------------------------------------- | ||||
| 	//	DELETE | ||||
| 	// ------------------------------------------------------------------------- | ||||
| 	case "delete": | ||||
| 		fmt.Println("DELETE -> " + resource + " reported:") | ||||
| 		req, err := http.NewRequest(http.MethodDelete, resource, nil) | ||||
| 		if err != nil { | ||||
| 			log.Fatal(err) | ||||
| 		} | ||||
| 		res, err := client.Do(req) | ||||
| 		defer res.Body.Close() | ||||
| 		body, err := ioutil.ReadAll(res.Body) | ||||
| 		if err != nil { | ||||
| 			log.Fatal(err) | ||||
| 		} | ||||
| 		fmt.Printf("\n\n%s\n\n", body) | ||||
| 	// ------------------------------------------------------------------------- | ||||
| 	//	DEFAULT | ||||
| 	// ------------------------------------------------------------------------- | ||||
| 	default: | ||||
| 		fmt.Println("Method unknown, use: GET, HEAD, POST, PUT, PATCH, DELETE") | ||||
| 	} | ||||
| } | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Toerd@archlinux
						Toerd@archlinux