Skip to content
Extraits de code Groupes Projets
request.rb 2,2 ko
Newer Older
  • Learn to ignore specific revisions
  • Raphael's avatar
    Raphael a validé
    #   Copyright (c) 2010, Diaspora Inc.  This file is
    
    Raphael's avatar
    Raphael a validé
    #   licensed under the Affero General Public License version 3 or later.  See
    
    Raphael's avatar
    Raphael a validé
    #   the COPYRIGHT file.
    
      require File.join(Rails.root, 'lib/diaspora/webhooks')
    
      require File.join(Rails.root, 'lib/postzord/dispatch')
    
    Raphael's avatar
    Raphael a validé
      xml_accessor :sender_handle
      xml_accessor :recipient_handle
    
      belongs_to :sender, :class_name => 'Person'
    
      belongs_to :recipient, :class_name => 'Person'
      belongs_to :aspect
    
      validates_uniqueness_of :sender_id, :scope => :recipient_id
    
      validates_presence_of :sender, :recipient
    
    Raphael's avatar
    Raphael a validé
      validate :not_already_connected
    
      validate :not_friending_yourself
    
      def self.diaspora_initialize(opts = {})
    
        self.new(:sender => opts[:from],
                 :recipient   => opts[:to],
                 :aspect => opts[:into])
    
    danielvincent's avatar
    danielvincent a validé
      def reverse_for accepting_user
    
          :sender => accepting_user.person,
          :recipient => self.sender
    
      def diaspora_handle
        sender_handle
      end
    
    
      def sender_handle
    
      end
      def sender_handle= sender_handle
    
    Raphael's avatar
    Raphael a validé
        self.sender = Person.where(:diaspora_handle => sender_handle).first
    
      end
    
      def recipient_handle
    
      end
      def recipient_handle= recipient_handle
    
    Raphael's avatar
    Raphael a validé
        self.recipient = Person.where(:diaspora_handle => recipient_handle).first
    
    maxwell's avatar
    maxwell a validé
    
    
    maxwell's avatar
    maxwell a validé
      def notification_type(user, person)
    
        if Contact.unscoped.where(:user_id => user.id, :person_id => person.id).first
    
          Notifications::RequestAccepted
    
    maxwell's avatar
    maxwell a validé
        else
    
          Notifications::NewRequest
    
    maxwell's avatar
    maxwell a validé
        end
    
    maxwell's avatar
    maxwell a validé
      def subscribers(user)
    
        [self.recipient]
    
    maxwell's avatar
    maxwell a validé
      end
    
    
      def receive(user, person)
    
        Rails.logger.info("event=receive payload_type=request sender=#{self.sender} to=#{self.recipient}")
    
        user.receive_contact_request(self)
    
    Raphael's avatar
    Raphael a validé
      def not_already_connected
    
        if sender && recipient && Contact.where(:user_id => self.recipient.owner_id, :person_id => self.sender.id).count > 0
    
    Raphael's avatar
    Raphael a validé
          errors[:base] << 'You have already connected to this person'
    
          errors[:base] << 'You can not friend yourself'
        end
      end