Sha256: 1da22514b03228538ac125a4a92346033f8e3d88409702b3da761dbbac854bfa

Contents?: true

Size: 1.53 KB

Versions: 5

Compression:

Stored size: 1.53 KB

Contents

module Git::Whistles
  module Youtrack
    class Ticket
      class << self
        def build_from_remote(ticket_hash)
          return nil if ticket_hash.nil?
          return nil if issue_not_found? ticket_hash

          self.new.tap do |ticket|
            ticket.title = title_from ticket_hash
            ticket.id = id_from ticket_hash
            ticket.project = project_from ticket_hash
            ticket.description = description_from ticket_hash
          end
        end

        def title_from(ticket_hash)
          ticket_hash
            .dig('issue', 'field')
            .select { |f| f['name'] == 'summary' }
            .first.dig('value')
        end

        def id_from(ticket_hash)
          ticket_hash
            .dig('issue', 'field')
            .select { |f| f['name'] == 'numberInProject' }
            .first.dig('value').to_i
        end

        def project_from(ticket_hash)
          ticket_hash
            .dig('issue', 'field')
            .select { |f| f['name'] == 'projectShortName' }
            .first.dig('value')
        end

        def description_from(ticket_hash)
          ticket_hash
            .dig('issue', 'field')
            .select { |f| f['name'] == 'description' }
            .first.dig('value')
        end

        def issue_not_found?(ticket_hash)
          if ticket_hash["error"]
            true
          else
            false
          end
        end
      end

      attr_accessor :title
      attr_accessor :id
      attr_accessor :project
      attr_accessor :description
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
git-whistles-1.4.2 lib/git-whistles/youtrack/ticket.rb
git-whistles-1.4 lib/git-whistles/youtrack/ticket.rb
git-whistles-1.3 lib/git-whistles/youtrack/ticket.rb
git-whistles-1.2.1 lib/git-whistles/youtrack/ticket.rb
git-whistles-1.2.0 lib/git-whistles/youtrack/ticket.rb