@@ -25,6 +25,25 @@ const (
2525 delete = "DELETE"
2626)
2727
28+ const (
29+ helpCmd = `Use "coap-cli --help" for help.`
30+ helpMsg = `
31+ Usage: coap-cli <method> <URL> [options]
32+ mathod: get, put, post or delete
33+ -o observe option - only valid with GET request (default: false)
34+ -auth auth option sent as URI Query (default: "")
35+ -h host (default: "localhost")
36+ -p port (default: "5683")
37+ -d data to be sent in POST or PUT (default: "")
38+ -cf content format (default: 50 - JSON format))
39+
40+ Examples:
41+ coap-cli get channels/0bb5ba61-a66e-4972-bab6-26f19962678f/messages/subtopic -auth 1e1017e6-dee7-45b4-8a13-00e6afeb66eb -o
42+ coap-cli post channels/0bb5ba61-a66e-4972-bab6-26f19962678f/messages/subtopic -auth 1e1017e6-dee7-45b4-8a13-00e6afeb66eb -d "hello world"
43+ coap-cli post channels/0bb5ba61-a66e-4972-bab6-26f19962678f/messages/subtopic -auth 1e1017e6-dee7-45b4-8a13-00e6afeb66eb -d "hello world" -h 0.0.0.0 -p 1234
44+ `
45+ )
46+
2847func parseCode (code string ) (codes.Code , error ) {
2948 switch code {
3049 case get :
@@ -47,26 +66,35 @@ func printMsg(m *pool.Message) {
4766
4867func main () {
4968 if len (os .Args ) < 2 {
50- log .Fatal ("Message code must be GET, PUT, POST or DELETE" )
69+ log .Fatal (helpCmd )
70+ }
71+ help := strings .ToLower (os .Args [1 ])
72+ if help == "-h" || help == "--help" {
73+ log .Println (helpMsg )
74+ os .Exit (0 )
5175 }
76+
5277 code , err := parseCode (strings .ToUpper (os .Args [1 ]))
5378 if err != nil {
54- log .Fatal ( "error: " , err )
79+ log .Fatalf ( "Can't read request code: %s \n %s " , err , helpCmd )
5580 }
81+
5682 if len (os .Args ) < 3 {
57- log .Fatal ( "Please enter valid CoAP URL" )
83+ log .Fatalf ( "CoAP URL must not be empty. \n %s" , helpCmd )
5884 }
5985 path := os .Args [2 ]
60- os .Args = os .Args [2 :]
86+ if strings .HasPrefix (path , "-" ) {
87+ log .Fatalf ("Please enter a valid CoAP URL.\n %s" , helpCmd )
88+ }
6189
90+ os .Args = os .Args [2 :]
6291 o := flag .Bool ("o" , false , "Observe" )
6392 h := flag .String ("h" , "localhost" , "Host" )
6493 p := flag .String ("p" , "5683" , "Port" )
6594 // Default type is JSON.
6695 cf := flag .Int ("q" , 50 , "Content format" )
6796 d := flag .String ("d" , "" , "Message data" )
6897 a := flag .String ("auth" , "" , "Auth token" )
69-
7098 flag .Parse ()
7199
72100 client , err := coap .New (* h + ":" + * p )
0 commit comments