Sha256: 76eba8e1e326a1a5461a483a3aeb88e3c8712a95ebdb89fc00bf4244435868f6

Contents?: true

Size: 1.36 KB

Versions: 8

Compression:

Stored size: 1.36 KB

Contents

module PushbulletRuby
  class Pushable
    class File < Pushable
      def push
        raise MissingParameter unless required_parameters.all? { |e| params.keys.include?(e) }

        file_name = params[:file_name]
        file_path = params[:file_path]

        upload_file(file_name, file_path) do |data|
          payload = {
              file_name: data['file_name'],
              file_type: data['file_type'],
              file_url:  data['file_url'],
              body:      params[:body],
              type:      type
          }

          payload = specify_receiver(payload)

          client.post('/v2/pushes', payload)
        end
      end

      def type
        :file
      end

      def required_parameters
        [:file_name, :file_path, :body]
      end

      def upload_file(file_name, file_path, &block)
        mime_type = MIME::Types.type_for(file_path).first.to_s

        data = upload_request(file_name, mime_type)

        upload_url = data.body['upload_url']
        params     = data.body['data']

        io = Faraday::UploadIO.new(file_path, mime_type)

        client.post upload_url, params.merge(file: io)

        yield data.body
      end

      def upload_request(file_name, mime_type)
        client.post '/v2/upload-request', file_name: file_name, file_type: mime_type
      end
    end
  end
end

Version data entries

8 entries across 7 versions & 2 rubygems

Version Path
tdiary-5.1.6 vendor/bundle/ruby/2.7.0/gems/tdiary-5.1.5/vendor/bundle/ruby/3.0.0/gems/pushbullet_ruby-1.1.4/lib/pushbullet_ruby/pushable/file.rb
tdiary-5.1.6 vendor/bundle/ruby/2.7.0/gems/pushbullet_ruby-1.1.4/lib/pushbullet_ruby/pushable/file.rb
tdiary-5.1.5 vendor/bundle/ruby/3.0.0/gems/pushbullet_ruby-1.1.4/lib/pushbullet_ruby/pushable/file.rb
tdiary-5.1.2 vendor/bundle/ruby/2.6.0/gems/pushbullet_ruby-1.1.4/lib/pushbullet_ruby/pushable/file.rb
tdiary-5.1.1 vendor/bundle/ruby/2.6.0/gems/pushbullet_ruby-1.1.4/lib/pushbullet_ruby/pushable/file.rb
pushbullet_ruby-1.1.4 lib/pushbullet_ruby/pushable/file.rb
tdiary-5.0.8 vendor/bundle/gems/pushbullet_ruby-1.1.3/lib/pushbullet_ruby/pushable/file.rb
pushbullet_ruby-1.1.3 lib/pushbullet_ruby/pushable/file.rb