Skip to content

Commit 49db1b3

Browse files
committed
Send Message
1 parent add87d4 commit 49db1b3

11 files changed

+137
-22
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
using System;
2+
using Messenger.Client.Config;
3+
using Messenger.Client.Services;
4+
using Messenger.Client.Services.Impl;
5+
using Messenger.Client.Utilities;
6+
using Microsoft.Extensions.DependencyInjection;
7+
8+
namespace Messenger.Client.Extensions
9+
{
10+
public static class ServicesExtensions
11+
{
12+
public static void AddMessengerClient(this IServiceCollection services, String accessToken = "")
13+
{
14+
if (!String.IsNullOrEmpty(accessToken))
15+
{
16+
MessengerConfig.AccessToken = accessToken;
17+
}
18+
19+
services.AddSingleton<IMessengerSerializer, JsonMessengerSerializer>();
20+
services.AddSingleton<IMessengerMessageSender, MessengerMessageSender>();
21+
}
22+
}
23+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3+
<PropertyGroup>
4+
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">14.0</VisualStudioVersion>
5+
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
6+
</PropertyGroup>
7+
<Import Project="$(VSToolsPath)\DotNet\Microsoft.DotNet.Props" Condition="'$(VSToolsPath)' != ''" />
8+
<PropertyGroup Label="Globals">
9+
<ProjectGuid>da848ca4-f166-4151-aafd-29864365d454</ProjectGuid>
10+
<RootNamespace>Messenger.Client</RootNamespace>
11+
<BaseIntermediateOutputPath Condition="'$(BaseIntermediateOutputPath)'=='' ">.\obj</BaseIntermediateOutputPath>
12+
<OutputPath Condition="'$(OutputPath)'=='' ">.\bin\</OutputPath>
13+
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
14+
</PropertyGroup>
15+
<PropertyGroup>
16+
<SchemaVersion>2.0</SchemaVersion>
17+
</PropertyGroup>
18+
<Import Project="$(VSToolsPath)\DotNet\Microsoft.DotNet.targets" Condition="'$(VSToolsPath)' != ''" />
19+
</Project>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
using System.Reflection;
2+
using System.Runtime.CompilerServices;
3+
using System.Runtime.InteropServices;
4+
5+
// General Information about an assembly is controlled through the following
6+
// set of attributes. Change these attribute values to modify the information
7+
// associated with an assembly.
8+
[assembly: AssemblyConfiguration("")]
9+
[assembly: AssemblyCompany("")]
10+
[assembly: AssemblyProduct("Messenger.Client.Extensions")]
11+
[assembly: AssemblyTrademark("")]
12+
13+
// Setting ComVisible to false makes the types in this assembly not visible
14+
// to COM components. If you need to access a type in this assembly from
15+
// COM, set the ComVisible attribute to true on that type.
16+
[assembly: ComVisible(false)]
17+
18+
// The following GUID is for the ID of the typelib if this project is exposed to COM
19+
[assembly: Guid("da848ca4-f166-4151-aafd-29864365d454")]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
{
2+
"version": "0.1.0",
3+
"title": "Facebook Messenger .NET Client ASP.NET Core Extensions",
4+
"description": "ASP.NET Core extensions for Facebook Messenger Platform .NET client",
5+
"authors": [ "Andrew Kamarouski" ],
6+
7+
"packOptions": {
8+
"projectUrl": "https://github.com/kamarouski/messenger-client",
9+
"tags": [ "facebook", "messenger", "chatbot", "bot" ],
10+
"requireLicenseAcceptance": false,
11+
"licenseUrl": "http://www.opensource.org/licenses/MIT",
12+
"repository": {
13+
"type": "git",
14+
"url": "https://github.com/kamarouski/messenger-client"
15+
}
16+
},
17+
18+
"dependencies": {
19+
"Messenger.Client": "0.0.3",
20+
"Microsoft.Extensions.DependencyInjection": "1.0.0-rc2-final",
21+
"NETStandard.Library": "1.5.0-rc2-24027"
22+
},
23+
24+
"frameworks": {
25+
"netstandard1.5": {
26+
"imports": "dnxcore50"
27+
}
28+
}
29+
}

src/Messenger.Client.sln

+6
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ VisualStudioVersion = 14.0.25123.0
55
MinimumVisualStudioVersion = 10.0.40219.1
66
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Messenger.Client", "Messenger.Client\Messenger.Client.xproj", "{83C4680A-BDFF-4CB5-9A9A-C6205B88575E}"
77
EndProject
8+
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Messenger.Client.Extensions", "Messenger.Client.Extensions\Messenger.Client.Extensions.xproj", "{DA848CA4-F166-4151-AAFD-29864365D454}"
9+
EndProject
810
Global
911
GlobalSection(SolutionConfigurationPlatforms) = preSolution
1012
Debug|Any CPU = Debug|Any CPU
@@ -15,6 +17,10 @@ Global
1517
{83C4680A-BDFF-4CB5-9A9A-C6205B88575E}.Debug|Any CPU.Build.0 = Debug|Any CPU
1618
{83C4680A-BDFF-4CB5-9A9A-C6205B88575E}.Release|Any CPU.ActiveCfg = Release|Any CPU
1719
{83C4680A-BDFF-4CB5-9A9A-C6205B88575E}.Release|Any CPU.Build.0 = Release|Any CPU
20+
{DA848CA4-F166-4151-AAFD-29864365D454}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
21+
{DA848CA4-F166-4151-AAFD-29864365D454}.Debug|Any CPU.Build.0 = Debug|Any CPU
22+
{DA848CA4-F166-4151-AAFD-29864365D454}.Release|Any CPU.ActiveCfg = Release|Any CPU
23+
{DA848CA4-F166-4151-AAFD-29864365D454}.Release|Any CPU.Build.0 = Release|Any CPU
1824
EndGlobalSection
1925
GlobalSection(SolutionProperties) = preSolution
2026
HideSolutionNode = FALSE
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,16 @@
11
using System;
2-
using System.Collections.Generic;
3-
using System.Linq;
4-
using System.Threading.Tasks;
52

63
namespace Messenger.Client.Objects
74
{
85
public class MessengerMessage
96
{
107
public String Mid { get; set; }
118

12-
public int Seq { get; set; }
9+
public int? Seq { get; set; } = null;
1310

1411
public String Text { get; set; }
1512

16-
public ICollection<MessengerAttachment> Attachments { get; set; }
13+
public MessengerAttachment Attachment { get; set; }
1714

1815
}
1916
}

src/Messenger.Client/Services/IMesengerMessageSender.cs

-10
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
using System;
2+
using System.Threading.Tasks;
3+
using Messenger.Client.Objects;
4+
5+
namespace Messenger.Client.Services
6+
{
7+
public interface IMessengerMessageSender
8+
{
9+
Task<MessengerResponse> SendAsync(MessengerMessage message, MessengerUser recipient);
10+
11+
Task<MessengerResponse> SendAsync(MessengerMessage message, MessengerUser recipient, String accessToken);
12+
}
13+
}

src/Messenger.Client/Services/Impl/MessengerMessageSender.cs

+14-6
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System;
22
using System.Net.Http;
3+
using System.Net.Http.Headers;
34
using System.Threading.Tasks;
45
using Messenger.Client.Config;
56
using Messenger.Client.Errors;
@@ -8,25 +9,31 @@
89

910
namespace Messenger.Client.Services.Impl
1011
{
11-
public class MessengerMessageSender : IMesengerMessageSender
12+
public class MessengerMessageSender : IMessengerMessageSender
1213
{
1314
private const String UrlTemplate = "https://graph.facebook.com/v2.6/me/messages?access_token={0}";
1415

1516
private readonly HttpClient client;
1617
private readonly IMessengerSerializer serializer;
1718

18-
public MessengerMessageSender(HttpClient client, IMessengerSerializer serializer)
19+
public MessengerMessageSender(IMessengerSerializer serializer)
1920
{
20-
this.client = client;
21+
client = new HttpClient();
2122
this.serializer = serializer;
2223
}
2324

24-
public async Task<MessengerResponse> SendAsync(MessengerMessage message, MessengerUser recepient)
25+
public Task<MessengerResponse> SendAsync(MessengerMessage message, MessengerUser recipient)
2526
{
26-
var url = String.Format(UrlTemplate, MessengerConfig.AccessToken);
27-
var request = new {recepient, message};
27+
return SendAsync(message, recipient, MessengerConfig.AccessToken);
28+
}
29+
30+
public async Task<MessengerResponse> SendAsync(MessengerMessage message, MessengerUser recipient, String accessToken)
31+
{
32+
var url = String.Format(UrlTemplate, accessToken);
33+
var request = new MessengerSendMessageRequest { Recipient = recipient, Message = message };
2834

2935
var content = new StringContent(serializer.Serialize(request));
36+
content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
3037
try
3138
{
3239
var response = await client.PostAsync(url, content);
@@ -43,5 +50,6 @@ public async Task<MessengerResponse> SendAsync(MessengerMessage message, Messeng
4350
throw new MessengerException(exc);
4451
}
4552
}
53+
4654
}
4755
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
using Messenger.Client.Objects;
2+
3+
namespace Messenger.Client.Services.Impl
4+
{
5+
internal class MessengerSendMessageRequest
6+
{
7+
public MessengerUser Recipient { get; set; }
8+
9+
public MessengerMessage Message { get; set; }
10+
}
11+
}

src/Messenger.Client/project.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"version": "0.0.3",
2+
"version": "0.1.0",
33
"title": "Facebook Messenger .NET Client",
44
"description": ".NET Client for Facebook Messenger Platform",
55
"authors": [ "Andrew Kamarouski" ],

0 commit comments

Comments
 (0)