Sha256: 5420647beb42251c076fc21680394db97cabf7d1be8098f993699f2b7ef6fa3b

Contents?: true

Size: 1.09 KB

Versions: 1

Compression:

Stored size: 1.09 KB

Contents

# -*- encoding : utf-8 -*-
module Parse
  class Batch
    attr_reader :requests
    attr_reader :client

    def initialize(client = Parse.client)
      @client = client
      @requests ||= []
    end

    def add_request(request)
      @requests << request
    end

    def create_object(object)
      method = "POST"
      path = Parse::Protocol.class_uri(object.class_name)
      body = object.safe_hash
      add_request({
        "method" => method,
        "path" => path,
        "body" => body
      })
    end

    def update_object(object)
      method = "PUT"
      path = Parse::Protocol.class_uri(object.class_name, object.id)
      body = object.safe_hash
      add_request({
        "method" => method,
        "path" => path,
        "body" => body
      })
    end

    def delete_object(object)
      add_request({
        "method" => "DELETE",
        "path" => Parse::Protocol.class_uri(object.class_name, object.id)
      })
    end

    def run!
      uri = Parse::Protocol.batch_request_uri
      body = {:requests => @requests}.to_json
      @client.request(uri, :post, body)
    end

  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
parse-ruby-client-0.3.0 lib/parse/batch.rb