/// <inheritdoc /> protected override ClarifaiOutput <T> Unmarshaller(dynamic jsonObject) { if (jsonObject.outputs != null && jsonObject.outputs.Count == 1) { var jsonOutput = jsonObject.outputs[0]; return(ClarifaiOutput <T> .Deserialize(HttpClient, jsonOutput)); } throw new ClarifaiException("The response does not contain exactly one output."); }
/// <inheritdoc /> protected override ClarifaiOutput <T> Unmarshaller(dynamic jsonObject) { if (jsonObject.outputs != null && jsonObject.outputs.Count == 1) { var jsonOutput = jsonObject.outputs[0]; return(ClarifaiOutput <T> .Deserialize(jsonOutput)); } throw new ClarifaiException("A single output is not present in the API"); }
/// <inheritdoc /> protected override List <ClarifaiOutput <T> > Unmarshaller(dynamic jsonObject) { var outputs = new List <ClarifaiOutput <T> >(); foreach (var jsonOutput in jsonObject.outputs) { outputs.Add(ClarifaiOutput <T> .Deserialize(HttpClient, jsonOutput)); } return(outputs); }
/// <summary> /// Deserializes the object out of a JSON dynamic object. /// </summary> /// <param name="httpClient">the HTTP client</param> /// <param name="jsonObject">the JSON object</param> /// <returns>the deserialized object</returns> public static WorkflowResult Deserialize(IClarifaiHttpClient httpClient, dynamic jsonObject) { var status = ClarifaiStatus.Deserialize(jsonObject.status); var input = ClarifaiInput.Deserialize(jsonObject.input); var predictions = new List <ClarifaiOutput>(); foreach (dynamic output in jsonObject.outputs) { dynamic model = output.model; ModelType modelType = ModelType.DetermineModelType( (string)model.output_info.type_ext); predictions.Add(ClarifaiOutput.Deserialize(httpClient, modelType, output)); } return(new WorkflowResult(status, input, predictions)); }
public async Task ConceptPredictRequestAndResponseShouldBeCorrect() { var httpClient = new FkClarifaiHttpClient( postResponse: @" { ""status"": { ""code"": 10000, ""description"": ""Ok"" }, ""outputs"": [{ ""id"": ""@outputID"", ""status"": { ""code"": 10000, ""description"": ""Ok"" }, ""created_at"": ""2017-11-17T19:32:58.760477937Z"", ""model"": { ""id"": ""@modelID"", ""name"": ""@modelName"", ""created_at"": ""2016-03-09T17:11:39.608845Z"", ""app_id"": ""main"", ""output_info"": { ""message"": ""Show output_info with: GET /models/{model_id}/output_info"", ""type"": ""concept"", ""type_ext"": ""concept"" }, ""model_version"": { ""id"": ""@modelVersionID"", ""created_at"": ""2016-07-13T01:19:12.147644Z"", ""status"": { ""code"": 21100, ""description"": ""Model trained successfully"" } }, ""display_name"": ""@modelDisplayName"" }, ""input"": { ""id"": ""@inputID"", ""data"": { ""image"": { ""url"": ""@imageUrl"" } } }, ""data"": { ""concepts"": [{ ""id"": ""@conceptID1"", ""name"": ""@conceptName1"", ""value"": 0.99, ""app_id"": ""main"" }, { ""id"": ""@conceptID2"", ""name"": ""@conceptName2"", ""value"": 0.98, ""app_id"": ""main"" }] } }] } "); var client = new ClarifaiClient(httpClient); var response = await client.Predict <Concept>( "", new ClarifaiURLImage("@url")) .ExecuteAsync(); ClarifaiOutput <Concept> output = response.Get(); var expectedRequestBody = JObject.Parse(@" { ""inputs"": [ { ""id"": null, ""data"": { ""image"": { ""url"": ""@url"" } } } ] } "); Assert.True(JToken.DeepEquals(expectedRequestBody, httpClient.PostedBody)); Assert.True(response.IsSuccessful); Assert.AreEqual("@inputID", output.Input.ID); Assert.AreEqual("@outputID", output.ID); Assert.AreEqual("@conceptID1", output.Data[0].ID); }
public async Task WorkflowPredictRequestAndResponseShouldBeCorrect() { var httpClient = new FkClarifaiHttpClient( postResponse: @" { ""status"": { ""code"": 10000, ""description"": ""Ok"" }, ""workflow"": { ""id"": ""@workflowID"", ""app_id"": ""@appID"", ""created_at"": ""2017-07-10T01:45:05.672880Z"" }, ""results"": [ { ""status"": { ""code"": 10000, ""description"": ""Ok"" }, ""input"": { ""id"": ""@inputID"", ""data"": { ""image"": { ""url"": ""@inputURL"" } } }, ""outputs"": [ { ""id"": ""@outputID1"", ""status"": { ""code"": 10000, ""description"": ""Ok"" }, ""created_at"": ""2017-07-10T12:01:44.929928529Z"", ""model"": { ""id"": ""d16f390eb32cad478c7ae150069bd2c6"", ""name"": ""moderation"", ""created_at"": ""2017-05-12T21:28:00.471607Z"", ""app_id"": ""main"", ""output_info"": { ""message"": ""Show output_info with: GET /models/{model_id}/output_info"", ""type"": ""concept"", ""type_ext"": ""concept"" }, ""model_version"": { ""id"": ""b42ac907ac93483484483a0040a386be"", ""created_at"": ""2017-05-12T21:28:00.471607Z"", ""status"": { ""code"": 21100, ""description"": ""Model trained successfully"" } } }, ""data"": { ""concepts"": [ { ""id"": ""@conceptID11"", ""name"": ""safe"", ""value"": 0.99999714, ""app_id"": ""main"" } ] } }, { ""id"": ""@outputID2"", ""status"": { ""code"": 10000, ""description"": ""Ok"" }, ""created_at"": ""2017-07-10T12:01:44.929941126Z"", ""model"": { ""id"": ""aaa03c23b3724a16a56b629203edc62c"", ""name"": ""general-v1.3"", ""created_at"": ""2016-02-26T23:38:40.086101Z"", ""app_id"": ""main"", ""output_info"": { ""message"": ""Show output_info with: GET /models/{model_id}/output_info"", ""type"": ""concept"", ""type_ext"": ""concept"" }, ""model_version"": { ""id"": ""aa9ca48295b37401f8af92ad1af0d91d"", ""created_at"": ""2016-07-13T00:58:55.915745Z"", ""status"": { ""code"": 21100, ""description"": ""Model trained successfully"" } } }, ""data"": { ""concepts"": [ { ""id"": ""@conceptID21"", ""name"": ""train"", ""value"": 0.9989112, ""app_id"": ""main"" }, { ""id"": ""@conceptID22"", ""name"": ""railway"", ""value"": 0.9975532, ""app_id"": ""main"" } ] } } ] } ] } "); var client = new ClarifaiClient(httpClient); var response = await client.WorkflowPredict( "", new ClarifaiURLImage("@url")) .ExecuteAsync(); var workflow = response.Get(); var expectedRequestBody = JObject.Parse(@" { ""inputs"": [ { ""id"": null, ""data"": { ""image"": { ""url"": ""@url"" } } } ] } "); Assert.True(JToken.DeepEquals(expectedRequestBody, httpClient.PostedBody)); Assert.True(response.IsSuccessful); Assert.AreEqual("@workflowID", workflow.Workflow.ID); Assert.AreEqual("@appID", workflow.Workflow.AppID); WorkflowResult results = workflow.WorkflowResult; Assert.AreEqual("@inputID", results.Input.ID); ClarifaiOutput output1 = results.Predictions[0]; Assert.AreEqual("@outputID1", output1.ID); Assert.AreEqual("@conceptID11", ((Concept)output1.Data[0]).ID); ClarifaiOutput output2 = results.Predictions[1]; Assert.AreEqual("@outputID2", output2.ID); Assert.AreEqual("@conceptID21", ((Concept)output2.Data[0]).ID); Assert.AreEqual("@conceptID22", ((Concept)output2.Data[1]).ID); }