/// <summary>
        /// Prevents a default instance of the ApplicationEndpoint class from being created
        /// </summary>
        public ApplicationEndpoint(IClientPlatform platform, ApplicationEndpointSettings applicationEndpointSettings, IEventChannel eventChannel)
        {
            ClientPlatform     = platform;
            m_endpointSettings = applicationEndpointSettings;

            if (eventChannel != null)
            {
                m_eventChannel = eventChannel;
                m_eventChannel.HandleIncomingEvents += this.OnReceivedCallback;
            }

            Logger.Instance.Information("Initializing ApplicationEndpoint");

            var oauthTokenIdentitifier = new OAuthTokenIdentifier(
                Constants.PlatformAudienceUri,
                applicationEndpointSettings.ApplicationEndpointId.Domain);

            var tokenProvider = new AADServiceTokenProvider(platform.AADClientId.ToString(), Constants.AAD_AuthorityUri, platform.AADAppCertificate, platform.AADClientSecret);

            if (!platform.IsInternalPartner)
            {
                TokenMapper.RegisterNameSpaceHandling(Constants.DefaultResourceNamespace, Constants.PublicServiceResourceNamespace);
            }

            TokenMapper.RegisterTypesInAssembly(Assembly.GetAssembly(typeof(ApplicationsResource)));
            m_tokenProvider        = tokenProvider;
            m_oauthTokenIdentifier = oauthTokenIdentitifier;

            m_restfulClient = ((ClientPlatform)ClientPlatform).RestfulClientFactory.GetRestfulClient(m_oauthTokenIdentifier, m_tokenProvider);

            Logger.Instance.Information("ApplicationEndpoint Initialized!");
        }
예제 #2
0
        /// <summary>
        /// Initializes a new instance of the BaseInstance class.
        /// </summary>
        /// <param name="restfulClient">The restful client.</param>
        /// <param name="resource">The platform resource.</param>
        /// <param name="baseUri">The base uri.</param>
        internal BasePlatformResource(IRestfulClient restfulClient, TPlatformResource resource, Uri baseUri, Uri resourceUri, object parent)
        {
            if (restfulClient == null)
            {
                throw new ArgumentNullException(nameof(restfulClient));
            }

            if (baseUri == null)
            {
                throw new ArgumentNullException(nameof(baseUri));
            }

            this.RestfulClient    = restfulClient;
            this.PlatformResource = resource;
            this.BaseUri          = baseUri;
            this.Parent           = parent;

            if (resourceUri != null)
            {
                this.ResourceUri = UriHelper.CreateAbsoluteUri(this.BaseUri, resourceUri.ToString());
            }

            string typeName = this.GetType().ToString();

            Logger.Instance.Information(string.Format("{0} resource created, resource Uri {1}", typeName, this.ResourceUri));
        }
예제 #3
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="restfulClient"></param>
 /// <param name="resource"></param>
 /// <param name="baseUri"></param>
 /// <param name="resourceUri"></param>
 internal Communication(IRestfulClient restfulClient, CommunicationResource resource, Uri baseUri, Uri resourceUri, object parent)
     : base(restfulClient, resource, baseUri, resourceUri, parent)
 {
     m_conversations    = new ConcurrentDictionary <string, Conversation>();
     m_invites          = new ConcurrentDictionary <string, IInvitation>();
     m_inviteAddedTcses = new ConcurrentDictionary <string, TaskCompletionSource <IInvitation> >();
 }
        /// <summary>
        /// Initializes a new instance of the <see cref="RpsAuthenticator"/> class.
        /// </summary>
        /// <param name="config">Configuration for RPS (Live ID) authentication.</param>
        /// <param name="clientHandler">Client handler for RPS auth requests.</param>
        /// <param name="delegatingHandlers">Delegating handlers for RPS auth requests.</param>
        public RpsAuthenticator(IRpsConfig config, HttpClientHandler clientHandler, params DelegatingHandler[] delegatingHandlers)
        {
            Config = config;

            tokenClient = new RestfulClient(config.AuthUrl, EnhanceClientHandler(clientHandler), delegatingHandlers);
            lockSlim    = new ReaderWriterLockSlim();
            cache       = new MemoryCache(new MemoryCacheOptions());
        }
예제 #5
0
 internal MessagingInvitation(IRestfulClient restfulClient, MessagingInvitationResource resource, Uri baseUri, Uri resourceUri, Communication parent)
     : base(restfulClient, resource, baseUri, resourceUri, parent)
 {
     if (parent == null)
     {
         throw new ArgumentNullException(nameof(parent), "Communication is required");
     }
 }
