in footmark/connection.py [0:0]
def format_request_kwargs(self, **kwargs):
for key, value in list(kwargs.items()):
# Format the following parameter to JSON
if key in ["instance_ids", "disk_ids", "execution_ids", "parameters"]:
if not value:
continue
kwargs[key] = json.dumps(value)
if key in ["page_size", "page_number"]:
try:
if value and int(value):
kwargs[key] = json.dumps(int(value))
continue
except Exception as e:
raise e
# Convert Tags
if key == "tags":
kwargs[key] = self.convert_tags(value)
# Base64 userdata
if key == "user_data":
if not value:
continue
if isinstance(value, str):
value = value.encode('ascii')
try:
if base64.b64encode(base64.b64decode(value)) != value:
kwargs[key] = base64.b64encode(value)
except:
kwargs[key] = base64.b64encode(value)
# Add 'Action' parameter. Using inspect.stack()[1][3] gets invoking method name
action = self.underscore_to_studlycaps(inspect.stack()[1][3])
if action in ["CreateInstances", "StartInstances", "StopInstances", "RebootInstances", "DeleteInstances"]:
action = action[:-1]
kwargs["Action"] = action
# Add 'ClientToken' parameter
kwargs["client_token"] = self.build_client_token(action)
return kwargs