public async Task GetConceptResponseShouldBeCorrect() { var httpClient = new FkClarifaiHttpClient( getResponse: @" { ""status"": { ""code"": 10000, ""description"": ""Ok"" }, ""concept"": { ""id"": ""@conceptID"", ""name"": ""@conceptName"", ""created_at"": ""2017-10-02T11:34:20.419915Z"", ""language"": ""en"", ""app_id"": ""@appID"" } } "); var client = new ClarifaiClient(httpClient); var response = await client.GetConcept("").ExecuteAsync(); Assert.True(response.IsSuccessful); Concept concept = response.Get(); Assert.AreEqual("@conceptID", concept.ID); Assert.AreEqual("@conceptName", concept.Name); Assert.AreEqual("@appID", concept.AppID); }
public async Task GetModelVersionResponseShouldBeCorrect() { var httpClient = new FkClarifaiHttpClient( getResponse: @" { ""status"": { ""code"": 10000, ""description"": ""Ok"" }, ""model_version"": { ""id"": ""@versionID"", ""created_at"": ""2017-01-01T00:00:00.000000Z"", ""status"": { ""code"": 21100, ""description"": ""Model trained successfully"" }, ""active_concept_count"": 2, ""metrics"": { ""status"": { ""code"": 21303, ""description"": ""@modelDESCRIPTION"" } }, ""total_input_count"": 30 } } "); var client = new ClarifaiClient(httpClient); ClarifaiResponse <ModelVersion> response = await client.GetModelVersion("@modelID", "@versionID").ExecuteAsync(); Assert.True(response.IsSuccessful); Assert.AreEqual(response.Get().ID, "@versionID"); Assert.AreEqual(response.Get().ActiveConceptCount, 2); Assert.AreEqual(response.Get().ModelMetricsStatus.Description, "@modelDESCRIPTION"); }
public async Task GetInputsStatusResponseShouldBeCorrect() { var httpClient = new FkClarifaiHttpClient( getResponse: @" { ""status"": { ""code"": 10000, ""description"": ""Ok"" }, ""counts"": { ""processed"": 1, ""to_process"": 2, ""errors"": 3, ""processing"": 4, ""reindexed"": 5, ""to_reindex"": 6, ""reindex_errors"": 7, ""reindexing"": 8 } } "); var client = new ClarifaiClient(httpClient); ClarifaiResponse <ClarifaiInputsStatus> response = await client.GetInputsStatus().ExecuteAsync(); var status = (ClarifaiInputsStatus)response.Get(); Assert.True(response.IsSuccessful); Assert.AreEqual(status.Processed, 1); Assert.AreEqual(status.ToProcess, 2); Assert.AreEqual(status.Errors, 3); Assert.AreEqual(status.Processing, 4); }
public async Task SearchesFeedbackRequestAndResponseShouldBeCorrect() { var httpClient = new FkClarifaiHttpClient( postResponse: @"{""status"":{""code"":10000,""description"":""Ok""}}"); var client = new ClarifaiClient(httpClient); ClarifaiResponse <EmptyResponse> response = await client.SearchesFeedback( "@inputID", "@searchID", "@endUserID", "@sessionID" ).ExecuteAsync(); var expectedRequestBody = JObject.Parse(@" { ""input"": { ""id"": ""@inputID"", ""feedback_info"": { ""event_type"": ""search_click"", ""search_id"": ""@searchID"", ""end_user_id"": ""@endUserID"", ""session_id"": ""@sessionID"" } } } "); Assert.True(JToken.DeepEquals(expectedRequestBody, httpClient.PostedBody)); Assert.True(response.IsSuccessful); Assert.AreEqual("Ok", response.Status.Description); }
public async Task ModifyConceptRequestAndResponseShouldBeCorrect() { var httpClient = new FkClarifaiHttpClient( patchResponse: @" { ""status"": { ""code"": 10000, ""description"": ""Ok"" }, ""concepts"": [{ ""id"": ""@positiveConcept1"", ""name"": ""@positiveConceptName1"", ""created_at"": ""2017-10-15T16:28:28.901994Z"", ""language"": ""en"", ""app_id"": ""@appID"" }, { ""id"": ""@positiveConcept2"", ""created_at"": ""2017-10-15T16:26:46.667104Z"", ""language"": ""en"", ""app_id"": ""@appID"" }] } "); var client = new ClarifaiClient(httpClient); ClarifaiResponse <List <Concept> > response = await client.ModifyConcepts( new List <Concept> { new Concept("@positiveConcept1", "@positiveConceptName1"), new Concept("@positiveConcept2") } ).ExecuteAsync(); var expectedRequestBody = JObject.Parse(@" { ""action"": ""overwrite"", ""concepts"": [ { ""id"": ""@positiveConcept1"", ""name"": ""@positiveConceptName1"" }, { ""id"": ""@positiveConcept2"", ""name"": null } ] } "); Assert.True(JToken.DeepEquals(expectedRequestBody, httpClient.PatchedBody)); Assert.True(response.IsSuccessful); Assert.AreEqual("Ok", response.Status.Description); Assert.AreEqual(response.Get()[0].ID, "@positiveConcept1"); Assert.AreEqual(response.Get()[0].Name, "@positiveConceptName1"); Assert.AreEqual(response.Get()[1].ID, "@positiveConcept2"); }
public async Task TrainModelRequestAndResponseShouldBeCorrect() { var httpClient = new FkClarifaiHttpClient( postResponse: @" { ""status"": { ""code"": 10000, ""description"": ""Ok"" }, ""model"": { ""id"": ""some-model-id"", ""name"": ""some-model-name"", ""created_at"": ""2017-05-16T19:20:38.733764Z"", ""app_id"": ""main"", ""output_info"": { ""data"": { ""concepts"": [{ ""id"": ""some-concept-id"", ""name"": ""safe"", ""created_at"": ""2017-05-16T19:20:38.450157Z"", ""language"": ""en"", ""app_id"": ""main"" }] }, ""type"": ""concept"", ""type_ext"": ""concept"" }, ""model_version"": { ""id"": ""some-model-version-id"", ""created_at"": ""2017-05-16T19:20:38.733764Z"", ""status"": { ""code"": 21100, ""description"": ""Model trained successfully"" }, ""active_concept_count"": 5 }, ""display_name"": ""Moderation"" } } "); var client = new ClarifaiClient(httpClient); ClarifaiResponse <IModel <Concept> > response = await client.TrainModel <Concept>("some-model-id").ExecuteAsync(); var expectedRequestBody = JObject.Parse(@" {} "); Assert.True(JToken.DeepEquals(expectedRequestBody, httpClient.PostedBody)); Assert.True(response.IsSuccessful); Assert.AreEqual("Ok", response.Status.Description); Assert.AreEqual(response.Get().Name, "some-model-name"); Assert.AreEqual(response.Get().ModelID, "some-model-id"); Assert.AreEqual(response.Get().ModelVersion.ID, "some-model-version-id"); }
public async Task DeleteModelResponseShouldBeCorrect() { var httpClient = new FkClarifaiHttpClient( deleteResponse: @"{""status"":{""code"":10000,""description"":""Ok""}}"); var client = new ClarifaiClient(httpClient); ClarifaiResponse <EmptyResponse> response = await client.DeleteModel("@modelID").ExecuteAsync(); Assert.True(response.IsSuccessful); Assert.AreEqual("Ok", response.Status.Description); }
public async Task GetModelResponseShouldBeCorrect() { var httpClient = new FkClarifaiHttpClient( getResponse: @" { ""status"": { ""code"": 10000, ""description"": ""Ok"" }, ""model"": { ""id"": ""some-model-id"", ""name"": ""some-model-name"", ""created_at"": ""2017-05-16T19:20:38.733764Z"", ""app_id"": ""main"", ""output_info"": { ""data"": { ""concepts"": [{ ""id"": ""some-concept-id"", ""name"": ""safe"", ""created_at"": ""2017-05-16T19:20:38.450157Z"", ""language"": ""en"", ""app_id"": ""main"" }] }, ""type"": ""concept"", ""type_ext"": ""concept"" }, ""model_version"": { ""id"": ""some-model-version-id"", ""created_at"": ""2017-05-16T19:20:38.733764Z"", ""status"": { ""code"": 21100, ""description"": ""Model trained successfully"" }, ""active_concept_count"": 5 }, ""display_name"": ""Moderation"" } } "); var client = new ClarifaiClient(httpClient); var response = await client.GetModel <Concept>("").ExecuteAsync(); var model = (ConceptModel)response.Get(); Assert.True(response.IsSuccessful); Assert.AreEqual("some-model-id", model.ModelID); Assert.AreEqual("some-model-name", model.Name); Assert.AreEqual("some-concept-id", model.OutputInfo.Concepts.First().ID); Assert.AreEqual("some-model-version-id", model.ModelVersion.ID); }
public async Task SearchModelsByNameAndTypeRequestAndResponseShouldBeCorrect() { var httpClient = new FkClarifaiHttpClient( postResponse: @" { ""status"": { ""code"": 10000, ""description"": ""Ok"" }, ""models"": [{ ""id"": ""@modelID"", ""name"": ""color"", ""created_at"": ""2017-03-06T22:57:00.660603Z"", ""app_id"": ""main"", ""output_info"": { ""message"": ""Show output_info with: GET /models/{model_id}/output_info"", ""type"": ""color"", ""type_ext"": ""color"" }, ""model_version"": { ""id"": ""@modelVersionID"", ""created_at"": ""2017-03-06T22:57:00.684652Z"", ""status"": { ""code"": 21100, ""description"": ""Model trained successfully"" } }, ""display_name"": ""Color"" }] } "); var client = new ClarifaiClient(httpClient); var response = await client.SearchModels("*", ModelType.Color).ExecuteAsync(); var expectedRequestBody = JObject.Parse(@" { ""model_query"": { ""name"": ""*"", ""type"": ""color"" } } "); Assert.True(JToken.DeepEquals(expectedRequestBody, httpClient.PostedBody)); List <IModel> models = response.Get(); Assert.True(response.IsSuccessful); Assert.AreEqual(1, models.Count); Assert.AreEqual("@modelID", models[0].ModelID); Assert.AreEqual("@modelVersionID", models[0].ModelVersion.ID); }
public async Task SearchModelsByNameRequestAndResponseShouldBeCorrect() { var httpClient = new FkClarifaiHttpClient( postResponse: @" { ""status"": { ""code"": 10000, ""description"": ""Ok"" }, ""models"": [{ ""id"": ""@modelID"", ""name"": ""celeb-v1.3"", ""created_at"": ""2016-10-25T19:30:38.541073Z"", ""app_id"": ""main"", ""output_info"": { ""message"": ""Show output_info with: GET /models/{model_id}/output_info"", ""type"": ""concept"", ""type_ext"": ""facedetect-identity"" }, ""model_version"": { ""id"": ""@modelVersionID"", ""created_at"": ""2016-10-25T19:30:38.541073Z"", ""status"": { ""code"": 21100, ""description"": ""Model trained successfully"" }, ""active_concept_count"": 10554 }, ""display_name"": ""Celebrity"" }] } "); var client = new ClarifaiClient(httpClient); var response = await client.SearchModels("celeb*").ExecuteAsync(); var expectedRequestBody = JObject.Parse(@" { ""model_query"": { ""name"": ""celeb*"" } } "); Assert.True(JToken.DeepEquals(expectedRequestBody, httpClient.PostedBody)); List <IModel> models = response.Get(); Assert.True(response.IsSuccessful); Assert.AreEqual(1, models.Count); Assert.AreEqual("@modelID", models[0].ModelID); Assert.AreEqual("@modelVersionID", models[0].ModelVersion.ID); }
public async Task GetInputResponseShouldBeCorrect() { var httpClient = new FkClarifaiHttpClient( getResponse: @" { ""status"": { ""code"": 10000, ""description"": ""Ok"" }, ""input"": { ""id"": ""@inputID"", ""data"": { ""image"": { ""url"": ""@imageURL"" }, ""concepts"": [ { ""id"": ""@positiveConcept"", ""value"": 1 }, { ""id"": ""@negativeConcept1"", ""value"": 0 }, { ""id"": ""@negativeConcept2"", ""value"": 0 } ] }, ""created_at"": ""2017-10-13T20:53:00.253139Z"", ""modified_at"": ""2017-10-13T20:53:00.868659782Z"", ""status"": { ""code"": 30200, ""description"": ""Input image modification success"" } } } "); var client = new ClarifaiClient(httpClient); ClarifaiResponse <IClarifaiInput> response = await client.GetInput("@inputID").ExecuteAsync(); var input = (ClarifaiURLImage)response.Get(); Assert.True(response.IsSuccessful); Assert.AreEqual(input.ID, "@inputID"); Assert.AreEqual(input.URL, "@imageURL"); Assert.AreEqual(input.PositiveConcepts.ElementAt(0).ID, "@positiveConcept"); Assert.AreEqual(input.NegativeConcepts.ElementAt(0).ID, "@negativeConcept1"); Assert.AreEqual(input.NegativeConcepts.ElementAt(1).ID, "@negativeConcept2"); }
public async Task ModelFeedbackRequestAndResponseShouldBeCorrect() { var httpClient = new FkClarifaiHttpClient( postResponse: @"{""status"":{""code"":10000,""description"":""Ok""}}"); var client = new ClarifaiClient(httpClient); ClarifaiResponse <EmptyResponse> response = await client.ModelFeedback( "@modelID", "@imageURL", "@inputID", "@outputID", "@endUserID", "@sessionID", new List <ConceptFeedback> { new ConceptFeedback("dog", true), new ConceptFeedback("cat", false) }).ExecuteAsync(); var expectedRequestBody = JObject.Parse(@" { ""input"": { ""id"": ""@inputID"", ""data"": { ""image"": { ""url"": ""@imageURL"" }, ""concepts"": [ { ""id"": ""dog"", ""value"": true }, { ""id"": ""cat"", ""value"": false } ] }, ""feedback_info"": { ""event_type"": ""annotation"", ""output_id"": ""@outputID"", ""end_user_id"": ""@endUserID"", ""session_id"": ""@sessionID"" } } } "); Assert.True(JToken.DeepEquals(expectedRequestBody, httpClient.PostedBody)); Assert.True(response.IsSuccessful); Assert.AreEqual("Ok", response.Status.Description); }
public async Task ModelEvaluationResponseShouldBeCorrect() { var httpClient = new FkClarifaiHttpClient( postResponse: @" { ""status"": { ""code"": 10000, ""description"": ""Ok"" }, ""model_version"": { ""id"": ""@versionID"", ""created_at"": ""2017-01-01T00:00:00.000000Z"", ""status"": { ""code"": 21100, ""description"": ""Model trained successfully"" }, ""active_concept_count"": 2, ""metrics"": { ""status"": { ""code"": 21303, ""description"": ""Model is queued for evaluation."" } }, ""total_input_count"": 30 } } "); var client = new ClarifaiClient(httpClient); ClarifaiResponse <ModelVersion> response = await client.ModelEvaluation( "", "").ExecuteAsync(); Assert.True(response.IsSuccessful); Assert.AreEqual("Ok", response.Status.Description); ModelVersion modelVersion = response.Get(); Assert.AreEqual("@versionID", modelVersion.ID); Assert.AreEqual(21100, modelVersion.Status.StatusCode); Assert.AreEqual("Model trained successfully", modelVersion.Status.Description); Assert.AreEqual(21303, modelVersion.ModelMetricsStatus.StatusCode); Assert.AreEqual("Model is queued for evaluation.", modelVersion.ModelMetricsStatus.Description); Assert.AreEqual(2, modelVersion.ActiveConceptCount); Assert.AreEqual(30, modelVersion.TotalInputCount); }
public async Task GetConceptsResponseShouldBeCorrect() { var httpClient = new FkClarifaiHttpClient( getResponse: @" { ""status"": { ""code"": 10000, ""description"": ""Ok"" }, ""concepts"": [{ ""id"": ""@conceptID1"", ""name"": ""@conceptName1"", ""created_at"": ""2017-10-15T16:28:28.901994Z"", ""language"": ""en"", ""app_id"": ""@appID"" }, { ""id"": ""@conceptID2"", ""name"": ""@conceptName2"", ""created_at"": ""2017-10-15T16:26:46.667104Z"", ""language"": ""en"", ""app_id"": ""@appID"" }] } "); var client = new ClarifaiClient(httpClient); var response = await client.GetConcepts().ExecuteAsync(); Assert.True(response.IsSuccessful); List <Concept> concepts = response.Get(); Assert.AreEqual(2, concepts.Count); Concept concept1 = concepts[0]; Concept concept2 = concepts[1]; Assert.AreEqual("@conceptID1", concept1.ID); Assert.AreEqual("@conceptName1", concept1.Name); Assert.AreEqual("@appID", concept1.AppID); Assert.AreEqual("@conceptID2", concept2.ID); Assert.AreEqual("@conceptName2", concept2.Name); Assert.AreEqual("@appID", concept2.AppID); }
public async Task SearchConceptsRequestAndResponseShouldBeCorrect() { var httpClient = new FkClarifaiHttpClient( postResponse: @" { ""status"": { ""code"": 10000, ""description"": ""Ok"" }, ""concepts"": [{ ""id"": ""@positiveConcept1"", ""name"": ""@positiveConceptName1"", ""created_at"": ""2017-10-15T16:28:28.901994Z"", ""language"": ""en"", ""app_id"": ""@appID"" }, { ""id"": ""@positiveConcept2"", ""created_at"": ""2017-10-15T16:26:46.667104Z"", ""language"": ""en"", ""app_id"": ""@appID"" }] } "); var client = new ClarifaiClient(httpClient); var response = await client.SearchConcepts("positives", "en").ExecuteAsync(); var expectedRequestBody = JObject.Parse(@" { ""concept_query"": { ""name"": ""positives"", ""language"": ""en"" } } "); Assert.True(JToken.DeepEquals(expectedRequestBody, httpClient.PostedBody)); Assert.True(response.IsSuccessful); Assert.AreEqual(response.Get()[0].ID, "@positiveConcept1"); Assert.AreEqual(response.Get()[0].Name, "@positiveConceptName1"); Assert.AreEqual(response.Get()[1].ID, "@positiveConcept2"); }
public async Task GetModelInputsResponseShouldBeCorrect() { var httpClient = new FkClarifaiHttpClient( getResponse: @" { ""status"": { ""code"": 10000, ""description"": ""Ok"" }, ""inputs"": [{ ""id"": ""@inputID"", ""data"": { ""image"": { ""url"": ""@imageURL"" }, ""concepts"": [{ ""id"": ""@conceptID"", ""name"": ""@conceptName"", ""value"": 1, ""app_id"": ""@conceptAppID"" }] }, ""created_at"": ""2017-10-15T16:30:52.964888Z"", ""status"": { ""code"": 30000, ""description"": ""Download complete"" } }] } "); var client = new ClarifaiClient(httpClient); ClarifaiResponse <List <IClarifaiInput> > response = await client.GetModelInputs( "", "").ExecuteAsync(); Assert.True(response.IsSuccessful); Assert.AreEqual("Ok", response.Status.Description); IClarifaiInput input = response.Get()[0]; Assert.AreEqual("@inputID", input.ID); Assert.AreEqual("@conceptID", input.PositiveConcepts.First().ID); }
public async Task InvalidJsonShouldReturnNetworkErrorResponse() { var httpClient = new FkClarifaiHttpClient( getResponse: @" { ""status"": { ""code"": 10000, ""description"": ""Ok"" }, ""model"": { "); var client = new ClarifaiClient(httpClient); var response = await client.GetModel <Concept>("").ExecuteAsync(); Assert.False(response.IsSuccessful); Assert.AreEqual(ClarifaiStatus.StatusType.NetworkError, response.Status.Type); Assert.NotNull(response.Status.Description); Assert.NotNull(response.Status.ErrorDetails); }
public async Task SearchInputWithByImageVisuallyPaginationRequestAndResponseShouldBeCorrect() { var httpClient = new FkClarifaiHttpClient( postResponse: @" { ""status"": { ""code"": 10000, ""description"": ""Ok"", ""req_id"": ""@requestID"" }, ""id"": ""@ID"", ""hits"": [ { ""score"": 0.60579073, ""input"": { ""id"": ""@inputID"", ""data"": { ""image"": { ""url"": ""@found-url"" }, ""concepts"": [ { ""id"": ""wedding"", ""name"": ""wedding"", ""value"": 1, ""app_id"": ""@appID"" } ] }, ""created_at"": ""2019-05-24T10:45:35.225638Z"", ""modified_at"": ""2019-05-24T10:45:35.809871Z"", ""status"": { ""code"": 30000, ""description"": ""Download complete"" } } }, ], ""query"": { ""ands"": [ { ""output"": { ""input"": { ""data"": { ""image"": { ""url"": ""@input-url"" } } } } } ] } } "); var client = new ClarifaiClient(httpClient); var response = await client.SearchInputs(SearchBy.ImageVisually( new ClarifaiURLImage(url: "@input-url") )) .Page(5) .PerPage(2) .ExecuteAsync(); var expectedRequestBody = JObject.Parse(@" { ""query"": { ""ands"": [ { ""output"": { ""input"": { ""data"": { ""image"": { ""url"": ""@input-url"" } } } } } ] }, ""pagination"": { ""page"": 5, ""per_page"": 2 } } "); Assert.True(JToken.DeepEquals(expectedRequestBody, httpClient.PostedBody)); Assert.True(response.IsSuccessful); List <SearchHit> searchHits = response.Get().SearchHits; Assert.AreEqual(1, searchHits.Count); IClarifaiInput input = searchHits[0].Input; Assert.AreEqual(InputType.Image, input.Type); Assert.AreEqual(InputForm.URL, input.Form); ClarifaiURLImage image = (ClarifaiURLImage)input; Assert.AreEqual("@found-url", image.URL); }
public async Task ModifyInputRequestAndResponseShouldBeCorrect() { var httpClient = new FkClarifaiHttpClient( patchResponse: @" { ""status"": { ""code"": 10000, ""description"": ""Ok"" }, ""inputs"": [{ ""id"": ""@inputID"", ""data"": { ""image"": { ""url"": ""@imageURL"" }, ""concepts"": [ { ""id"": ""@positiveConcept1"", ""name"": ""@positiveConceptName1"", ""value"": 1 }, { ""id"": ""@positiveConcept2"", ""value"": 1 }, { ""id"": ""@negativeConcept1"", ""name"": ""@negativeConceptName1"", ""value"": 0 }, { ""id"": ""@negativeConcept2"", ""value"": 0 } ] }, ""created_at"": ""2017-10-13T20:53:00.253139Z"", ""modified_at"": ""2017-10-13T20:53:00.868659782Z"", ""status"": { ""code"": 30200, ""description"": ""Input image modification success"" } }] } "); var client = new ClarifaiClient(httpClient); ClarifaiResponse <IClarifaiInput> response = await client.ModifyInput( "@inputID", ModifyAction.Merge, positiveConcepts : new List <Concept> { new Concept("@positiveConcept1", "@positiveConceptName1"), new Concept("@positiveConcept2") }, negativeConcepts : new List <Concept> { new Concept("@negativeConcept1", "@negativeConceptName1"), new Concept("@negativeConcept2") } ).ExecuteAsync(); var expectedRequestBody = JObject.Parse(@" { ""inputs"": [ { ""id"": ""@inputID"", ""data"": { ""concepts"": [ { ""id"": ""@positiveConcept1"", ""name"": ""@positiveConceptName1"", ""value"": true }, { ""id"": ""@positiveConcept2"", ""value"": true }, { ""id"": ""@negativeConcept1"", ""name"": ""@negativeConceptName1"", ""value"": false }, { ""id"": ""@negativeConcept2"", ""value"": false }, ] } } ], ""action"":""merge"" } "); Assert.True(JToken.DeepEquals(expectedRequestBody, httpClient.PatchedBody)); Assert.True(response.IsSuccessful); Assert.AreEqual("Ok", response.Status.Description); List <string> posConcepts = response.Get().PositiveConcepts.Select(c => c.ID).ToList(); List <string> negConcepts = response.Get().NegativeConcepts.Select(c => c.ID).ToList(); CollectionAssert.AreEqual( new List <string> { "@positiveConcept1", "@positiveConcept2" }, posConcepts); CollectionAssert.AreEqual( new List <string> { "@negativeConcept1", "@negativeConcept2" }, negConcepts); }
public async Task ModifyInputMetadataRequestAndResponseShouldBeCorrect() { var httpClient = new FkClarifaiHttpClient( patchResponse: @" { ""status"": { ""code"": 10000, ""description"": ""Ok"" }, ""inputs"": [{ ""id"": ""@inputID"", ""data"": { ""image"": { ""url"": ""@imageURL"" }, ""concepts"": [{ ""id"": ""concept1"", ""name"": ""concept1"", ""value"": 1, ""app_id"": ""@appID"" }], ""metadata"": { ""@key1"": ""@value1"", ""@key2"": ""@value2"" } }, ""created_at"": ""2017-11-02T15:08:22.005157Z"", ""modified_at"": ""2017-11-02T15:08:23.071624222Z"", ""status"": { ""code"": 30200, ""description"": ""Input image modification success"" } }] } "); var client = new ClarifaiClient(httpClient); ClarifaiResponse <IClarifaiInput> response = await client.ModifyInputMetadata( "@inputID", new JObject( new JProperty("@key1", "@value1"), new JProperty("@key2", "@value2")) ).ExecuteAsync(); var expectedRequestBody = JObject.Parse(@" { ""inputs"": [ { ""id"": ""@inputID"", ""data"": { ""metadata"": { ""@key1"": ""@value1"", ""@key2"": ""@value2"" } } } ], ""action"":""overwrite"" } "); Assert.True(JToken.DeepEquals(expectedRequestBody, httpClient.PatchedBody)); Assert.True(response.IsSuccessful); Assert.AreEqual("Ok", response.Status.Description); JObject metadata = response.Get().Metadata; Assert.AreEqual(2, metadata.Count); Assert.AreEqual("@value1", metadata["@key1"].Value <string>()); Assert.AreEqual("@value2", metadata["@key2"].Value <string>()); }
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 GetModelsResponseShouldBeCorrect() { var httpClient = new FkClarifaiHttpClient( getResponse: @" { ""status"": { ""code"": 10000, ""description"": ""Ok"" }, ""models"": [{ ""id"": ""model-id1"", ""name"": ""model-name1"", ""created_at"": ""2017-05-16T19:20:38.733764Z"", ""app_id"": ""main"", ""output_info"": { ""data"": { ""concepts"": [{ ""id"": ""concept-id1"", ""name"": ""concept-name1"", ""created_at"": ""2017-05-16T19:20:38.450157Z"", ""language"": ""en"", ""app_id"": ""main"" }] }, ""type"": ""concept"", ""type_ext"": ""concept"" }, ""model_version"": { ""id"": ""some-model-version-id"", ""created_at"": ""2017-05-16T19:20:38.733764Z"", ""status"": { ""code"": 21100, ""description"": ""Model trained successfully"" }, ""active_concept_count"": 5 }, ""display_name"": ""Moderation"" }, { ""id"": ""model-id2"", ""name"": ""model-name2"", ""created_at"": ""2017-05-16T19:20:38.733764Z"", ""app_id"": ""main"", ""output_info"": { ""data"": { ""concepts"": [{ ""id"": ""concept-id2"", ""name"": ""concept-name2"", ""created_at"": ""2017-05-16T19:20:38.450157Z"", ""language"": ""en"", ""app_id"": ""main"" }] }, ""type"": ""concept"", ""type_ext"": ""concept"" }, ""model_version"": { ""id"": ""some-model-version-id"", ""created_at"": ""2017-05-16T19:20:38.733764Z"", ""status"": { ""code"": 21100, ""description"": ""Model trained successfully"" }, ""active_concept_count"": 5 }, ""display_name"": ""Moderation"" }] } "); var client = new ClarifaiClient(httpClient); ClarifaiResponse <List <IModel> > response = await client.GetModels().ExecuteAsync(); var models = (List <IModel>)response.Get(); Assert.True(response.IsSuccessful); Assert.AreEqual(models[0].ModelID, "model-id1"); Assert.AreEqual(models[0].Name, "model-name1"); Assert.AreEqual(models[0].ModelVersion.ID, "some-model-version-id"); Assert.AreEqual(models[1].ModelID, "model-id2"); Assert.AreEqual(models[1].AppID, "main"); Assert.AreEqual(models[1].OutputInfo.Type, "concept"); }
public async Task GetInputsResponseShouldBeCorrect() { var httpClient = new FkClarifaiHttpClient( getResponse: @" { ""status"": { ""code"": 10000, ""description"": ""Ok"" }, ""inputs"": [{ ""id"": ""@inputID1"", ""data"": { ""image"": { ""url"": ""@imageURL1"" }, ""concepts"": [ { ""id"": ""@positiveConcept"", ""value"": 1 }, { ""id"": ""@negativeConcept"", ""value"": 0 } ] }, ""created_at"": ""2017-10-13T20:53:00.253139Z"", ""modified_at"": ""2017-10-13T20:53:00.868659782Z"", ""status"": { ""code"": 30200, ""description"": ""Input image modification success"" } }, { ""id"": ""@inputID2"", ""data"": { ""image"": { ""url"": ""@imageURL2"" }, ""geo"": { ""geo_point"": { ""longitude"": 55, ""latitude"": 66 } } }, ""created_at"": ""2017-10-13T20:53:00.253139Z"", ""modified_at"": ""2017-10-13T20:53:00.868659782Z"", ""status"": { ""code"": 30200, ""description"": ""Input image modification success"" } }] } "); var client = new ClarifaiClient(httpClient); ClarifaiResponse <List <IClarifaiInput> > response = await client.GetInputs().ExecuteAsync(); var inputs = (List <IClarifaiInput>)response.Get(); Assert.True(response.IsSuccessful); Assert.AreEqual(inputs[0].ID, "@inputID1"); Assert.AreEqual(inputs[0].PositiveConcepts.ElementAt(0).ID, "@positiveConcept"); Assert.AreEqual(inputs[0].NegativeConcepts.ElementAt(0).ID, "@negativeConcept"); Assert.AreEqual(inputs[1].ID, "@inputID2"); Assert.AreEqual(inputs[1].Geo.Longitude, 55); Assert.AreEqual(inputs[1].Geo.Latitude, 66); }
public async Task CreateGenericModelRequestAndResponseShouldBeCorrect() { var httpClient = new FkClarifaiHttpClient( postResponse: @" { ""status"": { ""code"": 10000, ""description"": ""Ok"" }, ""model"": { ""id"": ""some-model-id"", ""name"": ""some-model-name"", ""created_at"": ""2017-05-16T19:20:38.733764Z"", ""app_id"": ""main"", ""output_info"": { ""data"": { ""concepts"": [{ ""id"": ""some-concept-id"", ""name"": ""safe"", ""created_at"": ""2017-05-16T19:20:38.450157Z"", ""language"": ""en"", ""app_id"": ""main"" }] }, ""type"": ""concept"", ""type_ext"": ""concept"" }, ""model_version"": { ""id"": ""some-model-version-id"", ""created_at"": ""2017-05-16T19:20:38.733764Z"", ""status"": { ""code"": 21100, ""description"": ""Model trained successfully"" }, ""active_concept_count"": 5 }, ""display_name"": ""Moderation"" } } "); var client = new ClarifaiClient(httpClient); ClarifaiResponse <IModel <Concept> > response = await client.CreateModelGeneric <Concept>( modelID : "@newmodelID", name : "@newModelName", outputInfo : new ConceptOutputInfo(new List <Concept> { new Concept("@conceptID1") }) ).ExecuteAsync(); var expectedRequestBody = JObject.Parse(@" { ""model"": { ""id"": ""@newmodelID"", ""name"": ""@newModelName"", ""output_info"": { ""output_config"": { ""concepts_mutually_exclusive"": false, ""closed_environment"": false }, ""data"": { ""concepts"": [ { ""id"": ""@conceptID1"" } ] } } } } "); Assert.True(JToken.DeepEquals(expectedRequestBody, httpClient.PostedBody)); Assert.True(response.IsSuccessful); Assert.AreEqual("Ok", response.Status.Description); Assert.AreEqual(response.Get().Name, "some-model-name"); Assert.AreEqual(response.Get().ModelID, "some-model-id"); Assert.AreEqual(response.Get().ModelVersion.ID, "some-model-version-id"); }
public async Task SearchInputsByNameRequestAndResponseShouldBeCorrect() { var httpClient = new FkClarifaiHttpClient( postResponse: @" { ""status"": { ""code"": 10000, ""description"": ""Ok"" }, ""hits"": [ { ""score"": 0.99, ""input"": { ""id"": ""@inputID"", ""created_at"": ""2016-11-22T17:06:02Z"", ""data"": { ""image"": { ""url"": ""@inputURL"" } }, ""status"": { ""code"": 30000, ""description"": ""Download complete"" } } } ] } "); var client = new ClarifaiClient(httpClient); var response = await client.SearchInputs(SearchBy.ConceptName("@conceptName")) .ExecuteAsync(); var expectedRequestBody = JObject.Parse(@" { ""query"": { ""ands"": [ { ""output"": { ""data"": { ""concepts"": [ { ""name"": ""@conceptName"" } ] } } } ] } } "); Assert.True(JToken.DeepEquals(expectedRequestBody, httpClient.PostedBody)); Assert.True(response.IsSuccessful); List <SearchHit> searchHits = response.Get().SearchHits; Assert.AreEqual(1, searchHits.Count); Assert.AreEqual("@inputID", searchHits[0].Input.ID); IClarifaiInput input = searchHits[0].Input; Assert.AreEqual(InputType.Image, input.Type); Assert.AreEqual(InputForm.URL, input.Form); ClarifaiURLImage image = (ClarifaiURLImage)input; Assert.AreEqual("@inputURL", image.URL); }
public async Task SearchInputsByGeoLocationRequestAndResponseShouldBeCorrect() { var httpClient = new FkClarifaiHttpClient( postResponse: @" { ""status"": { ""code"": 10000, ""description"": ""Ok"" }, ""hits"": [ { ""score"": 0.99, ""input"": { ""id"": ""@inputID"", ""created_at"": ""2016-11-22T17:06:02Z"", ""data"": { ""image"": { ""url"": ""@inputURL"" } }, ""status"": { ""code"": 30000, ""description"": ""Download complete"" } } } ] } "); var client = new ClarifaiClient(httpClient); var response = await client.SearchInputs(SearchBy.Geo(new GeoPoint(1.5M, -1), new GeoRadius(1, GeoRadius.RadiusUnit.WithinKilometers))) .ExecuteAsync(); var expectedRequestBody = JObject.Parse(@" { ""query"": { ""ands"": [ { ""input"": { ""data"": { ""geo"": { ""geo_point"": { ""longitude"": 1.5, ""latitude"": -1.0 }, ""geo_limit"": { ""type"": ""withinKilometers"", ""value"": 1.0 } } } } } ] } }"); Assert.True(JToken.DeepEquals(expectedRequestBody, httpClient.PostedBody)); Assert.True(response.IsSuccessful); List <SearchHit> searchHits = response.Get().SearchHits; Assert.AreEqual(1, searchHits.Count); Assert.AreEqual("@inputID", searchHits[0].Input.ID); IClarifaiInput input = searchHits[0].Input; Assert.AreEqual(InputType.Image, input.Type); Assert.AreEqual(InputForm.URL, input.Form); ClarifaiURLImage image = (ClarifaiURLImage)input; Assert.AreEqual("@inputURL", image.URL); }
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); }
public async Task AddInputsResponseAndResponseShouldBeCorrect() { var httpClient = new FkClarifaiHttpClient( postResponse: @" { ""status"": { ""code"": 10000, ""description"": ""Ok"" }, ""inputs"": [{ ""id"": ""@inputID1"", ""data"": { ""image"": { ""url"": ""@imageURL1"" }, ""concepts"": [ { ""id"": ""@positiveConcept"", ""value"": 1 }, { ""id"": ""@negativeConcept"", ""value"": 0 } ] }, ""created_at"": ""2017-10-13T20:53:00.253139Z"", ""modified_at"": ""2017-10-13T20:53:00.868659782Z"", ""status"": { ""code"": 30200, ""description"": ""Input image modification success"" } }, { ""id"": ""@inputID2"", ""data"": { ""image"": { ""url"": ""@imageURL2"" }, ""geo"": { ""geo_point"": { ""longitude"": 55, ""latitude"": 66 } } }, ""created_at"": ""2017-10-13T20:53:00.253139Z"", ""modified_at"": ""2017-10-13T20:53:00.868659782Z"", ""status"": { ""code"": 30200, ""description"": ""Input image modification success"" } }] } "); var client = new ClarifaiClient(httpClient); ClarifaiResponse <List <IClarifaiInput> > response = await client.AddInputs( new IClarifaiInput[] { new ClarifaiURLImage("@imageURL1", "@inputID1", positiveConcepts: new List <Concept> { new Concept("@positiveConcept") }, negativeConcepts: new List <Concept> { new Concept("@negativeConcept") }), new ClarifaiURLImage("@imageURL2", "@inputID2", geo: new DTOs.GeoPoint(55, 66)) } ).ExecuteAsync(); var expectedRequestBody = JObject.Parse(@" { ""inputs"": [ { ""id"": ""@inputID1"", ""data"": { ""image"": { ""url"": ""@imageURL1"" }, ""concepts"": [ { ""id"": ""@positiveConcept"", ""value"": true }, { ""id"": ""@negativeConcept"", ""value"": false } ] } }, { ""id"": ""@inputID2"", ""data"": { ""image"": { ""url"": ""@imageURL2"" }, ""geo"": { ""geo_point"": { ""longitude"": 55.0, ""latitude"": 66.0 } } } } ] } "); Assert.True(JToken.DeepEquals(expectedRequestBody, httpClient.PostedBody)); Assert.True(response.IsSuccessful); Assert.AreEqual("Ok", response.Status.Description); var inputs = (List <IClarifaiInput>)response.Get(); Assert.True(response.IsSuccessful); Assert.AreEqual(inputs[0].ID, "@inputID1"); Assert.AreEqual(inputs[0].PositiveConcepts.ElementAt(0).ID, "@positiveConcept"); Assert.AreEqual(inputs[0].NegativeConcepts.ElementAt(0).ID, "@negativeConcept"); Assert.AreEqual(inputs[1].ID, "@inputID2"); Assert.AreEqual(inputs[1].Geo.Longitude, 55); Assert.AreEqual(inputs[1].Geo.Latitude, 66); }
public async Task ModifyModelRequestAndResponseShouldBeCorrect() { var httpClient = new FkClarifaiHttpClient( patchResponse: @" { ""status"": { ""code"": 10000, ""description"": ""Ok"" }, ""models"": [{ ""id"": ""@modelID"", ""name"": ""@newModelName"", ""created_at"": ""2017-11-27T08:35:13.911899Z"", ""app_id"": ""@appID"", ""output_info"": { ""output_config"": { ""concepts_mutually_exclusive"": true, ""closed_environment"": true }, ""message"": ""Show output_info with: GET /models/{model_id}/output_info"", ""type"": ""concept"", ""type_ext"": ""concept"" }, ""model_version"": { ""id"": ""@modelVersionID"", ""created_at"": ""2017-11-27T08:35:14.298376733Z"", ""status"": { ""code"": 21102, ""description"": ""Model not yet trained"" } } }] } "); var client = new ClarifaiClient(httpClient); var response = await client.ModifyModel( "@modelID", ModifyAction.Merge, name : "@newModelName", concepts : new List <Concept> { new Concept("@conceptID1") }, areConceptsMutuallyExclusive : true, isEnvironmentClosed : true) .ExecuteAsync(); var expectedRequestBody = JObject.Parse(@" { ""models"": [ { ""id"": ""@modelID"", ""name"": ""@newModelName"", ""output_info"": { ""data"": { ""concepts"": [ { ""id"": ""@conceptID1"" } ] }, ""output_config"": { ""concepts_mutually_exclusive"": true, ""closed_environment"": true } } } ], ""action"": ""merge"" } "); Assert.True(JToken.DeepEquals(expectedRequestBody, httpClient.PatchedBody)); Assert.True(response.IsSuccessful); Assert.AreEqual("Ok", response.Status.Description); ConceptModel model = response.Get(); Assert.AreEqual("@modelID", model.ModelID); Assert.AreEqual("@newModelName", model.Name); Assert.AreEqual("@modelVersionID", model.ModelVersion.ID); Assert.AreEqual(true, model.OutputInfo.AreConceptsMutuallyExclusive); Assert.AreEqual(true, model.OutputInfo.IsEnvironmentClosed); }