Guest User

Untitled

a guest
Jul 17th, 2018
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.33 KB | None | 0 0
  1. #/usr/bin/python
  2. import sys
  3. sys.path.append("/usr/local/lib/python2.7/site-packages")
  4.  
  5. import random
  6. import grpc
  7. from interface import authentication_pb2
  8. from interface import authentication_pb2_grpc
  9. from interface import groups_pb2
  10. from interface import groups_pb2_grpc
  11. from interface import messaging_pb2
  12. from interface import messaging_pb2_grpc
  13. from interface import peers_pb2
  14.  
  15. class Smoke(object):
  16. def __init__(self, address):
  17. self.chan = grpc.insecure_channel(address)
  18. self.auth = authentication_pb2_grpc.AuthenticationStub(self.chan)
  19. self.groups = groups_pb2_grpc.GroupsStub(self.chan)
  20. self.messaging = messaging_pb2_grpc.MessagingStub(self.chan)
  21.  
  22. @property
  23. def metadata(self):
  24. return (('x-auth-ticket', self.token),)
  25.  
  26. def authenticate_connection(self):
  27. resp = self.auth.RegisterDeprecatedDevice(
  28. authentication_pb2.RegisterDeprecatedDeviceRequest()
  29. )
  30. self.token = resp.token
  31. self.auth_id = resp.auth_id
  32.  
  33. def phone_auth(self):
  34. self.used_phone = random.randint(700000000, 800000000)
  35. transaction = self.auth.StartPhoneAuth(
  36. authentication_pb2.RequestStartPhoneAuth(
  37. phone_number = self.used_phone,
  38. app_id = 1,
  39. api_key = "api_key",
  40. device_title = "device_title"
  41. ), metadata=self.metadata
  42. )
  43. try:
  44. self.auth.ValidateCode(
  45. authentication_pb2.RequestValidateCode(
  46. transaction_hash=transaction.transaction_hash,
  47. code = '1234'
  48. ), metadata=self.metadata
  49. )
  50. except grpc._channel._Rendezvous as e:
  51. # Yikes..
  52. if e.details() == "Unnoccupied phone number.":
  53. pass
  54. else:
  55. raise
  56. resp = self.auth.SignUp(
  57. authentication_pb2.RequestSignUp(
  58. transaction_hash=transaction.transaction_hash,
  59. name="Adolf Hitler"
  60. ), metadata=self.metadata
  61. )
  62. self.user = resp.user
  63. self.config = resp.config
  64. print self.user
  65.  
  66. def random_id(self):
  67. return random.randint(0, sys.maxsize)
  68.  
  69. def create_group(self, name):
  70. return self.groups.CreateGroup(
  71. groups_pb2.RequestCreateGroup(
  72. rid=self.random_id(),
  73. title=name,
  74. group_type=groups_pb2.GROUPTYPE_GROUP
  75. ), metadata=self.metadata
  76. )
  77.  
  78. def send_message(self, peer, text):
  79. message = messaging_pb2.MessageContent(
  80. textMessage=messaging_pb2.TextMessage(text=text)
  81. )
  82. print self.messaging.SendMessage(
  83. messaging_pb2.RequestSendMessage(
  84. peer=peer,
  85. rid=self.random_id(),
  86. message=message
  87. ), metadata=self.metadata
  88. )
  89.  
  90. def run(self):
  91. self.authenticate_connection()
  92. self.phone_auth()
  93. group = self.create_group("MY GROUP")
  94. self.send_message(
  95. peers_pb2.OutPeer(
  96. type=peers_pb2.PEERTYPE_GROUP,
  97. id=group.group.id,
  98. access_hash=group.group.access_hash
  99. ),
  100. "HELLO FROM GRPC"
  101. )
  102. print 'ok', self.token, self.auth_id
  103.  
  104. if __name__ == '__main__':
  105. Smoke('35.228.128.125:8080').run()
Add Comment
Please, Sign In to add comment