Coverage for /var/srv/projects/api.amasfac.comuna18.com/tmp/venv/lib/python3.9/site-packages/stripe/api_resources/abstract/api_resource.py: 38%

39 statements  

« prev     ^ index     » next       coverage.py v6.4.4, created at 2023-07-17 14:22 -0600

1from __future__ import absolute_import, division, print_function 

2 

3from stripe import api_requestor, error, util, six 

4from stripe.stripe_object import StripeObject 

5from stripe.six.moves.urllib.parse import quote_plus 

6 

7 

8class APIResource(StripeObject): 

9 @classmethod 

10 def retrieve(cls, id, api_key=None, **params): 

11 instance = cls(id, api_key, **params) 

12 instance.refresh() 

13 return instance 

14 

15 def refresh(self): 

16 self.refresh_from(self.request("get", self.instance_url())) 

17 return self 

18 

19 @classmethod 

20 def class_url(cls): 

21 if cls == APIResource: 

22 raise NotImplementedError( 

23 "APIResource is an abstract class. You should perform " 

24 "actions on its subclasses (e.g. Charge, Customer)" 

25 ) 

26 # Namespaces are separated in object names with periods (.) and in URLs 

27 # with forward slashes (/), so replace the former with the latter. 

28 base = cls.OBJECT_NAME.replace(".", "/") 

29 return "/v1/%ss" % (base,) 

30 

31 def instance_url(self): 

32 id = self.get("id") 

33 

34 if not isinstance(id, six.string_types): 

35 raise error.InvalidRequestError( 

36 "Could not determine which URL to request: %s instance " 

37 "has invalid ID: %r, %s. ID should be of type `str` (or" 

38 " `unicode`)" % (type(self).__name__, id, type(id)), 

39 "id", 

40 ) 

41 

42 id = util.utf8(id) 

43 base = self.class_url() 

44 extn = quote_plus(id) 

45 return "%s/%s" % (base, extn) 

46 

47 # The `method_` and `url_` arguments are suffixed with an underscore to 

48 # avoid conflicting with actual request parameters in `params`. 

49 @classmethod 

50 def _static_request( 

51 cls, 

52 method_, 

53 url_, 

54 api_key=None, 

55 idempotency_key=None, 

56 stripe_version=None, 

57 stripe_account=None, 

58 **params 

59 ): 

60 requestor = api_requestor.APIRequestor( 

61 api_key, api_version=stripe_version, account=stripe_account 

62 ) 

63 headers = util.populate_headers(idempotency_key) 

64 response, api_key = requestor.request(method_, url_, params, headers) 

65 return util.convert_to_stripe_object( 

66 response, api_key, stripe_version, stripe_account 

67 ) 

68 

69 # The `method_` and `url_` arguments are suffixed with an underscore to 

70 # avoid conflicting with actual request parameters in `params`. 

71 @classmethod 

72 def _static_request_stream( 

73 cls, 

74 method_, 

75 url_, 

76 api_key=None, 

77 idempotency_key=None, 

78 stripe_version=None, 

79 stripe_account=None, 

80 **params 

81 ): 

82 requestor = api_requestor.APIRequestor( 

83 api_key, api_version=stripe_version, account=stripe_account 

84 ) 

85 headers = util.populate_headers(idempotency_key) 

86 response, _ = requestor.request_stream(method_, url_, params, headers) 

87 return response