Sha256: 7dca50c948daa1128d81177c4f9e4068689aac092a5aee824cdc094eec3806ec

Contents?: true

Size: 1.58 KB

Versions: 10

Compression:

Stored size: 1.58 KB

Contents

module Fastlane
  module Actions
    class TypetalkAction
      def self.run(params)
        options = {
            message: nil,
            note_path: nil,
            success: true,
            topicId: nil,
            typetalk_token: nil,
        }.merge(params.first || {})

        [:message, :topicId, :typetalk_token].each { |key|
          raise "No #{key} given.".red unless options[key]
        }

        emoticon = (options[:success] ? ':smile:' : ':rage:')
        message = "#{emoticon} #{options[:message].to_s}"

        note_path = File.expand_path(options[:note_path]) if options[:note_path]
        if note_path and File.exist?(note_path)
          contents = File.read(note_path)
          message += "\n\n```\n#{contents}\n```"
        end

        topicId = options[:topicId]
        typetalk_token = options[:typetalk_token]

        self.post_to_typetalk(message, topicId, typetalk_token)

        Helper.log.info 'Successfully sent Typetalk notification'.green
      end

      def self.post_to_typetalk(message, topicId, typetalk_token)
        require 'net/http'
        require 'uri'

        uri = URI.parse("https://typetalk.in/api/v1/topics/#{topicId}")
        response = Net::HTTP.post_form(uri, {'message' => message,
                                             'typetalkToken' => typetalk_token})

        self.check_response(response)
      end

      def self.check_response(response)
        case response.code.to_i
          when 200, 204
            true
          else
            raise "Could not sent Typetalk notification".red
        end
      end
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
fastlane-0.6.1 lib/fastlane/actions/typetalk.rb
fastlane-0.6.0 lib/fastlane/actions/typetalk.rb
fastlane-0.5.0 lib/fastlane/actions/typetalk.rb
fastlane-0.4.2 lib/fastlane/actions/typetalk.rb
fastlane-0.4.1 lib/fastlane/actions/typetalk.rb
fastlane-0.4.0 lib/fastlane/actions/typetalk.rb
fastlane-0.3.0 lib/fastlane/actions/typetalk.rb
fastlane-0.2.1 lib/fastlane/actions/typetalk.rb
fastlane-0.2.0 lib/fastlane/actions/typetalk.rb
fastlane-0.1.19 lib/fastlane/actions/typetalk.rb