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.Linq;
|
||||||
using System.Net.Http;
|
using System.Net.Http;
|
||||||
using System.Net.Http.Headers;
|
using System.Net.Http.Headers;
|
||||||
|
using System.Net.Http.Json;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace BitSearch.API.Controllers
|
namespace BitSearch.API.Controllers
|
||||||
@ -32,11 +33,37 @@ namespace BitSearch.API.Controllers
|
|||||||
}
|
}
|
||||||
|
|
||||||
[HttpGet("ranking")]
|
[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}")]
|
[HttpGet("analise/{hash}")]
|
||||||
@ -44,23 +71,31 @@ namespace BitSearch.API.Controllers
|
|||||||
{
|
{
|
||||||
var queryString = new Dictionary<string, string>()
|
var queryString = new Dictionary<string, string>()
|
||||||
{
|
{
|
||||||
{"query", hash},
|
{"query", $"#{hash}"},
|
||||||
{"max_results", "100"},
|
{"max_results", "100"},
|
||||||
{"tweet.fields", "lang,referenced_tweets"},
|
{"tweet.fields", "lang,referenced_tweets"},
|
||||||
};
|
};
|
||||||
|
|
||||||
var token = Configuration["Token"];
|
var token = Configuration["Token"];
|
||||||
var httpClient = _httpClientFactory.CreateClient();
|
var twitterClient = _httpClientFactory.CreateClient();
|
||||||
httpClient.BaseAddress = new Uri("https://api.twitter.com/2/tweets/search/");
|
twitterClient.BaseAddress = new Uri("https://api.twitter.com/2/tweets/search/");
|
||||||
var requestUri = QueryHelpers.AddQueryString("recent", queryString);
|
var requestUri = QueryHelpers.AddQueryString("recent", queryString);
|
||||||
var request = new HttpRequestMessage(HttpMethod.Get, requestUri);
|
var twiiterRequest = new HttpRequestMessage(HttpMethod.Get, requestUri);
|
||||||
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
|
twitterClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
|
||||||
httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
|
twitterClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
|
||||||
var response = await httpClient.SendAsync(request);
|
var response = await twitterClient.SendAsync(twiiterRequest);
|
||||||
|
|
||||||
if (response.IsSuccessStatusCode)
|
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);
|
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; }
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
@ -8,7 +8,6 @@ namespace BitSearch.API.Models
|
|||||||
public class CryptoRanking
|
public class CryptoRanking
|
||||||
{
|
{
|
||||||
public string Name { get; set; }
|
public string Name { get; set; }
|
||||||
public string Hasztag { get; set; }
|
|
||||||
public int TweetAmount { 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": {
|
"iisSettings": {
|
||||||
"windowsAuthentication": false,
|
"windowsAuthentication": false,
|
||||||
"anonymousAuthentication": true,
|
"anonymousAuthentication": true,
|
||||||
"iisExpress": {
|
"iisExpress": {
|
||||||
"applicationUrl": "http://localhost:62241",
|
"applicationUrl": "http://localhost:62241",
|
||||||
"sslPort": 44393
|
"sslPort": 0
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"$schema": "http://json.schemastore.org/launchsettings.json",
|
||||||
"profiles": {
|
"profiles": {
|
||||||
"IIS Express": {
|
"IIS Express": {
|
||||||
"commandName": "IISExpress",
|
"commandName": "IISExpress",
|
||||||
@ -19,13 +19,13 @@
|
|||||||
},
|
},
|
||||||
"BitSearch.API": {
|
"BitSearch.API": {
|
||||||
"commandName": "Project",
|
"commandName": "Project",
|
||||||
"dotnetRunMessages": "true",
|
|
||||||
"launchBrowser": true,
|
"launchBrowser": true,
|
||||||
"launchUrl": "swagger",
|
"launchUrl": "swagger",
|
||||||
"applicationUrl": "https://localhost:5001;http://localhost:5000",
|
|
||||||
"environmentVariables": {
|
"environmentVariables": {
|
||||||
"ASPNETCORE_ENVIRONMENT": "Development"
|
"ASPNETCORE_ENVIRONMENT": "Development"
|
||||||
}
|
},
|
||||||
|
"dotnetRunMessages": "true",
|
||||||
|
"applicationUrl": "https://localhost:5001;http://localhost:5000"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user