Code Duplication    Length = 17-21 lines in 2 locations

bitpay/bitpay_client.py 2 locations

@@ 58-78 (lines=21) @@
55
            return response.json()['data'][0]['pairingCode']
56
        self.response_error(response)
57
58
    def create_invoice(self, params):
59
        """
60
        POST /invoices
61
        https://bitpay.com/api#resource-Invoices
62
        """
63
        self.verify_invoice_params(params['price'], params['currency'])
64
        payload = json.dumps(params)
65
        uri = self.uri + "/invoices"
66
        xidentity = key_utils.get_compressed_public_key_from_pem(self.pem)
67
        xsignature = key_utils.sign(uri + payload, self.pem)
68
        headers = {"content-type": "application/json",
69
                   "accept": "application/json", "X-Identity": xidentity,
70
                   "X-Signature": xsignature, "X-accept-version": "2.0.0"}
71
        try:
72
            response = requests.post(uri, data=payload, headers=headers,
73
                                     verify=self.verify)
74
        except Exception as pro:
75
            raise BitPayConnectionError(pro.args)
76
        if response.ok:
77
            return response.json()['data']
78
        self.response_error(response)
79
80
    def get_invoice(self, invoice_id):
81
        """
@@ 40-56 (lines=17) @@
37
            return self.tokens
38
        self.response_error(response)
39
40
    def create_token(self, facade):
41
        """
42
        POST /tokens
43
        https://bitpay.com/api#resource-Tokens
44
        """
45
        payload = {'id': self.client_id, 'facade': facade}
46
        headers = {"content-type": "application/json",
47
                   "accept": "application/json", "X-accept-version": "2.0.0"}
48
        try:
49
            response = requests.post(self.uri + "/tokens", verify=self.verify,
50
                                     data=json.dumps(payload), headers=headers)
51
        except Exception:
52
            raise BitPayConnectionError('Connection refused')
53
        if response.ok:
54
            self.tokens = self.token_from_response(response.json())
55
            return response.json()['data'][0]['pairingCode']
56
        self.response_error(response)
57
58
    def create_invoice(self, params):
59
        """