/// <summary> /// Indicate activity /// </summary> /// <param name="threadId">Thread id</param> /// <param name="isActive">Active status</param> public async Task <IResult <bool> > IndicateActivityAsync(string threadId, bool isActive) { try { var token = ExtensionHelper.GetThreadToken(); var data = new Dictionary <string, string> { { "action", "indicate_activity" }, { "item_type", "indicate_activity" }, { "thread_id", threadId }, { "client_context", token }, { "activity_status", isActive ? "1" : "0" }, }; var json = JsonConvert.SerializeObject(data); var bytes = Encoding.UTF8.GetBytes(json); var publishPacket = new PublishPacket(QualityOfService.AtLeastOnce, false, false) { Payload = ZlibHelper.Compress(bytes).AsBuffer(), PacketId = (ushort)CryptographicBuffer.GenerateRandomNumber(), TopicName = "132" }; await FbnsPacketEncoder.EncodePacket(publishPacket, _outboundWriter); return(Result.Success(true)); } catch (SocketException socketException) { return(Result.Fail(socketException, default(bool), ResponseType.NetworkProblem)); } catch (Exception exception) { return(Result.Fail <bool>(exception)); } }
private async Task <IResult <InstaDirectRespondPayload> > SendDirectItem(Dictionary <string, string> dic, string token = null) { try { if (string.IsNullOrEmpty(token)) { token = ExtensionHelper.GetThreadToken(); } var data = new Dictionary <string, string> { { "action", "send_item" }, { "client_context", token }, }; foreach (var item in dic) { data.Add(item.Key, item.Value); } var json = JsonConvert.SerializeObject(data); var bytes = Encoding.UTF8.GetBytes(json); //id: '132', //path: '/ig_send_message', var publishPacket = new PublishPacket(QualityOfService.AtLeastOnce, false, false) { Payload = ZlibHelper.Compress(bytes).AsBuffer(), PacketId = (ushort)CryptographicBuffer.GenerateRandomNumber(), TopicName = "132" }; await FbnsPacketEncoder.EncodePacket(publishPacket, _outboundWriter); await Task.Delay(WaitForResponseDelay); var responseItem = Responses.GetItem(token); if (responseItem != null) { Responses.Remove(responseItem); return(responseItem.IsSucceed ? Result.Success(ConvertersFabric.Instance.GetDirectRespondConverter(responseItem).Convert().Payload) : Result.Fail(responseItem.Payload?.Message, ConvertersFabric.Instance .GetDirectRespondConverter(responseItem).Convert().Payload)); } else { return(Result.Fail <InstaDirectRespondPayload>("Couldn't get any response in the waiting time...\nMessage might sent after this period")); } } catch (SocketException socketException) { return(Result.Fail(socketException, default(InstaDirectRespondPayload), ResponseType.NetworkProblem)); } catch (Exception exception) { return(Result.Fail <InstaDirectRespondPayload>(exception)); } }
public static CachedObject FromCacheHint(CachedHint cacheInfo, byte[] data) { return(new CachedObject { NodeID = cacheInfo.NodeID, ObjectID = cacheInfo.ObjectID, Shared = 1, Compressed = 1, Cache = new PyBuffer(ZlibHelper.Compress(data)), Timestamp = cacheInfo.CacheTime, Version = cacheInfo.Version }); }
public static PyCachedObject FromCacheHint(PyCacheHint cacheInfo, byte[] data) { PyCachedObject cachedObject = new PyCachedObject(); cachedObject.NodeID = cacheInfo.NodeID; cachedObject.ObjectID = cacheInfo.ObjectID; cachedObject.Shared = 1; cachedObject.Compressed = 1; cachedObject.Cache = new PyBuffer(ZlibHelper.Compress(data)); cachedObject.Timestamp = cacheInfo.CacheTime; cachedObject.Version = cacheInfo.Version; return(cachedObject); }
public static PyCachedObject FromCacheHint(PyCacheHint cacheInfo, PyDataType data) { PyCachedObject cachedObject = new PyCachedObject(); cachedObject.NodeID = cacheInfo.NodeID; cachedObject.ObjectID = cacheInfo.ObjectID; cachedObject.Shared = 1; cachedObject.Compressed = 1; cachedObject.Cache = new PyBuffer(ZlibHelper.Compress(PythonTypes.Marshal.Marshal.ToByteArray(data))); cachedObject.Timestamp = cacheInfo.CacheTime; cachedObject.Version = cacheInfo.Version; return(cachedObject); }
public async Task <IResult <bool> > LikeThreadMessageAsync(string threadId, string itemId) { try { var token = /* ExtensionHelper.GetThreadToken()*/ Guid.NewGuid().ToString(); //item_type=reaction& //reaction_type=like& //action=send_item& //thread_ids=[340282366841710300949128148722678938640]& //client_context=6687326311760832960& //_csrftoken=tmqdvmqM1YjSauVdSOpIPnbCW3d2Dxxh& //mutation_token=6687326311760832960& //_uuid=fe3634e6-d3ec-4f01-943e-20381fdd9e19& //node_type=item& //reaction_status=created& //item_id=29414953485080962978249978855555072& //device_id=android-35b3eb8488e1e15c var data = new Dictionary <string, string> { { "action", "send_item" }, { "item_type", "reaction" }, { "reaction_type", "like" }, { "node_type", "item" }, { "reaction_status", "created" }, { "thread_id", threadId }, { "client_context", token }, { "item_id", itemId }, }; var json = JsonConvert.SerializeObject(data); var bytes = Encoding.UTF8.GetBytes(json); var publishPacket = new PublishPacket(QualityOfService.AtLeastOnce, false, false) { Payload = ZlibHelper.Compress(bytes).AsBuffer(), PacketId = (ushort)CryptographicBuffer.GenerateRandomNumber(), TopicName = "132" }; await FbnsPacketEncoder.EncodePacket(publishPacket, _outboundWriter); return(Result.Success(true)); } catch (SocketException socketException) { return(Result.Fail(socketException, default(bool), ResponseType.NetworkProblem)); } catch (Exception exception) { return(Result.Fail <bool>(exception)); } }
public async Task <IResult <bool> > ReactionMessageAsync(string threadId, string itemId, string emoji) { try { //{"action":"item_ack","status_code":"404","payload":{"client_context":"6687658745131972483","message":"target item is not supported"},"status":"fail"} //{"action":"item_ack","status_code":"400","payload":{"client_context":"6685052289622163080","message":"unknown reaction type"},"status":"fail"} var token = ExtensionHelper.GetThreadToken(); var data = new Dictionary <string, string> { { "action", "send_item" }, { "item_type", "reaction" }, { "reaction_type", "like" }, { "node_type", "item" }, { "reaction_status", "created" }, { "thread_id", threadId }, { "client_context", token }, { "item_id", itemId }, { "emoji", emoji }, }; var json = JsonConvert.SerializeObject(data); var bytes = Encoding.UTF8.GetBytes(json); var publishPacket = new PublishPacket(QualityOfService.AtLeastOnce, false, false) { Payload = ZlibHelper.Compress(bytes).AsBuffer(), PacketId = (ushort)CryptographicBuffer.GenerateRandomNumber(), TopicName = "132" }; await FbnsPacketEncoder.EncodePacket(publishPacket, _outboundWriter); return(Result.Success(true)); } catch (SocketException socketException) { return(Result.Fail(socketException, default(bool), ResponseType.NetworkProblem)); } catch (Exception exception) { return(Result.Fail <bool>(exception)); } }
/// <summary> /// Sends a PyObject through this socket /// </summary> /// <param name="packet">The packet data to send</param> public void Send(PyDataType packet) { #if DEBUG this.mPacketLog.Trace(PrettyPrinter.FromDataType(packet)); #endif // marshal the packet first byte[] encodedPacket = PythonTypes.Marshal.Marshal.ToByteArray(packet); // compress the packet if it exceeds the maximum size if (encodedPacket.Length > Constants.Network.MAX_PACKET_SIZE) { encodedPacket = ZlibHelper.Compress(encodedPacket); } // generate the final buffer byte[] packetBuffer = new byte[encodedPacket.Length + sizeof(int)]; // write the packet size and the buffer to the new buffer Buffer.BlockCopy(BitConverter.GetBytes(encodedPacket.Length), 0, packetBuffer, 0, sizeof(int)); Buffer.BlockCopy(encodedPacket, 0, packetBuffer, sizeof(int), encodedPacket.Length); // after processing the whole packet queue the actual data this.Send(packetBuffer); }
/// <summary> /// Sends a PyObject through this socket /// </summary> /// <param name="packet">The packet data to send</param> public void Send(PyDataType packet) { #if DEBUG this.mPacketLog.Trace(PrettyPrinter.FromDataType(packet)); #endif MemoryStream stream = new MemoryStream(); BinaryWriter writer = new BinaryWriter(stream); // marshal the packet first byte[] encodedPacket = PythonTypes.Marshal.Marshal.ToByteArray(packet); // compress the packet if it exceeds the maximum size if (encodedPacket.Length > Constants.Network.MAX_PACKET_SIZE) { encodedPacket = ZlibHelper.Compress(encodedPacket); } // write the size to the stream writer.Write(encodedPacket.Length); // finally copy the packet buffer writer.Write(encodedPacket); // after processing the whole packet queue the actual data this.Send(stream.ToArray()); }