Last active
February 16, 2016 21:39
-
-
Save AugustoPedraza/c11d08260577b2faa06e to your computer and use it in GitHub Desktop.
Code sketch for yodlee providers synchronization
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# lib/yodlee/api/v1/provider.rb | |
class Yodlee::Api::V1::Provider < Yodlee::Api::V1::Base | |
# [ {id: 1, lastModified: 2013-01-02T00:39:52Z}, {id: 3, lastModified: 2013-01-02T00:39:52Z}, {id: 4, lastModified: 2013-01-02T00:39:52Z} ] | |
def list_all | |
caller_result = for_session.list_providers | |
list = [] | |
caller_result.provider.map do |provider| | |
partial_provider = {} | |
fields.each { |f| partial_provider[f] = provider[f] } | |
list << partial_provider | |
end | |
list | |
end | |
def get_details(provider_id) | |
caller_result = for_session.get_provider_details(provider_id) | |
caller_result['provider'].first | |
end | |
end | |
# app/services/synchronize_yodlee_providers.rb | |
class SynchronizeYodleeProviders | |
class << self | |
def call! | |
providers = Yodlee::Api::V1::Provider.new.list | |
existing_providers = YodleeProvider.pluck(:yodlee_id, :last_modified) | |
#TODO: get updated providers | |
providers_to_update= providers - existing_providers | |
providers_to_update.each do |provider| | |
CreateOrUpdateYodleeProvider.call!(provider.id) | |
end | |
end | |
end | |
end | |
# app/services/update_yodlee_provider | |
class CreateOrUpdateYodleeProvider | |
class << self | |
def call!(provider_id) | |
provider_hash = Yodlee::Api::V1::Provider.new.get_details(provider_id: provider_id) | |
yodlee_provider = YodleeProvider.find_or_initialize_by(yodlee_id: provider_id) | |
yodlee_provider.update_from_camelized_hash!(provider_hash) | |
end | |
end | |
end | |
# app/models/yodlee_provider.rb | |
class YodleeProvider < ActiveRecord::Base | |
def update_from_camelized_hash!(camelized_hash) | |
#TODO: Implement deserialization | |
save! | |
end | |
end | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment