public void Start() { _connector.AddHost("tmq://localhost:48050"); _connector.Connected += Connected; _connector.MessageReceived += MessageReceived; _connector.Run(); _timer = new Timer(async o => { if (_connector.IsConnected) { TmqClient client = _connector.GetClient(); TmqMessage message = new TmqMessage(MessageType.Client, "producer-id"); message.ContentType = ModelTypes.ConsumerRequest; ConsumerRequest request = new ConsumerRequest(); request.Guid = Guid.NewGuid().ToString(); await message.SetJsonContent(request); TmqMessage response = await client.Request(message); ProducerResponse rmodel = await response.GetJsonContent <ProducerResponse>(); Console.WriteLine($"> response received for: {rmodel.RequestGuid}"); } }, null, 6000, 6000); }
private IConsumerRequest CreateSignedOauthRequest(RestRequest request) { var oAuthContext = MapRequestToOauthContext(request); var oAuthConsumerContext = new OAuthConsumerContext() { ConsumerKey = _credentials.ClientKey, ConsumerSecret = _credentials.ClientSecret, SignatureMethod = SignatureMethod.HmacSha1, UseHeaderForOAuthParameters = true }; var accessToken = new AccessToken { ConsumerKey = _credentials.ClientKey, Token = _credentials.TokenKey, TokenSecret = _credentials.TokenSecret }; var consumerRequest = new ConsumerRequest(oAuthContext, oAuthConsumerContext, accessToken) .WithAcceptHeader(request.Accept) .WithRawContentType(request.ContentType); Dictionary <String, String> queryParams = request.QueryParameters ?? new Dictionary <String, String>(); if (!request.IncludeHateoasLinks) { queryParams.Add("ShowLinks", "none"); } consumerRequest = consumerRequest.WithQueryParameters(queryParams); return(consumerRequest.SignWithToken(accessToken)); }
/// <summary> /// Returns a URL appended by oEmbed parameters. /// </summary> /// <param name="serviceUri">The end point of the oEmbed service.</param> /// <param name="request">The oEmbed request.</param> /// <returns>The provider URL.</returns> protected static Uri GetProviderUriCore(string serviceUri, ConsumerRequest request) { var s = new StringBuilder(serviceUri); s.Append("?url="); s.Append(Uri.EscapeDataString(request.Url.ToString())); if (request.MaxWidth > 0) { s.Append("?max_width="); s.Append(request.MaxWidth.Value); } if (request.MaxHeight > 0) { s.Append("?max_height="); s.Append(request.MaxHeight.Value); } if (!string.IsNullOrEmpty(request.Format)) { s.Append("?format="); s.Append(request.Format); } return(new Uri(s.ToString())); }
// GET: ConsumerRequests/Create public IActionResult Create() { ConsumerRequest consumerRequest = new ConsumerRequest(); //ViewData["ConsumerId"] = new SelectList(_context.Consumer, "ConsumerId", "ConsumerId"); return(View(consumerRequest)); }
public void GetBytesValidStructure() { string topicName = "topic"; ConsumerRequest request = new ConsumerRequest(topicName, 1, 10L, 100); // REQUEST TYPE ID + TOPIC LENGTH + TOPIC + PARTITION + OFFSET + MAX SIZE int requestSize = 2 + 2 + topicName.Length + 4 + 8 + 4; byte[] bytes = request.GetBytes(); Assert.IsNotNull(bytes); // add 4 bytes for the length of the message at the beginning Assert.AreEqual(requestSize + 4, bytes.Length); // first 4 bytes = the message length Assert.AreEqual(25, BitConverter.ToInt32(BitWorks.ReverseBytes(bytes.Take(4).ToArray <byte>()), 0)); // next 2 bytes = the request type Assert.AreEqual((short)RequestType.Fetch, BitConverter.ToInt16(BitWorks.ReverseBytes(bytes.Skip(4).Take(2).ToArray <byte>()), 0)); // next 2 bytes = the topic length Assert.AreEqual((short)topicName.Length, BitConverter.ToInt16(BitWorks.ReverseBytes(bytes.Skip(6).Take(2).ToArray <byte>()), 0)); // next few bytes = the topic Assert.AreEqual(topicName, Encoding.ASCII.GetString(bytes.Skip(8).Take(topicName.Length).ToArray <byte>())); // next 4 bytes = the partition Assert.AreEqual(1, BitConverter.ToInt32(BitWorks.ReverseBytes(bytes.Skip(8 + topicName.Length).Take(4).ToArray <byte>()), 0)); // next 8 bytes = the offset Assert.AreEqual(10, BitConverter.ToInt32(BitWorks.ReverseBytes(bytes.Skip(12 + topicName.Length).Take(8).ToArray <byte>()), 0)); // last 4 bytes = the max size Assert.AreEqual(100, BitConverter.ToInt32(BitWorks.ReverseBytes(bytes.Skip(20 + +topicName.Length).Take(4).ToArray <byte>()), 0)); }
async Task <ConsumerResponse> HandleConsumerRequest( SubscriptionId subscriptionId, AsyncProducerConsumerQueue <StreamEvent> queue, ConsumerRequest request, CancellationToken cancellationToken) { try { var eventHorizonEvent = request.Event; await queue.EnqueueAsync( new StreamEvent( eventHorizonEvent.Event.ToCommittedEvent(), eventHorizonEvent.StreamSequenceNumber, StreamId.EventLog, Guid.Empty, false), cancellationToken).ConfigureAwait(false); return(new ConsumerResponse()); } catch (Exception ex) { _logger.Warning(ex, "An error occurred while handling event horizon event coming from subscription {Subscription}", subscriptionId); return(new ConsumerResponse { Failure = new Failure(FailureId.Other, $"An error occurred while handling event horizon event coming from subscription {subscriptionId}. {ex.Message}") }); } }
/// <summary> /// Reads the cached <see cref="Metadata" /> for the URL of <paramref name="request"/>. /// </summary> /// <param name="service">The <see cref="MetadataService" /> reading cache.</param> /// <param name="request">The consumer request.</param> /// <returns>The task object representing the asynchronous operation. /// The <see cref="Task{TResult}.Result"/> property on the task object returns a cached <see cref="Metadata"/>.</returns> public async Task <Metadata> ReadAsync(MetadataService service, ConsumerRequest request) { var u = request.Url.ToString(); var d = await _Cache.GetAsync(u).ConfigureAwait(false); if (d == null) { return(null); } try { using (var ms = new MemoryStream(d)) { var r = (Metadata)XamlServices.Load(ms); r.OnDeserialized(service); return(r); } } catch { try { var t = _Cache.RemoveAsync(u); t.GetHashCode(); } catch { } return(null); } }
public override void Read(ConsumerRequest request) { if (request == null) { throw new ArgumentNullException("Please specify a valid request"); } if (String.IsNullOrWhiteSpace(request.QueueName)) { throw new ArgumentNullException("Please specify a valid queue name"); } Request = request; // Subscribe to the 'Received' event which will allow us to add each message to the collection as they come in MessageConsumer.Received += (sender, args) => { messageQueue.Add(args); Console.WriteLine($"Added To Collection: {Encoding.UTF8.GetString(args.Body)}"); }; // Subscribe to the 'ConsumerCancelled' event which wil allow us to handle any cancellations MessageConsumer.ConsumerCancelled += ConsumerCancelledEventHandler; //Console.WriteLine($"{ServiceQuality.PrefetchSize} - {ServiceQuality.PrefetchCount} - {ServiceQuality.Global}"); // Quality of service //we require one message at a time and we don’t want to process any additional messages until the actual one has been processed Channel.BasicQos(ServiceQuality.PrefetchSize, ServiceQuality.PrefetchCount, ServiceQuality.Global); // Consume messages from RabbitMQ server ConsumerTag = (ConsumerTag == null) ? Channel.BasicConsume(QueueName, NoAck, MessageConsumer) : Channel.BasicConsume(QueueName, NoAck, ConsumerTag, MessageConsumer); LatestDelivery = null; }
private ConsumerRequest GetConsumerRequest(Application consumerApp, Application providerApp, DataSchema schema) { var approvedRequest = _consumerRequests.Where(i => i.ProviderID == providerApp.ID).FirstOrDefault(i => i.DataSchemaID == schema.ID && i.ConsumerID == consumerApp.ID & i.Status == (int)RequestStatus.Approved); if (approvedRequest != null) { return(approvedRequest); } var consumerRequest = _consumerRequests.Where(i => i.ProviderID == providerApp.ID).FirstOrDefault(i => i.ConsumerID == consumerApp.ID && i.DataSchemaID == schema.ID && i.Status == (int)RequestStatus.NotProcessed); // Create consumer request if not exists if (consumerRequest == null) { consumerRequest = new ConsumerRequest { ProviderID = providerApp.ID, ConsumerID = consumerApp.ID, Status = (int)RequestStatus.NotProcessed, DataSchemaID = schema.ID, CreatedAt = GetDate }; // Save request _consumerRequests.Add(consumerRequest); var urlToConsumerRequests = $"{_host}/ConsumerRequests/Index?applicationId={providerApp.ID}"; _notificationService.LegalOfficer.NewConsumerRequestInBackground(providerApp.ID, urlToConsumerRequests); } return(consumerRequest); }
public void get_request_description_copies_headers_from_context_to_description() { context.Headers["a-key"] = "a-value"; var request = new ConsumerRequest(context, consumerContext, accessToken); RequestDescription description = request.GetRequestDescription(); Assert.Equal("a-value", description.Headers["a-key"]); }
/// <summary> /// Determines whether this provider can handle the specified request. /// </summary> /// <param name="request">The consumer request to handle.</param> /// <returns> /// <c>true</c> if this provider can handle <paramref name="request" />; otherwise <c>false</c>. /// </returns> public bool CanHandle(ConsumerRequest request) { var u = request.Url; return(u.IsDefaultPort && u.Scheme == "https" && Hosts.Contains(u.Host) && _PathPattern.IsMatch(u.AbsolutePath)); }
private static void Main() { string requestUrl = "https://apis.daum.net/oauth/requestToken"; string userAuthorizeUrl = "https://apis.daum.net/oauth/authorize"; string accessUrl = "https://apis.daum.net/oauth/accessToken"; string callBackUrl = "oob"; var consumerContext = new OAuthConsumerContext { //TODO:Daum OAuth소개 페이지(https://apis.daum.net/oauth/consumer/list)에서 등록된 Consumer 정보 입력 ConsumerKey = "{발급 받은 Key를 입력하세요.}", ConsumerSecret = "{발급 받은 Secret를 입력하세요.}", SignatureMethod = SignatureMethod.HmacSha1, }; //OAuth 준비 var session = new OAuthSession(consumerContext, requestUrl, userAuthorizeUrl, accessUrl); session.WithQueryParameters(new Dictionary <string, string>() { { "oauth_callback", callBackUrl } }); // 1. request token 받기 DevDefined.OAuth.Framework.IToken requestToken = session.GetRequestToken(); // 인증주소 받기 string authorizationLink = session.GetUserAuthorizationUrlForToken(requestToken, callBackUrl); // 2. 사용자 인증 하기 System.Console.WriteLine("웹브라우저를 실행하여 다음 URL을 접속하세요."); System.Console.WriteLine(authorizationLink); System.Console.Write("\n\n웹브라우저에서 인증 후 반환 된 값을 입력하세요:"); string inputVerifier = System.Console.ReadLine(); // 얻어진 Verifier값을 포함시키기 session.WithQueryParameters(new Dictionary <string, string>() { { "oauth_verifier", inputVerifier } }); // 3. 인증 후 얻은 Verifier값을 이용하여 엑세스 토큰 얻기 DevDefined.OAuth.Framework.IToken accessToken = session.ExchangeRequestTokenForAccessToken(requestToken); // '요즘 가입여부 확인하기' API를 통해 인증 확인하기 System.Console.WriteLine("OAuth를 통한 인증으로 '요즘 글쓰기'를 테스트합니다."); ConsumerRequest cr = session.Request().Post().ForUrl("https://apis.daum.net/yozm/v1_0/message/add.xml"); cr = cr.WithFormParameters(new Dictionary <string, string>() { { "message", System.Web.HttpUtility.UrlEncode("%$가나다^$%^%$^RTY<><><><><") } }); string responseText = cr.ToString(); System.Console.WriteLine(responseText); System.Console.ReadLine(); }
public void Send_Consume_Request_With_Single_Thread_Diff_Consumer_Same_Topic() { for (int i = 0; i < guids.Length; i++) { var consumer = CreateConsumer(guids[i]); consumer.ConnectToServer(); ConsumerRequest consumeRequest = new ConsumerRequest(topic, null, consumer.ClientId, ConsumerRequestType.consume); var response = consumer.SendRequest(consumeRequest); } }
public void it_can_parse_unset_IfModifiedSince_date() { ConsumerRequest consumerRequest = new ConsumerRequest(null, null, null, null); NameValueCollection headers = new NameValueCollection(); OAuthContext oauthContext = new OAuthContext { Headers = headers }; Assert.AreEqual(null, consumerRequest.ParseIfModifiedSince(oauthContext)); }
public Metadata GetMetadata(ConsumerRequest request) { if (!CanHandle(request)) { return(null); } return(new TwitterMetadata() { Url = request.Url.ToString() }); }
public ActionResult Edit(int id, [Bind("ConsumerRequestId,DateTime,Request,ConsumerId")] ConsumerRequest consumerRequest) { try { return(RedirectToAction(nameof(Index))); } catch { return(View()); } }
public ActionResult Create(ConsumerRequest consumerRequest) { var userId = this.User.FindFirstValue(ClaimTypes.NameIdentifier); var currentUser = _context.Consumer.Where(a => a.IdentityUserId == userId).SingleOrDefault(); consumerRequest.DateTime = DateTime.UtcNow; consumerRequest.ConsumerId = currentUser.ConsumerId; _context.ConsumerRequest.Add(consumerRequest); _context.SaveChanges(); return(RedirectToAction("Index", "Consumers")); }
/// <summary> /// Returns a <see cref="Metadata" /> that represents the specified URL. /// </summary> /// <param name="request">The consumer request to handle.</param> /// <returns> /// The <see cref="Metadata" /> if this provider can handle <paramref name="request" />; /// otherwise <c>null</c>. /// </returns> public Metadata GetMetadata(ConsumerRequest request) { if (!CanHandle(request)) { return(null); } return(new UnknownMetadata() { Url = request.Url, }); }
public void Send_Consume_Callback_With_Single_Thread_Same_Consumer() { var consumer = CreateConsumer(Guid.NewGuid()); consumer.ConnectToServer(); ConsumerRequest callBackRequest = new ConsumerRequest(topic, null, consumer.ClientId, ConsumerRequestType.callback); ConsumerResponse response = consumer.SendRequest(callBackRequest); Assert.AreEqual(response.Topic, "topic1"); Assert.AreEqual(response.ClientCurrentStatus, ClientStatus.wait); }
/// <summary> /// Returns a <see cref="Metadata"/> that represents the specified URL. /// </summary> /// <param name="request">The consumer request to handle.</param> /// <returns>The <see cref="AnitvMetadata"/> if this provider can handle <paramref name="request"/>; otherwise <c>null</c>.</returns> public Metadata GetMetadata(ConsumerRequest request) { var m = _UriPattern.Match(request.Url.ToString()); if (m.Success) { return(new AnitvMetadata() { Url = request.Url }); } return(null); }
/// <summary> /// Returns a <see cref="Metadata" /> that represents the specified URL. /// </summary> /// <param name="request">The consumer request to handle.</param> /// <returns> /// The <see cref="NicovideoMetadata" /> if this provider can handle <paramref name="request" /// />; otherwise <c>null</c>. /// </returns> public Metadata GetMetadata(ConsumerRequest request) { var m = regex.Match(request.Url.ToString()); if (m.Success) { return(new NicovideoMetadata() { VideoId = long.Parse(m.Groups[1].Value) }); } return(null); }
/// <summary> /// Returns a <see cref="Metadata" /> that represents the specified URL. /// </summary> /// <param name="request">The consumer request to handle.</param> /// <returns> /// The <see cref="OEmbedProxyMetadata" /> if this provider can handle <paramref /// name="request" />; otherwise <c>null</c>. /// </returns> public Metadata GetMetadata(ConsumerRequest request) { var m = _UriPattern.Match(request.Url.ToString()); if (m.Success) { var url = "https://d.pr/i/" + m.Groups["hash"].Value; return(new DroplrMetadata() { Url = url.ToUri(), }); } return(null); }
public void Send_Consume_Request_With_Single_Thread_Same_Consumer_Same_Topic() { var consumer = CreateConsumer(Guid.NewGuid()); consumer.ConnectToServer(); byte[] body = System.Text.Encoding.UTF8.GetBytes("Hello World"); ConsumerRequest consumeRequest = new ConsumerRequest(topic, body, consumer.ClientId, ConsumerRequestType.consume); var response = consumer.SendRequest(consumeRequest); string helloWorld = Encoding.UTF8.GetString(response.Body); Assert.AreEqual(response.Topic, "topic1"); Assert.AreEqual(helloWorld, "Hello World"); Assert.AreEqual(response.CanConsume, false); }
/// <summary> /// Returns a <see cref="Metadata" /> that represents the specified URL. /// </summary> /// <param name="request">The consumer request to handle.</param> /// <returns> /// The <see cref="Metadata" /> if this provider can handle <paramref name="request" />; /// otherwise <c>null</c>. /// </returns> public Metadata GetMetadata(ConsumerRequest request) { if (!CanHandle(request)) { return(null); } var m = CreateMetadata(); m.Url = request.Url.ToString(); m.OEmbedUrl = GetProviderUriFor(request).ToString(); return(m); }
/// <summary> /// Returns a <see cref="Metadata" /> that represents the specified URL. /// </summary> /// <param name="request">The consumer request to handle.</param> /// <returns> /// The <see cref="Metadata" /> if this provider can handle <paramref name="request" />; /// otherwise <c>null</c>. /// </returns> public Metadata GetMetadata(ConsumerRequest request) { var m = regex.Match(request.Url.ToString()); if (!m.Success) { return(null); } return(new AmazonMetadata() { Provider = this, Destination = m.Groups["dest"].Value, Asin = m.Groups["asin"].Value }); }
/// <summary> /// Returns a <see cref="Metadata" /> that represents the specified URL. /// </summary> /// <param name="request">The consumer request to handle.</param> /// <returns> /// The <see cref="PixivMetadata" /> if this provider can handle <paramref name="request" />; /// otherwise <c>null</c>. /// </returns> public Metadata GetMetadata(ConsumerRequest request) { var m = _UriPattern.Match(request.Url.ToString()); if (m.Success) { var illustId = int.Parse(m.Groups["illust_id"].Value); return(new PixivMetadata() { Url = $"https://www.pixiv.net/member_illust.php?mode=medium&illust_id={ illustId }".ToUri(), IllustId = illustId }); } return(null); }
public void Send_Consume_Callback_with_Single_Thread_Diff_Consumers() { List <ConsumerResponse> responses = new List <ConsumerResponse>(); for (int i = 0; i < guids.Length; i++) { var consumer = CreateConsumer(guids[i]); consumer.ConnectToServer(); var callBackRequest = new ConsumerRequest(topic, null, consumer.ClientId, ConsumerRequestType.callback); var response = consumer.SendRequest(callBackRequest); responses.Add(response); } Assert.AreEqual(responses.Count, guids.Length); Assert.IsTrue(responses.Any(x => x.ClientCurrentStatus == ClientStatus.wait)); }
/// <summary> /// Write a cache data to the cache store. /// </summary> public async Task WriteAsync(MetadataService service, ConsumerRequest request, Metadata metadata) { var u = request.Url.ToString(); if (metadata == null) { await _Cache.RemoveAsync(u).ConfigureAwait(false); } else { using (var ms = new MemoryStream()) { XamlServices.Save(ms, metadata); await _Cache.SetAsync(u, ms.ToArray()).ConfigureAwait(false); } } }
public ConsumerRequest Build() { var req = new ConsumerRequest(this.language) { Operation = operation, NationalIdentifier = nationalIdentifier }; if (shippingAddressRestrictedToCountryCodes != null) { foreach (var countryCode in shippingAddressRestrictedToCountryCodes) { req.ShippingAddressRestrictedToCountryCodes.Add(countryCode); } } return(req); }
private void MessageReceived(ClientSocketBase <TmqMessage> client, TmqMessage message) { if (message.Type == MessageType.Client && message.ContentType == ModelTypes.ConsumerRequest) { ConsumerRequest request = message.GetJsonContent <ConsumerRequest>().Result; Console.WriteLine($"Consumer request received: {request.Guid}"); ProducerResponse model = new ProducerResponse(); model.RequestGuid = request.Guid; model.ResponseGuid = Guid.NewGuid().ToString(); TmqMessage response = message.CreateResponse(); response.ContentType = ModelTypes.ProducerResponse; response.SetJsonContent(model); TmqClient tmq = (TmqClient)client; tmq.Send(response); } }