Sha256: aaa9f01959b273cc3b60dba5b583df9ca63c47f82a1dab89c52aea7fb8febb6b

Contents?: true

Size: 1.87 KB

Versions: 2

Compression:

Stored size: 1.87 KB

Contents

module Washbullet
  module API
    module Pushes
      def push_note(device_iden, title, body)
        push :note, device_iden, title: title, body: body
      end

      def push_link(device_iden, title, url, body)
        push :link, device_iden, title: title, url: url, body: body
      end

      def push_address(device_iden, name, address)
        push :address, device_iden, name: name, address: address
      end

      def push_list(device_iden, title, items)
        push :list, device_iden, title: title, items: items
      end

      def push_file(device_iden, file_name, file_path, body)
        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:      body
          }

          push :file, device_iden, payload
        end
      end

      def pushes(modified_after = nil, cursor = nil)
        params = {modified_after: modified_after, cursor: cursor}

        params = params.values.all?(&:nil?) ? {} : params

        get 'v2/pushes', params
      end

      def delete_push(push_iden)
        delete "/v2/pushes/#{push_iden}"
      end

      private

      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']
        payload    = data.body['data']

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

        post upload_url, payload.merge(file: io)

        yield data.body
      end

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

      def push(type, device_iden, payload)
        post '/v2/pushes', payload.merge(device_iden: device_iden, type: type)
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
washbullet-0.3.1 lib/washbullet/api/pushes.rb
washbullet-0.3.0 lib/washbullet/api/pushes.rb