class FyleSDK::Connect

Public Class Methods

new(base_url, client_id, client_secret, refresh_token) click to toggle source
# File lib/fylesdk.rb, line 25
def initialize(base_url, client_id, client_secret, refresh_token)
  @base_url = base_url
  @client_id = client_id
  @client_secret = client_secret
  @refresh_token = refresh_token
  @access_token = self.get_access_token

  # create an object for each api
  @employees = FyleSDK::Employees.new()
  @expenses = FyleSDK::Expenses.new()
  @reports = FyleSDK::Reports.new()
  @advances = FyleSDK::Advances.new()
  @trip_requests = FyleSDK::TripRequests.new()
  @reimbursements = FyleSDK::Reimbursements.new()
  @settlements = FyleSDK::Settlements.new()

  # get the access token and base_url
  self.update_access_token
  self.update_base_url
end

Public Instance Methods

advances() click to toggle source
# File lib/fylesdk.rb, line 59
def advances
  return @advances
end
employees() click to toggle source
# File lib/fylesdk.rb, line 47
def employees
  return @employees
end
expenses() click to toggle source
# File lib/fylesdk.rb, line 51
def expenses
  return @expenses
end
get_access_token() click to toggle source
# File lib/fylesdk.rb, line 101
def get_access_token
  """Get the access token using a HTTP post.
  
  Returns:
      A new access token.
  """

  url = URI.parse(@base_url + "/api/auth/access_token")
  http = Net::HTTP.new(url.host, url.port)
  http.use_ssl = true
  body = {
    'grant_type' => 'refresh_token',
    "client_id" => @client_id,
    "client_secret" => @client_secret,
    "refresh_token" => @refresh_token
  }
  request = Net::HTTP::Post.new(url)
  request["Content-Type"] = 'application/json'
  request.body = body.to_json()
  response = http.request(request)

  if response.code == "200"
    data = JSON.parse(response.body)
    return data["access_token"]
  elsif response.code == "400"
      raise FyleSDK::WrongParamsError.new('Some of the parameters are wrong', JSON.parse(response.body))

  elif response.code == "401"
      raise FyleSDK::InvalidTokenError.new('Invalid token, try to refresh it', JSON.parse(response.body))

  elsif response.code == "403"
      raise FyleSDK::NoPrivilegeError.new('Forbidden, the user has insufficient privilege', JSON.parse(response.body))

  elsif response.code == "404"
      raise FyleSDK::NotFoundItemError.new('Not found item with ID', JSON.parse(response.body))

  elsif response.code == "498"
      raise FyleSDK::ExpiredTokenError.new('Expired token, try to refresh it', JSON.parse(response.body))

  elsif response.code == "500"
      raise FyleSDK::InternalServerError.new('Internal server error', JSON.parse(response.body))

  else
      raise FyleSDK::FyleSDKError.new('Error: %s' % response.code, JSON.parse(response.body))
  end
end
reimbursements() click to toggle source
# File lib/fylesdk.rb, line 67
def reimbursements
  return @reimbursements
end
reports() click to toggle source
# File lib/fylesdk.rb, line 55
def reports
  return @reports
end
settlements() click to toggle source
# File lib/fylesdk.rb, line 71
def settlements
  return @settlements
end
trip_requests() click to toggle source
# File lib/fylesdk.rb, line 63
def trip_requests
  return @trip_requests
end
update_access_token() click to toggle source
# File lib/fylesdk.rb, line 77
def update_access_token
  """Update the access token and change it in all API objects."""

  @employees.change_access_token(@access_token)
  @expenses.change_access_token(@access_token)
  @reports.change_access_token(@access_token)
  @advances.change_access_token(@access_token)
  @trip_requests.change_access_token(@access_token)
  @reimbursements.change_access_token(@access_token)
  @settlements.change_access_token(@access_token)
end
update_base_url() click to toggle source
# File lib/fylesdk.rb, line 89
def update_base_url
  """Update the base_url and change it in all API objects."""

  @employees.set_base_url(@base_url)
  @expenses.set_base_url(@base_url)
  @reports.set_base_url(@base_url)
  @advances.set_base_url(@base_url)
  @trip_requests.set_base_url(@base_url)
  @reimbursements.set_base_url(@base_url)
  @settlements.set_base_url(@base_url)
end