Skip to content

Commit 99476dc

Browse files
committed
IFTTT improvements and some bug fixes
1 parent 60f28b6 commit 99476dc

File tree

4 files changed

+35
-25
lines changed

4 files changed

+35
-25
lines changed

libZaeUtil/service_args.c

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -59,12 +59,15 @@ void service_args_stack_remove(const char* service_name, uint
5959

6060
service_args_stack_t* service_args_stack_get(const char* service_name)
6161
{
62-
uint32_t key = crc32(0, service_name, strlen(service_name));
63-
variant_t* stack_var = variant_hash_get(service_stack_table, key);
64-
65-
if(NULL != stack_var)
62+
if(NULL != service_stack_table)
6663
{
67-
return (service_args_stack_t*)variant_get_ptr(stack_var);
64+
uint32_t key = crc32(0, service_name, strlen(service_name));
65+
variant_t* stack_var = variant_hash_get(service_stack_table, key);
66+
67+
if(NULL != stack_var)
68+
{
69+
return (service_args_stack_t*)variant_get_ptr(stack_var);
70+
}
6871
}
6972

7073
return NULL;

libZaeUtil/vty.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -280,8 +280,8 @@ void vty_erase_char(vty_t* vty)
280280
}
281281
else
282282
{
283-
vty->buffer[vty->buf_size] = 0;
284283
vty->buf_size--;
284+
vty->buffer[vty->buf_size] = 0;
285285
vty->cursor_pos = vty->buf_size;
286286

287287
if(NULL != vty->erase_char_cb)

services/IFTTT/IFTTT.c

Lines changed: 25 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,11 @@ variant_t* ifttt_trigger_event(service_method_t* method, va_list args);
1717
void service_create(service_t** service, int service_id)
1818
{
1919
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.");
2121

2222
(*service)->get_config_callback = ifttt_cli_get_config;
2323
DT_IFTTT = service_id;
24+
ifttt_key = NULL;
2425
}
2526

2627
void service_cli_create(cli_node_t* parent_node)
@@ -30,35 +31,39 @@ void service_cli_create(cli_node_t* parent_node)
3031

3132
variant_t* ifttt_trigger_event(service_method_t* method, va_list args)
3233
{
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-
3734
if(NULL == ifttt_key)
3835
{
3936
LOG_ERROR(DT_IFTTT, "Key not set");
4037
return variant_create_bool(false);
4138
}
4239

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+
4344
// Create JSON payload
4445
json_object* payload_obj = json_object_new_object();
45-
char* json_keys[3] = {"value1", "value2", "value3"};
4646

47-
48-
for(int i = 0; i < 3; i++)
47+
if(NULL != service_stack)
4948
{
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++)
5353
{
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+
}
5661
}
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);
5765
}
5866

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-
6267
CURL *curl_handle;
6368
CURLcode res;
6469

@@ -85,7 +90,7 @@ variant_t* ifttt_trigger_event(service_method_t* method, va_list args)
8590

8691
LOG_DEBUG(DT_IFTTT, "Trigger URL is %s", urlbuf);
8792
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));
8994

9095
struct curl_slist *headers=NULL;
9196
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)
103108
}
104109
else
105110
{
106-
LOG_DEBUG(DT_IFTTT, "Mail sent successfully");
111+
LOG_ADVANCED(DT_IFTTT, "Event %s triggered successfully", variant_get_string(event_name));
107112
}
108113

109114
/* cleanup curl stuff */
110115
curl_easy_cleanup(curl_handle);
111116
}
112117

118+
json_object_put(payload_obj);
119+
113120
return variant_create_bool(true);
114121
}

socket_io.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ char* socket_read_cb(vty_t* vty)
6161

6262
if(recv(socket, ch, 1, 0) > 0)
6363
{
64-
LOG_DEBUG(SocketIO, "Socket recv: %s (0x%x)", ch, ch[0]);
64+
LOG_DEBUG(SocketIO, "Socket recv: %c (0x%x), buffer: %s, cursor: %d", ch[0], ch[0], vty->buffer, vty->cursor_pos);
6565
if(ch[0] == '?')
6666
{
6767
cli_command_describe_norl(vty);

0 commit comments

Comments
 (0)