Advertisement
Guest User

test

a guest
Feb 12th, 2019
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.45 KB | None | 0 0
  1. from decouple import config
  2. import requests
  3. import getpass
  4. import sys
  5. from get_file_extension import get_file_type_from_extension
  6.  
  7.  
  8. class PasteBin:
  9.  
  10.     def __init__(self):
  11.         self.API_DEV_KEY = config('API_DEV_KEY')
  12.         self.PASTE_API_URL = config('PASTE_API_URL')
  13.         self.LOGIN_API_URL = config('LOGIN_API_URL')
  14.  
  15.         self._file_name, self._paste_name = self._get_file_name()
  16.         self._paste()
  17.  
  18.     @staticmethod
  19.     def _get_lines(file, start, end):
  20.         _code_snippet = ""
  21.         _generate_code = (x for i, x in enumerate(file) if i in range(start, end))
  22.         for _line in _generate_code:
  23.             _code_snippet += _line
  24.  
  25.         return _code_snippet
  26.  
  27.     def _read_file(self, _file_name):
  28.         read_only_code_snippet = input("Enter 'f' for reading full file: ")
  29.  
  30.         if read_only_code_snippet.lower() == 'f':
  31.             with open(_file_name, 'r') as f:
  32.                 _code = f.read()
  33.             return _code
  34.         else:
  35.             start_line = int(input("Start line: "))
  36.             end_line = int(input("End line: "))
  37.  
  38.             with open(_file_name, 'r') as f:
  39.                 _code = self._get_lines(f, start_line, end_line)
  40.                 return _code
  41.  
  42.     @staticmethod
  43.     def _get_file_name():
  44.         _file_name = input("Full file name to paste(with *.ext): ")
  45.         _paste_name = input("Paste name: ")
  46.         return _file_name, _paste_name
  47.  
  48.     def _get_api_user_key(self):
  49.         _user_name = input("Pastebin username: ")
  50.         _password = getpass.getpass("Pastebin password: ", stream=sys.stderr)
  51.  
  52.         login_data = {
  53.             'api_dev_key': self.API_DEV_KEY,
  54.             'api_user_name': _user_name,
  55.             'api_user_password': _password
  56.         }
  57.  
  58.         response = requests.post(self.LOGIN_API_URL, data=login_data)
  59.  
  60.         return response.text if response else ""
  61.  
  62.     def _paste(self):
  63.         _code_snippet = self._read_file(self._file_name)
  64.         _api_user_key = self._get_api_user_key()
  65.         _, _extension = self._file_name.split('.')
  66.  
  67.         data = {
  68.                 'api_dev_key': self.API_DEV_KEY,
  69.                 'api_user_key': _api_user_key,
  70.                 'api_option': 'paste',
  71.                 'api_paste_name': self._paste_name,
  72.                 'api_paste_code': _code_snippet,
  73.                 'api_paste_format': get_file_type_from_extension(_extension)
  74.             }
  75.  
  76.         res = requests.post(url=self.PASTE_API_URL, data=data)
  77.  
  78.         print(res.text)
  79.  
  80.  
  81. if __name__ == '__main__':
  82.     p = PasteBin()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement