コード例 #1
0
        public async Task <ITriggerData> BindAsync(object value, ValueBindingContext context)
        {
            HttpRequestMessage request        = value as HttpRequestMessage;
            WebHookContext     webHookContext = value as WebHookContext;

            if (request == null && webHookContext != null)
            {
                request = webHookContext.Request;
            }

            if (request == null && value != null && value.GetType() == typeof(string))
            {
                // We've received an invoke string (e.g. from a Dashboard replay/invoke
                // so convert to a request
                request = FromInvokeString((string)value);
            }

            if (webHookContext == null)
            {
                webHookContext = new WebHookContext(request);
            }

            IValueProvider valueProvider = null;
            IReadOnlyDictionary <string, object> bindingData = null;
            string invokeString = ToInvokeString(request);

            if (_isUserTypeBinding)
            {
                valueProvider = await CreateUserTypeValueProvider(request, invokeString);

                if (_bindingDataProvider != null)
                {
                    // the provider might be null if the Type is invalid, or if the Type
                    // has no public properties to bind to
                    bindingData = _bindingDataProvider.GetBindingData(valueProvider.GetValue());
                }
            }
            else
            {
                valueProvider = new WebHookRequestValueBinder(_parameter, webHookContext, invokeString);
            }

            return(new TriggerData(valueProvider, bindingData));
        }
        public async Task<ITriggerData> BindAsync(object value, ValueBindingContext context)
        {
            HttpRequestMessage request = value as HttpRequestMessage;
            if (request == null && value != null && value.GetType() == typeof(string))
            {
                // We've received an invoke string (e.g. from a Dashboard replay/invoke
                // so convert to a request
                request = FromInvokeString((string)value);
            }

            IValueProvider valueProvider = null;
            IReadOnlyDictionary<string, object> bindingData = null;
            string invokeString = ToInvokeString(request);
            if (_isUserTypeBinding)
            {
                valueProvider = await CreateUserTypeValueProvider(request, invokeString);
                if (_bindingDataProvider != null)
                {
                    // the provider might be null if the Type is invalid, or if the Type
                    // has no public properties to bind to
                    bindingData = _bindingDataProvider.GetBindingData(valueProvider.GetValue());
                }    
            }
            else
            {
                valueProvider = new WebHookRequestValueBinder(_parameter, request, invokeString);
            }

            return new TriggerData(valueProvider, bindingData);
        }