github.com/hy3/cuto@v0.9.8-0.20160830082821-aa6652f877b7/message/response.go (about) 1 // Copyright 2015 unirita Inc. 2 // Created 2015/04/10 honda 3 4 package message 5 6 import ( 7 "encoding/json" 8 "fmt" 9 ) 10 11 // レスポンスメッセージ送信元servantのバージョン 12 var ServantVersion string 13 14 type Response struct { 15 Type string `json:"type"` 16 Version string `json:"version"` 17 NID int `json:"nid"` 18 JID string `json:"jid"` 19 RC int `json:"rc"` 20 Stat int `json:"stat"` 21 Detail string `json:"detail"` 22 Var string `json:"var"` 23 St string `json:"st"` 24 Et string `json:"et"` 25 JoblogFile string `json:"joblogfile"` 26 } 27 28 const responseMessageType = "response" 29 30 // ジョブ実行結果JSONメッセージをパースし、Responseオブジェクトのメンバをセットする。 31 // 32 // param : メッセージ内容の文字列。 33 func (r *Response) ParseJSON(message string) error { 34 byteMessage := []byte(message) 35 36 err := json.Unmarshal(byteMessage, r) 37 if err != nil { 38 return err 39 } 40 41 if r.Type != responseMessageType { 42 return fmt.Errorf("Invalid message type.") 43 } 44 45 return nil 46 } 47 48 // Responseオブジェクトの値を元に、ジョブ実行結果JSONメッセージを生成する 49 // 50 // return : JSONフォーマット整形後の文字列。 51 func (r Response) GenerateJSON() (string, error) { 52 r.Type = responseMessageType 53 r.Version = ServantVersion 54 byteMessage, err := json.Marshal(r) 55 if err != nil { 56 return ``, err 57 } 58 59 return string(byteMessage), nil 60 }