code: def send_api_request(self, method, url, params={}, valid_parameters=[], needs_api_key=False):
          
          if needs_api_key:
              params.update({'api_key': self.request.consumer_key})
              valid_parameters.append('api_key')
  
          files = {}
          if 'data' in params:
              if isinstance(params['data'], list):
                  for idx, data in enumerate(params['data']):
                      files['data['+str(idx)+']'] =  open(params['data'][idx], 'rb')
              else:
                  files = {'data': open(params['data'], 'rb')}
              del params['data']
  
          validate_params(valid_parameters, params)
          if method == "get":
              return self.request.get(url, params)
          else:
              return self.request.post(url, params, files)
docs: Sends the url with parameters to the requested url, validating them
          to make sure that they are what we expect to have passed to us
  
          :param method: a string, the request method you want to make
          :param params: a dict, the parameters used for the API request
          :param valid_parameters: a list, the list of valid parameters
          :param needs_api_key: a boolean, whether or not your request needs an api key injected
  
          :returns: a dict parsed from the JSON response