added countries endpoint, added code generation tool for adding endpoints

This commit is contained in:
Daniel 2019-08-18 21:28:06 -04:00
parent 297a67f57e
commit 25e0635db8
10 changed files with 145 additions and 22 deletions

3
templates/dir_init.j2 Normal file
View File

@ -0,0 +1,3 @@
@property
def {{method_name}}(self):
return self.general.{{method_name}}

7
templates/endpoint.j2 Normal file
View File

@ -0,0 +1,7 @@
class {{class_name}}():
def __init__(self, base):
self.method = "{{endpoint}}"
self.base = base
def fetch(self, params={}):
return self.base.request(self.method)

1
templates/import.j2 Normal file
View File

@ -0,0 +1 @@
from voipms.api.{{category_name}}.{{method_name}} import {{class_name}}

1
templates/initialize.j2 Normal file
View File

@ -0,0 +1 @@
self._{{method_name}} = None

View File

@ -0,0 +1,68 @@
from jinja2 import Environment, FileSystemLoader
file_loader = FileSystemLoader('.')
env = Environment(loader=file_loader)
print("Which category does this endpoint fall under?")
subdir_index = int(input("1: accounts, 2: call_detail_records, 3: dids, 4: general, 5: voicemail: "))
subdir = ("accounts", "call_detail_records", "dids", "general", "voicemail")[subdir_index - 1]
endpoint = "getCountries"
method = "countries"
filename = "../voipms/api/{}/{}.py".format(subdir, method)
template = env.get_template('endpoint.j2')
method_split = method.split('_')
class_name = ''.join((i.title() for i in method_split))
output = template.render(endpoint=endpoint, class_name=class_name)
with open(filename, 'a') as file:
file.writelines(output)
filename = "../voipms/api/{}/__init__.py".format(subdir)
template = env.get_template('import.j2')
method_split = method.split('_')
class_name = ''.join((i.title() for i in method_split))
output_import = template.render(method_name=method, class_name=class_name, category_name=subdir)
template = env.get_template('initialize.j2')
output_init = template.render(method_name=method)
template = env.get_template('subdir_init.j2')
output_property = template.render(method_name=method, class_name=class_name)
with open(filename, 'r') as file:
contents = file.readlines()
pos = 0
for k, v in enumerate(contents):
if v == "\n":
contents.insert(k, output_import + "\n")
pos = k
break
print(pos)
for k, v in enumerate(contents[pos+2:], pos+2):
if v == "\n":
contents.insert(k, output_init + "\n")
break
contents.append("\n\n" + output_property)
with open(filename, 'w') as file:
file.writelines(contents)
filename = "../voipms/api/__init__.py"
template = env.get_template('dir_init.j2')
output = template.render(method_name=method)
with open(filename, 'a') as file:
file.writelines("\n\n" + output)

5
templates/subdir_init.j2 Normal file
View File

@ -0,0 +1,5 @@
@property
def {{method_name}}(self):
if self._{{method_name}} is None:
self._{{method_name}} = {{class_name}}(self.base)
return self._{{method_name}}

View File

@ -82,4 +82,12 @@ class Client(object):
@property
def ip(self):
return self.general.ip
return self.general.ip
@property
def transaction_history(self):
return self.general.transaction_history
@property
def countries(self):
return self.general.countries

View File

@ -1,21 +1,37 @@
from voipms.api.general.balance import Balance
from voipms.api.general.ip import IP
class General():
def __init__(self, base):
self._balance = None
self._ip = None
self.base = base
@property
def balance(self):
if self._balance is None:
self._balance = Balance(self.base)
return self._balance
@property
def ip(self):
if self._ip is None:
self._ip = IP(self.base)
return self._ip
from voipms.api.general.balance import Balance
from voipms.api.general.ip import IP
from voipms.api.general.transaction_history import TransactionHistory
from voipms.api.general.countries import Countries
class General():
def __init__(self, base):
self._balance = None
self._ip = None
self._transaction_history = None
self._countries = None
self.base = base
@property
def balance(self):
if self._balance is None:
self._balance = Balance(self.base)
return self._balance
@property
def ip(self):
if self._ip is None:
self._ip = IP(self.base)
return self._ip
@property
def transaction_history(self):
if self._transaction_history is None:
self._transaction_history = TransactionHistory(self.base)
return self._transaction_history
@property
def countries(self):
if self._countries is None:
self._countries = Countries(self.base)
return self._countries

View File

@ -0,0 +1,7 @@
class Countries():
def __init__(self, base):
self.method = "getCountries"
self.base = base
def fetch(self, params={}):
return self.base.request(self.method)

View File

@ -0,0 +1,7 @@
class TransactionHistory():
def __init__(self, base):
self.method = "getTransactionHistory"
self.base = base
def fetch(self, params={}):
return self.base.request(self.method)