This is the code I have so far:
[HttpGet]
[Route("api/search-music")]
public async Task<List<SongFilterPreview>> GetSongs([FromUri] string searchTerm)
{
var token = await ServiceContext.TokenService.isAccessTokenExpired();
HttpClient client = new HttpClient();
UriBuilder builder = new UriBuilder(searchURL);
builder.Query = "type=searchByValue&&searchTerm=" + searchTerm;
client.DefaultRequestHeaders.Add("Authorization", "Bearer " + token);
HttpResponseMessage message = client.GetAsync(builder.Uri).Result;
string result = message.Content.ReadAsStringAsync().Result;
dynamic items = new JavaScriptSerializer().Deserialize<List<object>>(result);
List<SongFilterPreview> songs = new List<SongFilterPreview>();
foreach(var item in items)
{
var sfp = new SongFilterPreview()
{
songId = item["id"],
songName = item["title"],
Performer = item["group"],
songUrl = await CreateMediaUrl(item["id"])
};
songs.Add(sfp);
}
return songs;
}
public async Task<string> CreateMediaUrl(int songId)
{
var playToken = await ServiceContext.TokenService.isPlayTokenExpired();
var objectData = new
{
playToken = playToken,
secure = true
};
HttpClient client = new HttpClient();
client.BaseAddress = new Uri("https://apis.tunify.com/t4-media-service/zone/529155/track/" + songId + "/media-url/");
client.DefaultRequestHeaders.Add("Authorization", "Bearer " + "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VySWQiOjUyOTE1NSwiem9uZUlkIjo1MjkxNTUsImFwcElkIjo2NSwiY2xpZW50X2lkIjoiNjUiLCJhdXRob3JpdGllcyI6WyJSRUFEX1BSSVZJTEVHRSJdLCJzY29wZSI6WyJyZWFkIl0sImlhdCI6MTYxNDc3MDUwMSwiZXhwIjoxNjE0ODQyNTAxfQ.xmooyG3oFccoDNsTEsWlloLhAm0DgIw0_GFJ1uLXkZk");
var content = new StringContent(new JavaScriptSerializer().Serialize(objectData), Encoding.UTF8, "application/json");
var message = await client.PostAsync("https://apis.tunify.com/t4-media-service/zone/529155/track/" + songId + "/media-url/", content);
string result = message.Content.ReadAsStringAsync().Result;
dynamic item = new JavaScriptSerializer().Deserialize<object>(result);
var oneUrl = "";
foreach (var url in item)
{
oneUrl = url["url"];
}
return oneUrl;
}
I want iterate through the list of songs and fetch the url for each song, but my application doesn't send me response. I know what the problem is, it is CreateMediaUrl (client.SendPost) but I don't know who to fix it. when i send request from postman, i just can see "Sending request". How can i fix this?