@@ -17,10 +17,11 @@ variant_t* ifttt_trigger_event(service_method_t* method, va_list args);
17
17
void service_create (service_t * * service , int service_id )
18
18
{
19
19
SERVICE_INIT (IFTTT , "Send and receive IFTTT triggers" );
20
- SERVICE_ADD_METHOD (Trigger , ifttt_trigger_event , 1 , "Trigger IFTTT event. Arg: Event, 3 Values can be provided as argument stack." );
20
+ SERVICE_ADD_METHOD (Trigger , ifttt_trigger_event , 1 , "Trigger IFTTT Maker event. Arg: Event, 3 Values can be provided as argument stack." );
21
21
22
22
(* service )-> get_config_callback = ifttt_cli_get_config ;
23
23
DT_IFTTT = service_id ;
24
+ ifttt_key = NULL ;
24
25
}
25
26
26
27
void service_cli_create (cli_node_t * parent_node )
@@ -30,35 +31,39 @@ void service_cli_create(cli_node_t* parent_node)
30
31
31
32
variant_t * ifttt_trigger_event (service_method_t * method , va_list args )
32
33
{
33
- variant_t * event_name = va_arg (args , variant_t * );
34
- service_args_stack_t * service_stack = service_args_stack_get ("IFTTT.Trigger" );
35
- hash_table_t * value_table = (hash_table_t * )service_stack -> data_storage ;
36
-
37
34
if (NULL == ifttt_key )
38
35
{
39
36
LOG_ERROR (DT_IFTTT , "Key not set" );
40
37
return variant_create_bool (false);
41
38
}
42
39
40
+ variant_t * event_name = va_arg (args , variant_t * );
41
+ service_args_stack_t * service_stack = service_args_stack_get ("IFTTT.Trigger" );
42
+ LOG_INFO (DT_IFTTT , "Event %s triggered" , variant_get_string (event_name ));
43
+
43
44
// Create JSON payload
44
45
json_object * payload_obj = json_object_new_object ();
45
- char * json_keys [3 ] = {"value1" , "value2" , "value3" };
46
46
47
-
48
- for (int i = 0 ; i < 3 ; i ++ )
47
+ if (NULL != service_stack )
49
48
{
50
- variant_t * value_var ;
51
- uint32_t key = crc32 (0 , json_keys [i ], strlen (json_keys [i ]));
52
- if ((value_var = variant_hash_get (value_table , key )) != NULL )
49
+ hash_table_t * value_table = (hash_table_t * )service_stack -> data_storage ;
50
+ char * json_keys [3 ] = {"value1" , "value2" , "value3" };
51
+
52
+ for (int i = 0 ; i < 3 ; i ++ )
53
53
{
54
- json_object * value_obj = json_object_new_string (variant_get_string (value_var ));
55
- json_object_object_add (payload_obj , json_keys [i ], value_obj );
54
+ variant_t * value_var ;
55
+ uint32_t key = crc32 (0 , json_keys [i ], strlen (json_keys [i ]));
56
+ if ((value_var = variant_hash_get (value_table , key )) != NULL )
57
+ {
58
+ json_object * value_obj = json_object_new_string (variant_get_string (value_var ));
59
+ json_object_object_add (payload_obj , json_keys [i ], value_obj );
60
+ }
56
61
}
62
+
63
+ const char * payload_str = json_object_to_json_string_ext (payload_obj , JSON_C_TO_STRING_SPACED );
64
+ LOG_ADVANCED (DT_IFTTT , "Creating payload %s" , payload_str );
57
65
}
58
66
59
- const char * payload_str = json_object_to_json_string_ext (payload_obj , JSON_C_TO_STRING_SPACED | JSON_C_TO_STRING_PRETTY );
60
- LOG_ADVANCED (DT_IFTTT , "Creating payload %s" , payload_str );
61
-
62
67
CURL * curl_handle ;
63
68
CURLcode res ;
64
69
@@ -85,7 +90,7 @@ variant_t* ifttt_trigger_event(service_method_t* method, va_list args)
85
90
86
91
LOG_DEBUG (DT_IFTTT , "Trigger URL is %s" , urlbuf );
87
92
curl_easy_setopt (curl_handle , CURLOPT_URL , urlbuf );
88
- curl_easy_setopt (curl_handle , CURLOPT_POSTFIELDS , payload_str );
93
+ curl_easy_setopt (curl_handle , CURLOPT_POSTFIELDS , json_object_to_json_string_ext ( payload_obj , JSON_C_TO_STRING_SPACED ) );
89
94
90
95
struct curl_slist * headers = NULL ;
91
96
headers = curl_slist_append (headers , "Content-Type: application/json" );
@@ -103,12 +108,14 @@ variant_t* ifttt_trigger_event(service_method_t* method, va_list args)
103
108
}
104
109
else
105
110
{
106
- LOG_DEBUG (DT_IFTTT , "Mail sent successfully" );
111
+ LOG_ADVANCED (DT_IFTTT , "Event %s triggered successfully" , variant_get_string ( event_name ) );
107
112
}
108
113
109
114
/* cleanup curl stuff */
110
115
curl_easy_cleanup (curl_handle );
111
116
}
112
117
118
+ json_object_put (payload_obj );
119
+
113
120
return variant_create_bool (true);
114
121
}
0 commit comments