Class: Socialcast::CommandLine::ProvisionPhoto::ApiSyncStrategy

Inherits:
Object
  • Object
show all
Defined in:
lib/socialcast/command_line/provision_photo.rb

Constant Summary collapse

MAX_BATCH_SIZE =
50

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(provisioner) ⇒ ApiSyncStrategy

Returns a new instance of ApiSyncStrategy.



110
111
112
# File 'lib/socialcast/command_line/provision_photo.rb', line 110

def initialize(provisioner)
  @provisioner = provisioner
end

Instance Attribute Details

#http_configObject (readonly)

Returns the value of attribute http_config.



106
107
108
# File 'lib/socialcast/command_line/provision_photo.rb', line 106

def http_config
  @http_config
end

#provisionerObject (readonly)

Returns the value of attribute provisioner.



105
106
107
# File 'lib/socialcast/command_line/provision_photo.rb', line 105

def provisioner
  @provisioner
end

Instance Method Details

#batch_sizeObject



127
128
129
# File 'lib/socialcast/command_line/provision_photo.rb', line 127

def batch_size
  MAX_BATCH_SIZE
end

#process(user_photos, options = {}) ⇒ Object



114
115
116
117
118
119
120
121
122
123
124
125
# File 'lib/socialcast/command_line/provision_photo.rb', line 114

def process(user_photos, options = {})
  @http_config = options[:http_config]
  @force_sync = options[:force_sync]

  search_users_resource = Socialcast::CommandLine.resource_for_path '/api/users/search', http_config
  user_emails_query = user_photos.map { |email, _| "\"#{email}\"" }.join(" OR ")
  user_search_response = search_users_resource.get(:params => { :q => user_emails_query, :per_page => batch_size }, :accept => :json)
  JSON.parse(user_search_response)['users'].each do |user_hash|
    email = user_hash['contact_info']['email']
    sync_photo(user_hash, user_photos[email])
  end
end