ranking and analise endpoints
This commit is contained in:
parent
a77cf011d3
commit
3dd504a287
@ -11,6 +11,7 @@ using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Net.Http;
|
||||
using System.Net.Http.Headers;
|
||||
using System.Net.Http.Json;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace BitSearch.API.Controllers
|
||||
@ -32,11 +33,37 @@ namespace BitSearch.API.Controllers
|
||||
}
|
||||
|
||||
[HttpGet("ranking")]
|
||||
public IActionResult GetRanking()
|
||||
public async Task<IActionResult> GetRanking()
|
||||
{
|
||||
//var request = new HttpRequestMessage(HttpMethod.Get, "https://api.twitter.com/2/tweets/counts/recent");
|
||||
var cryptoHash = new Dictionary<string, string>()
|
||||
{
|
||||
{"Bitcoin", "#btc"},
|
||||
{"Etherum", "#eth"},
|
||||
{"Ripple", "xrp"},
|
||||
{"Litecoin", "#ltc"},
|
||||
{"Binance Coin", "#binance"}
|
||||
};
|
||||
|
||||
return Ok();
|
||||
var token = Configuration["Token"];
|
||||
var twitterClient = _httpClientFactory.CreateClient();
|
||||
twitterClient.BaseAddress = new Uri("https://api.twitter.com/2/tweets/counts/");
|
||||
twitterClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
|
||||
twitterClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
|
||||
var ranking = new List<CryptoRanking>();
|
||||
|
||||
foreach (KeyValuePair<string, string> crypto in cryptoHash)
|
||||
{
|
||||
var requestUri = QueryHelpers.AddQueryString("recent", "query", crypto.Value);
|
||||
var request = new HttpRequestMessage(HttpMethod.Get, requestUri);
|
||||
var response = await twitterClient.SendAsync(request);
|
||||
if (response.IsSuccessStatusCode)
|
||||
{
|
||||
var tweetsDto = JsonConvert.DeserializeObject<TweetCount>(await response.Content.ReadAsStringAsync());
|
||||
ranking.Add(new CryptoRanking() { Name = crypto.Key, TweetAmount = tweetsDto.meta.total_tweet_count });
|
||||
}
|
||||
}
|
||||
|
||||
return Ok(ranking.OrderByDescending(r => r.TweetAmount));
|
||||
}
|
||||
|
||||
[HttpGet("analise/{hash}")]
|
||||
@ -44,23 +71,31 @@ namespace BitSearch.API.Controllers
|
||||
{
|
||||
var queryString = new Dictionary<string, string>()
|
||||
{
|
||||
{"query", hash},
|
||||
{"query", $"#{hash}"},
|
||||
{"max_results", "100"},
|
||||
{"tweet.fields", "lang,referenced_tweets"},
|
||||
};
|
||||
|
||||
var token = Configuration["Token"];
|
||||
var httpClient = _httpClientFactory.CreateClient();
|
||||
httpClient.BaseAddress = new Uri("https://api.twitter.com/2/tweets/search/");
|
||||
var twitterClient = _httpClientFactory.CreateClient();
|
||||
twitterClient.BaseAddress = new Uri("https://api.twitter.com/2/tweets/search/");
|
||||
var requestUri = QueryHelpers.AddQueryString("recent", queryString);
|
||||
var request = new HttpRequestMessage(HttpMethod.Get, requestUri);
|
||||
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
|
||||
httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
|
||||
var response = await httpClient.SendAsync(request);
|
||||
var twiiterRequest = new HttpRequestMessage(HttpMethod.Get, requestUri);
|
||||
twitterClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
|
||||
twitterClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
|
||||
var response = await twitterClient.SendAsync(twiiterRequest);
|
||||
|
||||
if (response.IsSuccessStatusCode)
|
||||
{
|
||||
return Ok(await response.Content.ReadAsStringAsync());
|
||||
var tweetsDto = JsonConvert.DeserializeObject<TweeterResponse>(await response.Content.ReadAsStringAsync());
|
||||
tweetsDto.data = tweetsDto.data.Where(d => d.lang == "en");
|
||||
var microServiceClient = _httpClientFactory.CreateClient();
|
||||
var microServiceRequest = new HttpRequestMessage(HttpMethod.Get, "http://127.0.0.1:5000/analysis");
|
||||
microServiceRequest.Content = JsonContent.Create(tweetsDto);
|
||||
var microServiceResponse = await microServiceClient.SendAsync(microServiceRequest);
|
||||
|
||||
return Ok(await microServiceResponse.Content.ReadAsStringAsync());
|
||||
//return Ok(tweetsDto);
|
||||
}
|
||||
|
||||
return Ok(response);
|
||||
|
12
BitSearch/BitSearch.API/Models/BaseTweetsDto.cs
Normal file
12
BitSearch/BitSearch.API/Models/BaseTweetsDto.cs
Normal file
@ -0,0 +1,12 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace BitSearch.API.Models
|
||||
{
|
||||
public class BaseTweetsDto<T>
|
||||
{
|
||||
public IEnumerable<T> data { get; set; }
|
||||
}
|
||||
}
|
@ -1,15 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace BitSearch.API.Models
|
||||
{
|
||||
public class CryptoAnalysis
|
||||
{
|
||||
public string Name { get; set; }
|
||||
public decimal Positive { get; set; }
|
||||
public decimal Negative { get; set; }
|
||||
|
||||
}
|
||||
}
|
@ -6,9 +6,8 @@ using System.Threading.Tasks;
|
||||
namespace BitSearch.API.Models
|
||||
{
|
||||
public class CryptoRanking
|
||||
{
|
||||
{
|
||||
public string Name { get; set; }
|
||||
public string Hasztag { get; set; }
|
||||
public int TweetAmount { get; set; }
|
||||
}
|
||||
}
|
||||
|
12
BitSearch/BitSearch.API/Models/MetaData.cs
Normal file
12
BitSearch/BitSearch.API/Models/MetaData.cs
Normal file
@ -0,0 +1,12 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace BitSearch.API.Models
|
||||
{
|
||||
public class MetaData
|
||||
{
|
||||
public int total_tweet_count { get; set; }
|
||||
}
|
||||
}
|
13
BitSearch/BitSearch.API/Models/ReferencedTweets.cs
Normal file
13
BitSearch/BitSearch.API/Models/ReferencedTweets.cs
Normal file
@ -0,0 +1,13 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace BitSearch.API.Models
|
||||
{
|
||||
public class ReferencedTweets
|
||||
{
|
||||
public string type { get; set; }
|
||||
public string id { get; set; }
|
||||
}
|
||||
}
|
12
BitSearch/BitSearch.API/Models/TweetCount.cs
Normal file
12
BitSearch/BitSearch.API/Models/TweetCount.cs
Normal file
@ -0,0 +1,12 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace BitSearch.API.Models
|
||||
{
|
||||
public class TweetCount
|
||||
{
|
||||
public MetaData meta { get; set; }
|
||||
}
|
||||
}
|
11
BitSearch/BitSearch.API/Models/TweeterResponse.cs
Normal file
11
BitSearch/BitSearch.API/Models/TweeterResponse.cs
Normal file
@ -0,0 +1,11 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace BitSearch.API.Models
|
||||
{
|
||||
public class TweeterResponse : BaseTweetsDto<TweetsDto>
|
||||
{
|
||||
}
|
||||
}
|
15
BitSearch/BitSearch.API/Models/TweetsDto.cs
Normal file
15
BitSearch/BitSearch.API/Models/TweetsDto.cs
Normal file
@ -0,0 +1,15 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace BitSearch.API.Models
|
||||
{
|
||||
public class TweetsDto
|
||||
{
|
||||
public string id { get; set; }
|
||||
public string text { get; set; }
|
||||
public string lang { get; set; }
|
||||
public IEnumerable<ReferencedTweets> referenced_tweets { get; set; }
|
||||
}
|
||||
}
|
@ -1,13 +1,13 @@
|
||||
{
|
||||
"$schema": "http://json.schemastore.org/launchsettings.json",
|
||||
{
|
||||
"iisSettings": {
|
||||
"windowsAuthentication": false,
|
||||
"anonymousAuthentication": true,
|
||||
"iisExpress": {
|
||||
"applicationUrl": "http://localhost:62241",
|
||||
"sslPort": 44393
|
||||
"sslPort": 0
|
||||
}
|
||||
},
|
||||
"$schema": "http://json.schemastore.org/launchsettings.json",
|
||||
"profiles": {
|
||||
"IIS Express": {
|
||||
"commandName": "IISExpress",
|
||||
@ -19,13 +19,13 @@
|
||||
},
|
||||
"BitSearch.API": {
|
||||
"commandName": "Project",
|
||||
"dotnetRunMessages": "true",
|
||||
"launchBrowser": true,
|
||||
"launchUrl": "swagger",
|
||||
"applicationUrl": "https://localhost:5001;http://localhost:5000",
|
||||
"environmentVariables": {
|
||||
"ASPNETCORE_ENVIRONMENT": "Development"
|
||||
}
|
||||
},
|
||||
"dotnetRunMessages": "true",
|
||||
"applicationUrl": "https://localhost:5001;http://localhost:5000"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user