如何使用 ruby 将目录文件上传到 Azure 认知服务?
How to upload a catalog file to azure cognitive service with ruby?
我想将目录文件上传到推荐 api(使用 ruby 语言的 Azure 认知服务。
使用 C# 我将得到下一个代码(摘自 https://github.com/Microsoft/Cognitive-Recommendations-Windows/blob/master/Sample/RecommendationsApiWrapper.cs):
public CatalogImportStats UploadCatalog(string modelId, string catalogFilePath, string catalogDisplayName)
{
Console.WriteLine("Uploading " + catalogDisplayName + " ...");
string uri = BaseUri + "/models/" + modelId + "/catalog?catalogDisplayName=" + catalogDisplayName;
using (var filestream = new FileStream(catalogFilePath, FileMode.Open, FileAccess.Read))
{
var response = _httpClient.PostAsync(uri, new StreamContent(filestream)).Result;
if (!response.IsSuccessStatusCode)
{
throw new Exception(
String.Format("Error {0}: Failed to import catalog items {1}, for model {2} \n reason {3}",
response.StatusCode, catalogFilePath, modelId, ExtractErrorInfo(response)));
}
var jsonString = ExtractReponse(response);
var catalogImportStats = JsonConvert.DeserializeObject<CatalogImportStats>(jsonString);
return catalogImportStats;
}
如何使用 ruby 和 http 客户端将目录文件上传到认知服务?。我需要一个基本的示例代码。
谢谢
我在这里上传了一个样本:https://github.com/miparnisari/ruby-cognitive-services
但要点是:
require 'net/http'
require 'IO/console'
class RecommendationsClient
def initialize(subscription_key, region)
@base_url="https://#{region}.api.cognitive.microsoft.com/recommendations/v4.0"
@subscription_key=subscription_key
end
def upload_catalog(model_id, catalog_display_name, catalog_path)
uri = URI("#{@base_url}/models/#{model_id}/catalog?catalogDisplayName=#{catalog_display_name}")
request = Net::HTTP::Post.new(uri.request_uri)
request['Content-Type'] = 'application/octet-stream'
request['Ocp-Apim-Subscription-Key'] = "#{@subscription_key}"
request.body = IO.binread(catalog_path)
response = Net::HTTP.start(uri.host, uri.port, :use_ssl => uri.scheme == 'https') do |http|
http.request(request)
end
return response.body
end
end
然后:
r = RecommendationsClient.new("your_key_here", "westus")
response = r.upload_catalog('1', 'catalog', 'books_catalog.txt')
puts response
我想将目录文件上传到推荐 api(使用 ruby 语言的 Azure 认知服务。
使用 C# 我将得到下一个代码(摘自 https://github.com/Microsoft/Cognitive-Recommendations-Windows/blob/master/Sample/RecommendationsApiWrapper.cs):
public CatalogImportStats UploadCatalog(string modelId, string catalogFilePath, string catalogDisplayName)
{
Console.WriteLine("Uploading " + catalogDisplayName + " ...");
string uri = BaseUri + "/models/" + modelId + "/catalog?catalogDisplayName=" + catalogDisplayName;
using (var filestream = new FileStream(catalogFilePath, FileMode.Open, FileAccess.Read))
{
var response = _httpClient.PostAsync(uri, new StreamContent(filestream)).Result;
if (!response.IsSuccessStatusCode)
{
throw new Exception(
String.Format("Error {0}: Failed to import catalog items {1}, for model {2} \n reason {3}",
response.StatusCode, catalogFilePath, modelId, ExtractErrorInfo(response)));
}
var jsonString = ExtractReponse(response);
var catalogImportStats = JsonConvert.DeserializeObject<CatalogImportStats>(jsonString);
return catalogImportStats;
}
如何使用 ruby 和 http 客户端将目录文件上传到认知服务?。我需要一个基本的示例代码。
谢谢
我在这里上传了一个样本:https://github.com/miparnisari/ruby-cognitive-services
但要点是:
require 'net/http'
require 'IO/console'
class RecommendationsClient
def initialize(subscription_key, region)
@base_url="https://#{region}.api.cognitive.microsoft.com/recommendations/v4.0"
@subscription_key=subscription_key
end
def upload_catalog(model_id, catalog_display_name, catalog_path)
uri = URI("#{@base_url}/models/#{model_id}/catalog?catalogDisplayName=#{catalog_display_name}")
request = Net::HTTP::Post.new(uri.request_uri)
request['Content-Type'] = 'application/octet-stream'
request['Ocp-Apim-Subscription-Key'] = "#{@subscription_key}"
request.body = IO.binread(catalog_path)
response = Net::HTTP.start(uri.host, uri.port, :use_ssl => uri.scheme == 'https') do |http|
http.request(request)
end
return response.body
end
end
然后:
r = RecommendationsClient.new("your_key_here", "westus")
response = r.upload_catalog('1', 'catalog', 'books_catalog.txt')
puts response