token.py 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. import json
  4. from flask import Blueprint
  5. import jimit as ji
  6. import time
  7. from jimvc.models import Utils, Rules
  8. from jimvc.models import Token
  9. __author__ = 'James Iter'
  10. __date__ = '2019-01-01'
  11. __contact__ = 'james.iter.cn@gmail.com'
  12. __copyright__ = '(c) 2019 by James Iter.'
  13. blueprint = Blueprint(
  14. 'api_token',
  15. __name__,
  16. url_prefix='/api/token'
  17. )
  18. blueprints = Blueprint(
  19. 'api_tokens',
  20. __name__,
  21. url_prefix='/api/tokens'
  22. )
  23. @Utils.dumps2response
  24. def r_create():
  25. try:
  26. ret = dict()
  27. ret['state'] = ji.Common.exchange_state(20000)
  28. token = Token()
  29. token.generator()
  30. token.create()
  31. ret['data'] = {
  32. 'token': token.token,
  33. 'ttl': token.ttl,
  34. 'expire': time.strftime('%Y-%m-%dT%H:%M:%S %Z', time.localtime(ji.Common.ts() + token.ttl))
  35. }
  36. return ret
  37. except ji.PreviewingError, e:
  38. return json.loads(e.message)
  39. @Utils.dumps2response
  40. def r_get_by_filter():
  41. try:
  42. ret = dict()
  43. ret['state'] = ji.Common.exchange_state(20000)
  44. ret['data'] = list()
  45. ts = ji.Common.ts()
  46. for token in Token.get_all():
  47. expire = time.strftime('%Y-%m-%dT%H:%M:%S %Z', time.localtime(token[1]))
  48. ret['data'].append({'token': token[0], 'expire': expire, 'ttl': token[1] - ts})
  49. return ret
  50. except ji.PreviewingError, e:
  51. return json.loads(e.message)
  52. @Utils.dumps2response
  53. def r_delete(tokens):
  54. args_rules = [
  55. Rules.TOKENS.value
  56. ]
  57. try:
  58. ji.Check.previewing(args_rules, {args_rules[0][1]: tokens})
  59. ret = dict()
  60. ret['state'] = ji.Common.exchange_state(20000)
  61. ret['data'] = list()
  62. token = Token()
  63. for _token in tokens.split(','):
  64. token.token = _token
  65. if token.delete():
  66. ret['data'].append(_token)
  67. return ret
  68. except ji.PreviewingError, e:
  69. return json.loads(e.message)