Initial commit
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
require_relative '../../../services/datasources/lib/datasources'
|
||||
|
||||
# @see DB table 'synchronization_oauths'
|
||||
class SynchronizationOauth < Sequel::Model
|
||||
|
||||
many_to_one :user
|
||||
|
||||
PUBLIC_ATTRIBUTES = [
|
||||
:id,
|
||||
:user_id,
|
||||
:service,
|
||||
:token
|
||||
]
|
||||
|
||||
def public_values
|
||||
Hash[PUBLIC_ATTRIBUTES.map{ |k| [k, (self.send(k) rescue self[k].to_s)] }]
|
||||
end #public_values
|
||||
|
||||
def validate
|
||||
super
|
||||
|
||||
validates_presence :token
|
||||
|
||||
if new?
|
||||
existing_oauth = SynchronizationOauth.filter(
|
||||
user_id: user_id,
|
||||
service: service
|
||||
).first
|
||||
errors.add(:user_id, " already has an oauth token created for service #{:service}") unless existing_oauth.nil?
|
||||
else
|
||||
existing_oauth = SynchronizationOauth.filter(
|
||||
id: id
|
||||
).first
|
||||
errors.add(:id, ' cannot change user or service, only token') unless (existing_oauth.service == service && existing_oauth.user_id == user_id)
|
||||
end
|
||||
end #validate
|
||||
|
||||
def before_save
|
||||
super
|
||||
self.updated_at = Time.now
|
||||
end #before_save
|
||||
|
||||
def ==(oauth_object)
|
||||
return false unless oauth_object
|
||||
self.id == oauth_object.id
|
||||
end #==
|
||||
|
||||
|
||||
def get_service_datasource
|
||||
user = ::User.where(id: user_id).first
|
||||
datasource = CartoDB::Datasources::DatasourcesFactory.get_datasource(service, user, {
|
||||
http_timeout: ::DataImport.http_timeout_for(user)
|
||||
})
|
||||
datasource.token = token unless datasource.nil?
|
||||
datasource
|
||||
end #get_service_datasource
|
||||
|
||||
end
|
||||
Reference in New Issue
Block a user