diff --git a/templates/dir_init.j2 b/templates/dir_init.j2 new file mode 100644 index 0000000..038a6e7 --- /dev/null +++ b/templates/dir_init.j2 @@ -0,0 +1,3 @@ + @property + def {{method_name}}(self): + return self.general.{{method_name}} \ No newline at end of file diff --git a/templates/endpoint.j2 b/templates/endpoint.j2 new file mode 100644 index 0000000..9dc53f1 --- /dev/null +++ b/templates/endpoint.j2 @@ -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) \ No newline at end of file diff --git a/templates/import.j2 b/templates/import.j2 new file mode 100644 index 0000000..619af36 --- /dev/null +++ b/templates/import.j2 @@ -0,0 +1 @@ +from voipms.api.{{category_name}}.{{method_name}} import {{class_name}} \ No newline at end of file diff --git a/templates/initialize.j2 b/templates/initialize.j2 new file mode 100644 index 0000000..4a1a7b6 --- /dev/null +++ b/templates/initialize.j2 @@ -0,0 +1 @@ + self._{{method_name}} = None \ No newline at end of file diff --git a/templates/method_generator.py b/templates/method_generator.py new file mode 100644 index 0000000..6a7ebe3 --- /dev/null +++ b/templates/method_generator.py @@ -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) \ No newline at end of file diff --git a/templates/subdir_init.j2 b/templates/subdir_init.j2 new file mode 100644 index 0000000..afa0499 --- /dev/null +++ b/templates/subdir_init.j2 @@ -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}} \ No newline at end of file diff --git a/voipms/api/__init__.py b/voipms/api/__init__.py index 7c802d5..129a06e 100644 --- a/voipms/api/__init__.py +++ b/voipms/api/__init__.py @@ -82,4 +82,12 @@ class Client(object): @property def ip(self): - return self.general.ip \ No newline at end of file + return self.general.ip + + @property + def transaction_history(self): + return self.general.transaction_history + + @property + def countries(self): + return self.general.countries \ No newline at end of file diff --git a/voipms/api/general/__init__.py b/voipms/api/general/__init__.py index 4523125..5f7e5e8 100644 --- a/voipms/api/general/__init__.py +++ b/voipms/api/general/__init__.py @@ -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 \ No newline at end of file +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 \ No newline at end of file diff --git a/voipms/api/general/countries.py b/voipms/api/general/countries.py new file mode 100644 index 0000000..843369e --- /dev/null +++ b/voipms/api/general/countries.py @@ -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) \ No newline at end of file diff --git a/voipms/api/general/transaction_history.py b/voipms/api/general/transaction_history.py new file mode 100644 index 0000000..1165f31 --- /dev/null +++ b/voipms/api/general/transaction_history.py @@ -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) \ No newline at end of file