@@ -28,10 +28,8 @@ type AppConfig struct {
2828 Functions map [string ]FunctionConfig
2929}
3030
31- var fc FunctionConfig
32-
3331func tplCommand (cmd * cobra.Command , args []string ) error {
34- err := initFunctionConfig (cmd , args )
32+ fc , err := initFunctionConfig (cmd , args )
3533 if err != nil {
3634 return err
3735 }
@@ -45,41 +43,59 @@ func tplCommand(cmd *cobra.Command, args []string) error {
4543 return nil
4644}
4745
48- func initFunctionConfig (cmd * cobra.Command , args []string ) error {
46+ func initFunctionConfig (cmd * cobra.Command , args []string ) ( FunctionConfig , error ) {
4947 config := viper .AllSettings ()
5048
5149 if len (config ) == 0 {
52- return util .HandleError (cmd , util .NO_FUNC_NAME_ERR . Err () , util .NO_CONFIG_FILE_ERR )
50+ return FunctionConfig {}, util .HandleError (cmd , util .NO_FUNC_NAME_ERR , util .NO_CONFIG_FILE_ERR )
5351 }
5452
5553 if len (args ) == 0 {
56- return util .HandleError (cmd , util .NO_FUNC_NAME_ERR . Err () , util .NO_FUNC_NAME_ERR )
54+ return FunctionConfig {}, util .HandleError (cmd , util .NO_FUNC_NAME_ERR , util .NO_FUNC_NAME_ERR )
5755 }
5856
5957 var appConfig AppConfig
6058 err := mapstructure .Decode (config , & appConfig .Functions )
6159 if err != nil {
62- return util .HandleError (cmd , err , util .INVALID_CONFIG_ERR )
60+ return FunctionConfig {}, util .HandleError (cmd , err , util .INVALID_CONFIG_ERR )
6361 }
6462
6563 funcConfig , ok := appConfig .Functions [args [0 ]]
6664 if ! ok {
67- return util .HandleError (cmd , util .NO_FUNC_FOUND_ERR . Err () , util .NO_FUNC_FOUND_ERR )
65+ return FunctionConfig {}, util .HandleError (cmd , util .NO_FUNC_FOUND_ERR , util .NO_FUNC_FOUND_ERR )
6866 }
6967
7068 if funcConfig .Url == "" {
71- return util .HandleError (cmd , util .NO_URL_ERR . Err () , util .NO_URL_ERR )
69+ return FunctionConfig {}, util .HandleError (cmd , util .NO_URL_ERR , util .NO_URL_ERR )
7270 }
7371
74- fc = funcConfig
75- return nil
72+ return funcConfig , nil
7673}
7774
78- func (fc * FunctionConfig ) makeHttpCall (jsonData []byte , cmd * cobra.Command ) ([]byte , error ) {
75+ func (fc * FunctionConfig ) handleFunc (cmd * cobra.Command ) (string , error ) {
76+ jsonData , err := fc .getJSONData (cmd )
77+ if err != nil {
78+ return "" , err
79+ }
80+
81+ response , err := fc .makeHttpCall (jsonData , cmd )
82+ if err != nil {
83+ return "" , err
84+ }
85+
86+ output , err := util .GetOutputField (response , fc .Output )
87+ if err != nil {
88+ return "" , util .HandleError (cmd , err , util .FAILED_TO_PARSE_OUTPUT_FIELD )
89+ }
90+
91+ return output , nil
92+ }
93+
94+ func (fc * FunctionConfig ) makeHttpCall (jsonData []byte , cmd * cobra.Command ) (map [string ]interface {}, error ) {
7995 url := fc .replaceEnvVariables (fc .Url )
8096 req , err := http .NewRequest ("POST" , url , bytes .NewBuffer (jsonData ))
8197 if err != nil {
82- return nil , err
98+ return nil , util . HandleError ( cmd , err , util . INIT_HTTP_POST_REQUEST_FAILED )
8399 }
84100
85101 for _ , header := range fc .Header {
@@ -94,56 +110,38 @@ func (fc *FunctionConfig) makeHttpCall(jsonData []byte, cmd *cobra.Command) ([]b
94110 client := & http.Client {}
95111 resp , err := client .Do (req )
96112 if err != nil {
97- return nil , err
113+ return nil , util . HandleError ( cmd , err , util . SEND_HTTP_POST_REQUEST_FAILED )
98114 }
99115
100116 body , err := ioutil .ReadAll (resp .Body )
101117 if err != nil {
102- return nil , err
118+ return nil , util . HandleError ( cmd , err , util . READ_RESPONSE_BODY_FAILED )
103119 }
104120 defer resp .Body .Close ()
105121
106122 // Check if the request was successful when a status code is provided
107123 if fc .StatusCode != 0 && resp .StatusCode != fc .StatusCode {
108124 err := fmt .Errorf ("Request failed with status code %d, Body: %s" , resp .StatusCode , string (body ))
109- util .HandleError (cmd , err , util .INVALID_RESP_CODE )
110- }
111- return body , nil
112- }
113-
114- func (fc * FunctionConfig ) handleFunc (cmd * cobra.Command ) (string , error ) {
115- jsonData , err := fc .getJSONData ()
116- if err != nil {
117- return "" , util .HandleError (cmd , err , util .FAILED_TO_GET_DATA )
118- }
119-
120- body , err := fc .makeHttpCall (jsonData , cmd )
121- if err != nil {
122- return "" , util .HandleError (cmd , err , util .FAILED_TO_MAKE_HTTP_CALL )
125+ return nil , util .HandleError (cmd , err , util .INVALID_RESP_CODE )
123126 }
124127
125128 responseData , err := util .ParseJSONResponse (body )
126129 if err != nil {
127- return "" , util .HandleError (cmd , err , util .FAILED_TO_PARSE_JSON )
130+ return nil , util .HandleError (cmd , err , util .FAILED_TO_PARSE_JSON_RESPONSE )
128131 }
129132
130- output , err := util .GetOutputField (responseData , fc .Output )
131- if err != nil {
132- return "" , util .HandleError (cmd , err , util .FAILED_TO_PARSE_OUTPUT_FIELD )
133- }
134-
135- return output , nil
133+ return responseData , nil
136134}
137135
138- func (fc * FunctionConfig ) getJSONData () ([]byte , error ) {
136+ func (fc * FunctionConfig ) getJSONData (cmd * cobra. Command ) ([]byte , error ) {
139137 jsonData , err := json .Marshal (fc .Data )
140138 if err != nil {
141- return nil , err
139+ return nil , util . HandleError ( cmd , err , util . MARSHAL_DATA_FAILED )
142140 }
143141
144142 jsonData , err = util .ReplaceStdIn (jsonData )
145143 if err != nil {
146- return nil , err
144+ return nil , util . HandleError ( cmd , err , util . REPLACE_STDIN_FAILED )
147145 }
148146
149147 return jsonData , nil
0 commit comments