From dc027fb324fcf471212647c5bcbd3f2ea9ebc3ec Mon Sep 17 00:00:00 2001 From: zhaopeng053 Date: Thu, 24 Dec 2020 15:30:13 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9EgetMediaData=E6=96=B9?= =?UTF-8?q?=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- wxwork_finance_sdk.c | 38 +++++++++++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/wxwork_finance_sdk.c b/wxwork_finance_sdk.c index 3e72b53..c4a4464 100644 --- a/wxwork_finance_sdk.c +++ b/wxwork_finance_sdk.c @@ -208,6 +208,41 @@ PHP_METHOD(WxworkFinanceSdk, downloadMedia) RETURN_TRUE; } +PHP_METHOD(WxworkFinanceSdk, getMediaData) +{ + zend_string *sdk_filedid, *index_buf; + + if (zend_parse_parameters(ZEND_NUM_ARGS(), "SS", &sdk_filedid, &index_buf) == FAILURE) { + return; + } + + zval *this = getThis(); + zend_class_entry *ce = Z_OBJCE_P(this); + + zval *proxy_host_zval = zend_read_property(ce, this, "_proxy_host", sizeof("_proxy_host") - 1, 0, NULL); + zval *proxy_password_zval = zend_read_property(ce, this, "_proxy_password", sizeof("_proxy_password") - 1, 0, NULL); + zval *timeout_zval = zend_read_property(ce, this, "_timeout", sizeof("_timeout") - 1, 0, NULL); + + MediaData_t *media_data = NewMediaData(); + if (NULL == media_data) { + zend_error(E_ERROR, "There is not enough memory!"); + return; + } + + int ret = GetMediaData(sdk, ZSTR_VAL(index_buf), ZSTR_VAL(sdk_filedid), Z_STRVAL_P(proxy_host_zval), Z_STRVAL_P(proxy_password_zval), zval_get_long(timeout_zval), media_data); + if (0 != ret) { + zend_throw_exception(wxwork_finance_sdk_exception_ce, "GetMediaData error", ret); + return; + } + + array_init(return_value); + add_assoc_string(return_value, "data", GetData(media_data)); + add_assoc_string(return_value, "nextIndex", GetOutIndexBuf(media_data)); + add_assoc_bool(return_value, "isFinished", IsMediaDataFinish(media_data) == 1 ? 1 : 0); + + FreeMediaData(media_data); +} + /* }}} */ static const zend_function_entry wxwork_finance_sdk_class_methods[] = { @@ -215,6 +250,7 @@ static const zend_function_entry wxwork_finance_sdk_class_methods[] = { PHP_ME(WxworkFinanceSdk, getChatData, NULL, ZEND_ACC_PUBLIC) PHP_ME(WxworkFinanceSdk, decryptData, NULL, ZEND_ACC_PUBLIC) PHP_ME(WxworkFinanceSdk, downloadMedia, NULL, ZEND_ACC_PUBLIC) + PHP_ME(WxworkFinanceSdk, getMediaData, NULL, ZEND_ACC_PUBLIC) PHP_FE_END }; @@ -336,7 +372,7 @@ PHP_RINIT_FUNCTION(wxwork_finance_sdk) PHP_RSHUTDOWN_FUNCTION(wxwork_finance_sdk) { DestroySdk(sdk); - + return SUCCESS; } /* }}} */