// the Free Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
// Boston, MA 02110-1301, USA.
-using System;
-using System.Collections.Generic;
-using System.IO;
-using System.Linq;
-using System.Text;
using System.Threading.Tasks;
using Moq;
using OpenTween.Connection;
[Fact]
public async Task Send_Test()
{
- var responseText = File.ReadAllText("Resources/Responses/CreateRetweet.json");
+ using var apiResponse = await TestUtils.CreateApiResponse("Resources/Responses/CreateRetweet.json");
- var mock = new Mock<IApiConnectionLegacy>();
+ var mock = new Mock<IApiConnection>();
mock.Setup(x =>
- x.PostJsonAsync(It.IsAny<Uri>(), It.IsAny<string>())
+ x.SendAsync(It.IsAny<IHttpRequest>())
)
- .Callback<Uri, string>((url, json) =>
+ .Callback<IHttpRequest>(x =>
{
- Assert.Equal(new("https://twitter.com/i/api/graphql/ojPdsZsimiJrUGLR1sjUtA/CreateRetweet"), url);
- Assert.Contains(@"""tweet_id"":""12345""", json);
+ var request = Assert.IsType<PostJsonRequest>(x);
+ Assert.Equal(new("https://twitter.com/i/api/graphql/ojPdsZsimiJrUGLR1sjUtA/CreateRetweet"), request.RequestUri);
+ Assert.Contains(@"""tweet_id"":""12345""", request.JsonString);
})
- .ReturnsAsync(responseText);
+ .ReturnsAsync(apiResponse);
var request = new CreateRetweetRequest
{
// the Free Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
// Boston, MA 02110-1301, USA.
-using System;
-using System.Collections.Generic;
-using System.IO;
-using System.Linq;
-using System.Text;
using System.Threading.Tasks;
using Moq;
using OpenTween.Connection;
[Fact]
public async Task Send_Test()
{
- var responseText = File.ReadAllText("Resources/Responses/CreateTweet_CircleTweet.json");
+ using var apiResponse = await TestUtils.CreateApiResponse("Resources/Responses/CreateTweet_CircleTweet.json");
- var mock = new Mock<IApiConnectionLegacy>();
+ var mock = new Mock<IApiConnection>();
mock.Setup(x =>
- x.PostJsonAsync(It.IsAny<Uri>(), It.IsAny<string>())
+ x.SendAsync(It.IsAny<IHttpRequest>())
)
- .Callback<Uri, string>((url, json) =>
+ .Callback<IHttpRequest>(x =>
{
- Assert.Equal(new("https://twitter.com/i/api/graphql/tTsjMKyhajZvK4q76mpIBg/CreateTweet"), url);
- Assert.Contains(@"""tweet_text"":""tetete""", json);
- Assert.DoesNotContain(@"""reply"":", json);
- Assert.DoesNotContain(@"""media"":", json);
+ var request = Assert.IsType<PostJsonRequest>(x);
+ Assert.Equal(new("https://twitter.com/i/api/graphql/tTsjMKyhajZvK4q76mpIBg/CreateTweet"), request.RequestUri);
+ Assert.Contains(@"""tweet_text"":""tetete""", request.JsonString);
+ Assert.DoesNotContain(@"""reply"":", request.JsonString);
+ Assert.DoesNotContain(@"""media"":", request.JsonString);
})
- .ReturnsAsync(responseText);
+ .ReturnsAsync(apiResponse);
var request = new CreateTweetRequest
{
[Fact]
public async Task Send_ReplyTest()
{
- var responseText = File.ReadAllText("Resources/Responses/CreateTweet_CircleTweet.json");
+ using var apiResponse = await TestUtils.CreateApiResponse("Resources/Responses/CreateTweet_CircleTweet.json");
- var mock = new Mock<IApiConnectionLegacy>();
+ var mock = new Mock<IApiConnection>();
mock.Setup(x =>
- x.PostJsonAsync(It.IsAny<Uri>(), It.IsAny<string>())
+ x.SendAsync(It.IsAny<IHttpRequest>())
)
- .Callback<Uri, string>((url, json) =>
+ .Callback<IHttpRequest>(x =>
{
- Assert.Contains(@"""reply"":{""exclude_reply_user_ids"":[""11111"",""22222""],""in_reply_to_tweet_id"":""12345""}", json);
+ var request = Assert.IsType<PostJsonRequest>(x);
+ Assert.Contains(@"""reply"":{""exclude_reply_user_ids"":[""11111"",""22222""],""in_reply_to_tweet_id"":""12345""}", request.JsonString);
})
- .ReturnsAsync(responseText);
+ .ReturnsAsync(apiResponse);
var request = new CreateTweetRequest
{
[Fact]
public async Task Send_MediaTest()
{
- var responseText = File.ReadAllText("Resources/Responses/CreateTweet_CircleTweet.json");
+ using var apiResponse = await TestUtils.CreateApiResponse("Resources/Responses/CreateTweet_CircleTweet.json");
- var mock = new Mock<IApiConnectionLegacy>();
+ var mock = new Mock<IApiConnection>();
mock.Setup(x =>
- x.PostJsonAsync(It.IsAny<Uri>(), It.IsAny<string>())
+ x.SendAsync(It.IsAny<IHttpRequest>())
)
- .Callback<Uri, string>((url, json) =>
+ .Callback<IHttpRequest>(x =>
{
- Assert.Contains(@"""media"":{""media_entities"":[{""media_id"":""11111"",""tagged_users"":[]},{""media_id"":""22222"",""tagged_users"":[]}],""possibly_sensitive"":false}", json);
+ var request = Assert.IsType<PostJsonRequest>(x);
+ Assert.Contains(@"""media"":{""media_entities"":[{""media_id"":""11111"",""tagged_users"":[]},{""media_id"":""22222"",""tagged_users"":[]}],""possibly_sensitive"":false}", request.JsonString);
})
- .ReturnsAsync(responseText);
+ .ReturnsAsync(apiResponse);
var request = new CreateTweetRequest
{
// the Free Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
// Boston, MA 02110-1301, USA.
-using System;
-using System.Collections.Generic;
-using System.IO;
-using System.Linq;
-using System.Text;
using System.Threading.Tasks;
using Moq;
using OpenTween.Connection;
[Fact]
public async Task Send_Test()
{
- var mock = new Mock<IApiConnectionLegacy>();
+ using var apiResponse = await TestUtils.CreateApiResponse("Resources/Responses/DeleteRetweet.json");
+
+ var mock = new Mock<IApiConnection>();
mock.Setup(x =>
- x.PostJsonAsync(It.IsAny<Uri>(), It.IsAny<string>())
+ x.SendAsync(It.IsAny<IHttpRequest>())
)
- .Callback<Uri, string>((url, json) =>
+ .Callback<IHttpRequest>(x =>
{
- Assert.Equal(new("https://twitter.com/i/api/graphql/iQtK4dl5hBmXewYZuEOKVw/DeleteRetweet"), url);
- Assert.Contains(@"""source_tweet_id"":""12345""", json);
- });
+ var request = Assert.IsType<PostJsonRequest>(x);
+ Assert.Equal(new("https://twitter.com/i/api/graphql/iQtK4dl5hBmXewYZuEOKVw/DeleteRetweet"), request.RequestUri);
+ Assert.Contains(@"""source_tweet_id"":""12345""", request.JsonString);
+ })
+ .ReturnsAsync(apiResponse);
var request = new DeleteRetweetRequest
{
// the Free Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
// Boston, MA 02110-1301, USA.
-using System;
-using System.Collections.Generic;
-using System.IO;
-using System.Linq;
-using System.Text;
using System.Threading.Tasks;
using Moq;
using OpenTween.Connection;
[Fact]
public async Task Send_Test()
{
- var mock = new Mock<IApiConnectionLegacy>();
+ using var apiResponse = await TestUtils.CreateApiResponse("Resources/Responses/DeleteTweet.json");
+
+ var mock = new Mock<IApiConnection>();
mock.Setup(x =>
- x.PostJsonAsync(It.IsAny<Uri>(), It.IsAny<string>())
+ x.SendAsync(It.IsAny<IHttpRequest>())
)
- .Callback<Uri, string>((url, json) =>
+ .Callback<IHttpRequest>(x =>
{
- Assert.Equal(new("https://twitter.com/i/api/graphql/VaenaVgh5q5ih7kvyVjgtg/DeleteTweet"), url);
- Assert.Contains(@"""tweet_id"":""12345""", json);
- });
+ var request = Assert.IsType<PostJsonRequest>(x);
+ Assert.Equal(new("https://twitter.com/i/api/graphql/VaenaVgh5q5ih7kvyVjgtg/DeleteTweet"), request.RequestUri);
+ Assert.Contains(@"""tweet_id"":""12345""", request.JsonString);
+ })
+ .ReturnsAsync(apiResponse);
var request = new DeleteTweetRequest
{
<None Update="Resources\Responses\CreateTweet_CircleTweet.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
+ <None Update="Resources\Responses\DeleteRetweet.json">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </None>
+ <None Update="Resources\Responses\DeleteTweet.json">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </None>
<None Update="Resources\Responses\Error_NotFound.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
--- /dev/null
+{
+ "data": {
+ "unretweet": {
+ "source_tweet_results": {
+ "result": {
+ "rest_id": "1234567890123456789",
+ "legacy": {
+ "full_text": "foo"
+ }
+ }
+ }
+ }
+ }
+}
--- /dev/null
+{
+ "data": {
+ "delete_tweet": {
+ "tweet_results": {}
+ }
+ }
+}
#nullable enable
using System;
-using System.Collections.Generic;
-using System.IO;
-using System.Linq;
-using System.Runtime.Serialization.Json;
-using System.Text;
using System.Threading.Tasks;
-using System.Xml;
-using System.Xml.Linq;
using System.Xml.XPath;
using OpenTween.Connection;
using OpenTween.Models;
""";
}
- public async Task<TwitterStatusId> Send(IApiConnectionLegacy apiConnection)
+ public async Task<TwitterStatusId> Send(IApiConnection apiConnection)
{
- var json = this.CreateRequestBody();
- var response = await apiConnection.PostJsonAsync(EndpointUri, json);
- var responseBytes = Encoding.UTF8.GetBytes(response);
- using var jsonReader = JsonReaderWriterFactory.CreateJsonReader(responseBytes, XmlDictionaryReaderQuotas.Max);
+ var request = new PostJsonRequest
+ {
+ RequestUri = EndpointUri,
+ JsonString = this.CreateRequestBody(),
+ };
+
+ using var response = await apiConnection.SendAsync(request)
+ .ConfigureAwait(false);
+
+ var rootElm = await response.ReadAsJsonXml()
+ .ConfigureAwait(false);
- var rootElm = XElement.Load(jsonReader);
ErrorResponse.ThrowIfError(rootElm);
var tweetIdStr = rootElm.XPathSelectElement("/data/create_retweet/retweet_results/result/rest_id")?.Value ?? throw CreateParseError();
using System;
using System.Collections.Generic;
-using System.IO;
using System.Linq;
using System.Runtime.Serialization;
-using System.Runtime.Serialization.Json;
-using System.Text;
using System.Threading.Tasks;
-using System.Xml;
-using System.Xml.Linq;
using System.Xml.XPath;
using OpenTween.Api.DataModel;
using OpenTween.Connection;
return JsonUtils.SerializeJsonByDataContract(body);
}
- public async Task<TwitterStatus> Send(IApiConnectionLegacy apiConnection)
+ public async Task<TwitterStatus> Send(IApiConnection apiConnection)
{
- var json = this.CreateRequestBody();
- var response = await apiConnection.PostJsonAsync(EndpointUri, json);
- var responseBytes = Encoding.UTF8.GetBytes(response);
- using var jsonReader = JsonReaderWriterFactory.CreateJsonReader(responseBytes, XmlDictionaryReaderQuotas.Max);
+ var request = new PostJsonRequest
+ {
+ RequestUri = EndpointUri,
+ JsonString = this.CreateRequestBody(),
+ };
+
+ using var response = await apiConnection.SendAsync(request)
+ .ConfigureAwait(false);
+
+ var rootElm = await response.ReadAsJsonXml()
+ .ConfigureAwait(false);
- var rootElm = XElement.Load(jsonReader);
ErrorResponse.ThrowIfError(rootElm);
var tweetElm = rootElm.XPathSelectElement("/data/create_tweet/tweet_results/result") ?? throw CreateParseError();
#nullable enable
using System;
-using System.Collections.Generic;
-using System.IO;
-using System.Linq;
-using System.Text;
using System.Threading.Tasks;
using OpenTween.Connection;
using OpenTween.Models;
""";
}
- public async Task Send(IApiConnectionLegacy apiConnection)
+ public async Task Send(IApiConnection apiConnection)
{
- var json = this.CreateRequestBody();
- var responseText = await apiConnection.PostJsonAsync(EndpointUri, json);
- ErrorResponse.ThrowIfError(responseText);
+ var request = new PostJsonRequest
+ {
+ RequestUri = EndpointUri,
+ JsonString = this.CreateRequestBody(),
+ };
+
+ using var response = await apiConnection.SendAsync(request)
+ .ConfigureAwait(false);
+
+ var rootElm = await response.ReadAsJsonXml()
+ .ConfigureAwait(false);
+
+ ErrorResponse.ThrowIfError(rootElm);
}
}
}
#nullable enable
using System;
-using System.Collections.Generic;
-using System.IO;
-using System.Linq;
-using System.Text;
using System.Threading.Tasks;
using OpenTween.Connection;
using OpenTween.Models;
""";
}
- public async Task Send(IApiConnectionLegacy apiConnection)
+ public async Task Send(IApiConnection apiConnection)
{
- var json = this.CreateRequestBody();
- var responseText = await apiConnection.PostJsonAsync(EndpointUri, json);
- ErrorResponse.ThrowIfError(responseText);
+ var request = new PostJsonRequest
+ {
+ RequestUri = EndpointUri,
+ JsonString = this.CreateRequestBody(),
+ };
+
+ using var response = await apiConnection.SendAsync(request)
+ .ConfigureAwait(false);
+
+ var rootElm = await response.ReadAsJsonXml()
+ .ConfigureAwait(false);
+
+ ErrorResponse.ThrowIfError(rootElm);
}
}
}