예제 #6
0
 internal Prompt(IRestfulClient restfulClient, PromptResource resource, Uri baseUri, Uri resourceUri, AudioVideoFlow parent)
     : base(restfulClient, resource, baseUri, resourceUri, parent)
 {
     if (parent == null)
     {
         throw new ArgumentNullException(nameof(parent), "AudioVideoFlow resource is required");
     }
 }
 internal Participant(IRestfulClient restfulClient, ParticipantResource resource, Uri baseUri, Uri resourceUri, Conversation parent)
     : base(restfulClient, resource, baseUri, resourceUri, parent)
 {
     if (parent == null)
     {
         throw new ArgumentNullException(nameof(parent), "Conversation is required");
     }
 }
 internal MessagingCall(IRestfulClient restfulClient, MessagingResource resource, Uri baseUri, Uri resourceUri, Conversation parent)
     : base(restfulClient, resource, baseUri, resourceUri, parent)
 {
     m_outGoingmessageTcses = new ConcurrentDictionary <string, TaskCompletionSource <string> >();
     if (parent == null)
     {
         throw new ArgumentNullException(nameof(parent), "Conversation is required");
     }
 }
예제 #9
0
 internal Invitation(IRestfulClient restfulClient, TPlatformResource resource, Uri baseUri, Uri resourceUri, Communication parent)
     : base(restfulClient, resource, baseUri, resourceUri, parent)
 {
     m_invitationCompleteTcs = new TaskCompletionSource <IConversation>();
     if (parent == null)
     {
         throw new ArgumentNullException(nameof(parent), "The paramater named parent can't be null.");
     }
 }
예제 #10
0
 /// <summary>
 /// Initializes a new instance of the <see cref="Conversation"/> class.
 /// </summary>
 /// <param name="restfulClient">The restful client.</param>
 /// <param name="resource">The resource.</param>
 /// <param name="baseUri">The base URI.</param>
 /// <param name="resourceUri">The resource URI.</param>
 /// <param name="parent">The parent.</param>
 /// <exception cref="System.ArgumentNullException">parent - Communication is required</exception>
 internal Conversation(IRestfulClient restfulClient, ConversationResource resource, Uri baseUri, Uri resourceUri, Communication parent)
     : base(restfulClient, resource, baseUri, resourceUri, parent)
 {
     if (parent == null)
     {
         throw new ArgumentNullException(nameof(parent), "Communication is required");
     }
     m_participants = new ParticipantsInternal(restfulClient, baseUri, null, this);
 }
예제 #11
0
 internal ParticipantsInternal(IRestfulClient restfulClient, Uri baseUri, Uri resourceUri, Conversation parent)
     : base(restfulClient, null, baseUri, resourceUri, parent)
 {
     if (parent == null)
     {
         throw new ArgumentNullException(nameof(parent), "Conversation is required");
     }
     m_participantsCache = new ConcurrentDictionary <string, Participant>();
 }
예제 #12
0
 internal Transfer(IRestfulClient restfulClient, TransferResource resource, Uri baseUri, Uri resourceUri, AudioVideoCall parent)
     : base(restfulClient, resource, baseUri, resourceUri, parent)
 {
     if (parent == null)
     {
         throw new ArgumentNullException(nameof(parent), "AudioVideo is required");
     }
     m_transferCompleteTcs = new TaskCompletionSource <string>();
 }
예제 #13
0
 internal ConversationBridge(IRestfulClient restfulClient, ConversationBridgeResource resource, Uri baseUri, Uri resourceUri, Conversation parent) :
     base(restfulClient, resource, baseUri, resourceUri, parent)
 {
     if (parent == null)
     {
         throw new ArgumentNullException(nameof(parent), "Conversation is required");
     }
     m_bridgedParticipants     = new ConcurrentDictionary <string, BridgedParticipant>();
     m_bridgedParticipantTcses = new ConcurrentDictionary <string, TaskCompletionSource <BridgedParticipant> >();
 }
예제 #14
0
        /// <summary>
        /// Creates instances of <see cref="AudioVideoCall"/>.
        /// </summary>
        /// <param name="restfulClient"><see cref="IRestfulClient"/> to use to make outbound REST HTTP requests.</param>
        /// <param name="resource"><see cref="AudioVideoResource"/> corresponding to this object.</param>
        /// <param name="baseUri"><see cref="Uri"/> of the service.</param>
        /// <param name="resourceUri"><see cref="Uri"/> of <paramref name="resource"/> relative to <paramref name="baseUri"/>.</param>
        /// <param name="parent"><see cref="Conversation"/> of which this modality is part of.</param>
        internal AudioVideoCall(IRestfulClient restfulClient, AudioVideoResource resource, Uri baseUri, Uri resourceUri, Conversation parent)
            : base(restfulClient, resource, baseUri, resourceUri, parent)
        {
            if (parent == null)
            {
                throw new ArgumentNullException(nameof(parent), "Conversation object is required");
            }

            // Track call transfers
            m_transfers          = new ConcurrentDictionary <string, Transfer>();
            m_transferAddedTcses = new ConcurrentDictionary <string, TaskCompletionSource <Transfer> >();
        }
