/// <summary> /// Command function for evaluate operation. Constructs a query string and makes a call to the API /// If successful, it will get a <see cref="EvaluateResponse"/> in response, which will be parsed /// and displayed in the UI /// </summary> /// <param name="obj"></param> private async void Evaluate(object obj) { string queryString = $"expr={QueryExpression}&attributes=Id,Ti,Y,D,CC,AA.AuN"; //queryString += "&model=latest"; //queryString += "&count=10"; //queryString += "&offset=0";5 //queryString += "&orderby=name:asc"; EvaluateResponse response = await _webRequest.MakeRequest <object, EvaluateResponse>(HttpMethod.Get, $"evaluate?{queryString}"); if (response == null || response.entities.Length == 0) { return; } StringBuilder sb = new StringBuilder(); sb.AppendFormat("Expression {0} returned {1} entities\n\n", response.expr, response.entities.Length); foreach (Entity entity in response.entities) { sb.AppendFormat("Paper title: {0}\n\tDate: {1}\n", entity.Ti, entity.D); sb.Append("Authors:\n"); foreach (AA author in entity.AA) { sb.AppendFormat("\t{0}\n", author.AuN); } sb.Append("\n"); } Results = sb.ToString(); }
public EvaluateResponse GetEvaluation(DebugVariableLinkCollection collection, IDebugVariable debugVariable) { // Return null if there is no value. if (debugVariable.Value == null) { return(EvaluateResponse.Empty); } // Create the evaluation response. EvaluateResponse response = new EvaluateResponse(collection, debugVariable); // Array if (debugVariable.Value is CsvArray array) { response.indexedVariables = array.Values.Length; response.variablesReference = IDebugVariable.ApplyReference(collection, debugVariable); } // Vector else if (debugVariable.Value is CsvVector) { response.namedVariables = 3; response.variablesReference = IDebugVariable.ApplyReference(collection, debugVariable); } return(response); }
/// <summary> /// Called when client wishes to eval some C# code /// </summary> /// <param name="request"></param> /// <returns></returns> public EvaluateResponse Post(EvaluateRequest request) { //validate request new EvaluateRequestValidation() .ValidateAndThrow(request); EvaluateResponse response = null; //carry out the strategy to evaluate code new EvaluateRequestStrategy( request, evaluateResponse => { response = evaluateResponse; }).Execute(); //if the response isn't called, //something is wrong. if (response == null) { throw new InvalidOperationException( "Response is null" ); } return(response); }
public VSCodeEvaluationSource(VSCodeDebuggerSession session, string expression, EvaluateResponse response, int frameId) : base(session, 0, frameId) { this.expression = expression; this.response = response; // FIXME: can we use PresentationHint.Attributes == VariablePresentationHint.AttributesValue.FailedEvaluation instead? if (response.Type == null) { if (IsCSError(118, "is a namespace but is used like a variable", response.Result, out string ns)) { Flags = ObjectValueFlags.Namespace; display = name = value = ns; type = "<namespace>"; return; } if (IsCSError(119, "is a type, which is not valid in the given context", response.Result, out string vtype)) { if (expression.StartsWith("global::", StringComparison.Ordinal)) { vtype = expression.Substring("global::".Length); } display = name = value = ObjectValueAdaptor.GetCSharpTypeName(vtype); Flags = ObjectValueFlags.Type; type = "<type>"; return; } } var actualType = GetActualTypeName(response.Type); Flags = GetFlags(response.PresentationHint); type = actualType.Replace(", ", ","); name = expression; if (actualType != "void") { value = GetFixedValue(response.Result, type, actualType); } else { value = "No return value."; } display = response.Result; if (name[0] == '[') { Flags |= ObjectValueFlags.ArrayElement; } if (type == null || value == $"'{name}' threw an exception of type '{type}'") { Flags = ObjectValueFlags.Error; } }
public void GetResultAsString(string caller_trace, Int64 frameId, string expr, out string strRes) { EvaluateRequest evaluateRequest = new EvaluateRequest(); evaluateRequest.arguments.expression = expr; evaluateRequest.arguments.frameId = frameId; var ret = VSCodeDebugger.Request(evaluateRequest); Assert.True(ret.Success, @"__FILE__:__LINE__" + "\n" + caller_trace); EvaluateResponse evaluateResponse = JsonConvert.DeserializeObject <EvaluateResponse>(ret.ResponseStr); strRes = evaluateResponse.body.result; }
public static string CalcExpression(Int64?frameId, string Expression) { EvaluateRequest evaluateRequest = new EvaluateRequest(); evaluateRequest.arguments.expression = Expression; evaluateRequest.arguments.frameId = frameId; var ret = VSCodeDebugger.Request(evaluateRequest); Assert.True(ret.Success); EvaluateResponse evaluateResponse = JsonConvert.DeserializeObject <EvaluateResponse>(ret.ResponseStr); return(evaluateResponse.body.result); }
public void CheckErrorAtRequest(string caller_trace, Int64 frameId, string Expression, string errMsgStart) { EvaluateRequest evaluateRequest = new EvaluateRequest(); evaluateRequest.arguments.expression = Expression; evaluateRequest.arguments.frameId = frameId; var ret = VSCodeDebugger.Request(evaluateRequest); Assert.False(ret.Success, @"__FILE__:__LINE__" + "\n" + caller_trace); EvaluateResponse evaluateResponse = JsonConvert.DeserializeObject <EvaluateResponse>(ret.ResponseStr); Assert.True(evaluateResponse.message.StartsWith(errMsgStart), @"__FILE__:__LINE__" + "\n" + caller_trace); }
public void CalcAndCheckExpression(string caller_trace, Int64?frameId, string ExpectedResult, string Expression) { EvaluateRequest evaluateRequest = new EvaluateRequest(); evaluateRequest.arguments.expression = Expression; evaluateRequest.arguments.frameId = frameId; var ret = VSCodeDebugger.Request(evaluateRequest); Assert.True(ret.Success, @"__FILE__:__LINE__" + "\n" + caller_trace); EvaluateResponse evaluateResponse = JsonConvert.DeserializeObject <EvaluateResponse>(ret.ResponseStr); Assert.Equal(ExpectedResult, evaluateResponse.body.result, @"__FILE__:__LINE__" + "\n" + caller_trace); }
public EvaluateResponse GetEvaluation(DebugVariableLinkCollection collection, IDebugVariable debugVariable) { // Return null if there is no value. if (debugVariable.Value == null) { return(EvaluateResponse.Empty); } // Create the evaluation response. IDebugVariable.ApplyReference(collection, debugVariable); EvaluateResponse response = new EvaluateResponse(collection, debugVariable); response.namedVariables = Class.ObjectVariables.Count; return(response); }
protected override void HandleEvaluateRequestAsync(IRequestResponder <EvaluateArguments, EvaluateResponse> responder) { EvaluateResponse evalResponse = null; if (responder.Arguments.Expression.StartsWith(VARIABLE_EVAL_TYPE, StringComparison.Ordinal)) { var id = int.Parse(responder.Arguments.Expression.Substring(VARIABLE_EVAL_TYPE.Length), CultureInfo.InvariantCulture); if (_variableEvaluationValues.TryGetValue(id, out var evalResult)) { evalResponse = new EvaluateResponse { Result = evalResult }; } } responder.SetResponse(evalResponse ?? new EvaluateResponse()); }
internal SetExpressionResponse HandleSetExpressionRequest(SetExpressionArguments arguments) { EvaluateResponse response = this.Evaluate(arguments.Expression, arguments.Value, arguments.Format); return(new SetExpressionResponse(value: response.Result)); }