Exemplo n.º 1
0
/* begin implementations */
static json_object *jenc_create_object(struct _v *value) {
	json_object *object;
	/* if stored value is string is starting with { and ending with }, 
	   then create a json object from it. */
	if (value->slen == 0){
		object = json_object_new_double(value->val.f);
	}
	else if (value->val.s[0] == '{' && value->val.s[strlen(value->val.s) - 1] == '}') {
		char *parsed_string;
		size_t memsize = 0;
		parsed_string = string_remove_backslashes(value->val.s, &memsize);
		object = json_tokener_parse(parsed_string);
		string_free(parsed_string, &memsize);
	} else {
		object = json_object_new_string(value->val.s);
	}
	return object;
}
Exemplo n.º 2
0
void rest_command(t_rest *const rest, const t_symbol *const sel, const int argc, t_atom *argv) {
	const char *const req_type = sel->s_name;
	char path[MAXPDSTRING];

	if (rest->common.locked) {
		post("rest object is performing request and locked.");
		return;
	}

	memset(rest->common.req_type, 0x00, REQUEST_TYPE_LEN);
	if (argc == 0) {
		return;
	}

	rest->common.locked = 1;
	strncpy(rest->common.req_type, req_type, REQUEST_TYPE_LEN - 1);
	if (ctw_check_request_type(rest->common.req_type) != 0){
		pd_error(rest, "Request method %s not supported.", rest->common.req_type);
		rest->common.locked = 0;
		return;
	}
	atom_string(argv, path, MAXPDSTRING);
	rest->common.complete_url = string_create(&rest->common.complete_url_len,
			rest->common.base_url_len + strlen(path) + 1);
	if (rest->common.base_url != NULL) {
		strcpy(rest->common.complete_url, rest->common.base_url);
	}
	strcat(rest->common.complete_url, path);
	if (argc > 1) {
		char parameters[MAXPDSTRING];
		atom_string(argv + 1, parameters, MAXPDSTRING);
		if (strlen(parameters)) {
			char *cleaned_parameters;
			size_t memsize = 0;

			cleaned_parameters = string_remove_backslashes(parameters, &memsize);
			rest->common.parameters = string_create(&rest->common.parameters_len, memsize + 1);
			strcpy(rest->common.parameters, cleaned_parameters);
			freebytes(cleaned_parameters, memsize);
		}
	}
	ctw_thread_exec((struct _ctw *)rest, ctw_exec);
}