2017-09-02 10 views
-4

より良いコーディングでオブジェクト指向プログラミングで同じことをどうやって行えますか?多分、クラスを作成して同じコードを再利用するでしょうか?今、私が持っているものより多くのスクリプトではありませんあなたのコードを再利用することにしたいより良いコーディングでオブジェクト指向プログラミングで同じことをどうやって行えますか?

import requests 
import json 

url = "https://sandbox.esignlive.com/api/packages" 

payload = json.dumps({"documents":[{"id":"sample-contract","name":"Test Document"}],"status":"SENT","type":"PACKAGE","roles":[{"type":"SIGNER","id":"Signer1","signers":[{"email":"[email protected]","firstName":"John","lastName":"Smith","id":"Signer1"}],"name":"Signer1"}],"name":"Example Package"}) 

file = open('doc1.pdf', 'rb') 

files = { 
    'payload': payload, 
    'file': file 
} 

headers = { 
    'authorization': "Basic **********", 
    'accept': "application/json" 
    } 

response = requests.post(url, files=files, headers=headers) 

# create a new approval 
url = "https://sandbox.esignlive.com/api/packages/" + str(response.text[1]) + "/documents/sample-contract/approvals" 
requests.post(url, headers=headers) 

# Create a new field with an auto-generated name 
url = "https://sandbox.e-signlive.com/api/user/customfields" 
requests.post(url, headers=headers) 

# get and display signing url 
url = "https://sandbox.e-signlive.com/api/packages/"+response.text+"/roles/Signer1/signingUrl" 
response = requests.get(url, headers=headers) 

print(response.text) 
+4

私はこのためにクラスを定義することに利点はありません。 – user2357112

+0

しかし、スクリプトが増え続けるなら、私はそれを必要としますか? –

+2

これは、スクリプトがどのように成長するかによって異なります。オブジェクト指向設計は、可能なツールの1つに過ぎません。それはどこにでも役立たない。 – user2357112

答えて

0

場合resuableコードのようなものです、あなただけのいくつかの機能を使用する必要があります。天気かどうかは、クラスの中にそれらの機能を置くかどうかはすべて個人的な味の問題です。以下はあなたがそうする方法です。

import requests 
import json 

class Document(object): 

    def __init__(self): 
     """ Setup the variables on the object as soon as one is created """ 
     self.url = "https://sandbox.esignlive.com/api/packages" 
     self.headers = { 
      'authorization': "Basic **********", 
      'accept': "application/json" 
      } 

    def create_new_approval(self, doc): 
     """create a new approval """ 
     #you'll probably want to change this function to accept additional items other than self and doc that you can place inside of the payload. I'll leave that up to you to do. 

     payload = json.dumps({"documents":[{"id":"sample-contract","name":"Test Document"}],"status":"SENT","type":"PACKAGE","roles":[{"type":"SIGNER","id":"Signer1","signers":[{"email":"[email protected]","firstName":"John","lastName":"Smith","id":"Signer1"}],"name":"Signer1"}],"name":"Example Package"}) 

     file = open(doc, 'rb') 

     files = { 
      'payload': payload, 
      'file': file 
     } 

     response = requests.post(url, files=files, headers=self.headers) 

     url = "https://sandbox.esignlive.com/api/packages/" + str(response.text[1]) + "/documents/sample-contract/approvals" 
     response = requests.post(self.url, headers=self.headers) 

     #You'll want to do something like this each time you talk to esign in case esign gives back an error 
     if not reponse: 
      raise Exception("Failed to create an approval") 

     return response.text 

    def add_field(self): 
     """Create a new field with an auto-generated name """ 
     url = "https://sandbox.e-signlive.com/api/user/customfields" 
     requests.post(self.url, headers=self.headers) 

    def get_signing_url(self, give_this_a_good_name): 
     """ get the signing url """ 
     url = "https://sandbox.e-signlive.com/api/packages/"+give_this_a_good_name+"/roles/Signer1/signingUrl" 
     response = requests.get(self.url, headers=self.headers) 
     return response 

    def display_signing_url(self): 
     """ display signing url """ 
     print(self.get_signing_url()) 

# You would then use your Document object like this. 
doc = Document('doc1.pdf') 
doc_name_maybe = doc.add_field() 
doc.display_signing_url(doc_name_maybe) 

ありクラスといくつかの欠陥であってもよいが、何も動作しない場合、私はコメントで知らせて。私はどのようにesignが動作するのかわかりませんが、これはあなたに良い出発点を与えるはずです。

関連する問題