예제 #15
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="restfulClient"></param>
 /// <param name="resource"></param>
 /// <param name="baseUri"></param>
 /// <param name="resourceUri"></param>
 internal Discover(IRestfulClient restfulClient, Uri baseUri, Uri resourceUri, object parent)
     : base(restfulClient, null, baseUri, resourceUri, parent)
 {
 }
 internal OnlineMeetingInvitation(IRestfulClient restfulClient, OnlineMeetingInvitationResource resource, Uri baseUri, Uri resourceUri, Communication parent)
     : base(restfulClient, resource, baseUri, resourceUri, parent)
 {
 }
 /// <summary>
 /// Initializes an instance of <see cref="ConversationConference"/>>
 /// </summary>
 /// <param name="restfulClient"></param>
 /// <param name="resource"></param>
 /// <param name="baseUri"></param>
 /// <param name="resourceUri"></param>
 /// <param name="parent"></param>
 internal ConversationConference(IRestfulClient restfulClient, ConversationConferenceResource resource, Uri baseUri, Uri resourceUri, Conversation parent)
     : base(restfulClient, resource, baseUri, resourceUri, parent)
 {
 }
예제 #18
0
 public JokeLogic(IRestfulClient restfulClient, IJokeResultMapper jokeResultMapper)
 {
     _restfulClient    = restfulClient;
     _jokeResultMapper = jokeResultMapper;
 }
예제 #19
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="restfulClient"></param>
 /// <param name="resource"></param>
 /// <param name="baseUri"></param>
 /// <param name="resourceUri"></param>
 internal Applications(IRestfulClient restfulClient, ApplicationsResource resource, Uri baseUri, Uri resourceUri, object parent)
     : base(restfulClient, resource, baseUri, resourceUri, parent)
 {
 }
 public DealerConfigurationClient(IRestfulClient restfulClient)
 {
     _restfulClient = restfulClient ?? throw new ArgumentNullException(nameof(restfulClient));;
 }
 public CustomerServiceBooking(IRestfulClient restfulClient, TelemetryClient telemetryClient)
 {
     _restfulClient   = restfulClient ?? throw new ArgumentNullException(nameof(restfulClient));
     _telemetryClient = telemetryClient;
 }
예제 #22
0
 public MoxtraService(string moxtraUri)
 {
     _client = new RestfulClient(new RestClient(moxtraUri));
 }
 /// <summary>
 /// Creates an instance of <see cref="AdhocMeeting"/>
 /// </summary>
 /// <param name="restfulClient"><see cref="IRestfulClient"/> to be used to make HTTP requests</param>
 /// <param name="resource">This object's underlying resource from SfB's resource contract</param>
 /// <param name="baseUri">Base uri of the resource</param>
 /// <param name="resourceUri"><paramref name="resource"/>'s uri relative to <paramref name="baseUri"/></param>
 /// <param name="parent">Parent <see cref="Application"/> to which this object belongs to</param>
 internal AdhocMeeting(IRestfulClient restfulClient, AdhocMeetingResource resource, Uri baseUri, Uri resourceUri, Application parent)
     : base(restfulClient, resource, baseUri, resourceUri, parent)
 {
 }
예제 #24
0
 public GameService(IRestfulClient restfulClient)
 {
     this.restfulClient = restfulClient;
 }
예제 #25
0
 internal ParticipantInvitation(IRestfulClient restfulClient, ParticipantInvitationResource resource, Uri baseUri, Uri resourceUri, Communication parent)
     : base(restfulClient, resource, baseUri, resourceUri, parent)
 {
 }
예제 #26
0
 internal AnonymousApplicationToken(IRestfulClient restfulClient, AnonymousApplicationTokenResource resource, Uri baseUri, Uri resourceUri, Application parent)
     : base(restfulClient, resource, baseUri, resourceUri, parent)
 {
 }
예제 #27
0
 internal AudioVideoFlow(IRestfulClient restfulClient, AudioVideoFlowResource resource, Uri baseUri, Uri resourceUri, object parent)
     : base(restfulClient, resource, baseUri, resourceUri, parent)
 {
     m_onGoingPromptTcses = new ConcurrentDictionary <string, TaskCompletionSource <Prompt> >();
 }
예제 #28
0
 internal AudioVideoInvitation(IRestfulClient restfulClient, AudioVideoInvitationResource resource, Uri baseUri, Uri resourceUri, Communication parent)
     : base(restfulClient, resource, baseUri, resourceUri, parent)
 {
 }
예제 #29
0
 public CDKAutolineService(IRestfulClient restfulClient, TelemetryClient telemetryClient)
 {
     _restfulClient   = restfulClient ?? throw new ArgumentNullException(nameof(restfulClient));
     _telemetryClient = telemetryClient;
     _mapper          = AutoMapper.Instance;
 }
예제 #30
0
 internal Call(IRestfulClient restfulClient, TPlatformResource resource, Uri baseUri, Uri resourceUri, object parent)
     : base(restfulClient, resource, baseUri, resourceUri, parent)
 {
 }
예제 #31
0
 public MockRestfulClientFactory()
 {
     m_restfulClient = new MockRestfulClient();
 }