void pnc_ops_parse_callback(enum pubnub_trans method_name, enum pubnub_res res, pubnub_t *pn) { if (res == PNR_HTTP_ERROR) { printf("%d HTTP error / code: %d\n", method_name, pubnub_last_http_code(pn)); return; } if (res == PNR_STARTED) { printf("%d returned unexpected: PNR_STARTED(%d)\n", method_name, res); return; } if (PNR_OK == res) { const char *msg; puts("***************************"); printf("Result for %d: success!\n", method_name); puts("***************************"); for (;;) { msg = pubnub_get(pn); if (NULL == msg) { break; } puts(msg); } puts("***************************"); } else { printf("%d failed, error code %d: %s !\n", method_name, res, pubnub_res_2_string(res)); } }
} TEST_ENDDEF TEST_DEF(handling_errors_from_pubnub) { static pubnub_t *pbp; pbp = pubnub_alloc(); TEST_DEFER(pubnub_free, pbp); pubnub_init(pbp, g_pubkey, g_keysub); expect_pnr(pubnub_publish(pbp, "ch", "\"Test "), PNR_STARTED); await_timed(5*SECONDS, PNR_PUBLISH_FAILED, pbp); expect(400 == pubnub_last_http_code(pbp)); expect(pubnub_parse_publish_result(pubnub_last_publish_result(pbp)) == PNPUB_INVALID_JSON); expect_pnr(pubnub_publish(pbp, ",", "\"Test \""), PNR_STARTED); await_timed(5*SECONDS, PNR_PUBLISH_FAILED, pbp); expect(400 == pubnub_last_http_code(pbp)); expect(pubnub_parse_publish_result(pubnub_last_publish_result(pbp)) == PNPUB_INVALID_CHAR_IN_CHAN_NAME); TEST_POP_DEFERRED; } TEST_ENDDEF
void pnc_ops_parse_response(const char *method_name, enum pubnub_res res, pubnub_t *pn) { const char *msg; if (res != PNR_STARTED) { printf("%s returned error %d: %s\n", method_name, res, pubnub_res_2_string(res)); return; } res = pubnub_await(pn); if (res == PNR_HTTP_ERROR) { printf("%s HTTP error / code: %d\n", method_name, pubnub_last_http_code(pn)); return; } if (res == PNR_STARTED) { printf("%s returned unexpected: PNR_STARTED(%d)\n", method_name, res); return; } if (PNR_OK == res) { puts("\n****************************************"); printf("Result for %s: success!\n", method_name); puts("****************************************"); for (;;) { msg = pubnub_get(pn); if (NULL == msg) { break; } puts(msg); } puts("****************************************"); } else { printf("%s failed! error code %d: %s\n", method_name, res, pubnub_res_2_string(res)); } }