Module: Opium::Model::Connectable::ClassMethods

Defined in:
lib/opium/model/connectable.rb

Instance Method Summary collapse

Instance Method Details

#as_resource(name, &block) ⇒ Object



46
47
48
49
50
51
52
# File 'lib/opium/model/connectable.rb', line 46

def as_resource( name, &block )
  fail ArgumentError, 'no block given' unless block_given?
  @masked_resource_name = name.to_s.freeze
  block.call
ensure
  @masked_resource_name = nil
end

#connectionObject



22
23
24
25
26
27
28
29
30
31
# File 'lib/opium/model/connectable.rb', line 22

def connection
  @@connection ||= Faraday.new( url: 'https://api.parse.com/1/' ) do |faraday|
    faraday.request :multipart
    faraday.request :url_encoded
    faraday.response :logger if Opium.config.log_network_responses
    faraday.response :json, content_type: /\bjson$/
    faraday.headers[:x_parse_application_id] = Opium.config.app_id
    faraday.adapter Faraday.default_adapter
  end
end

#http_delete(id, options = {}) ⇒ Object



76
77
78
# File 'lib/opium/model/connectable.rb', line 76

def http_delete( id, options = {} )
  http( :delete, deeply_merge( options, id: id ) )
end

#http_get(options = {}) ⇒ Object



60
61
62
63
64
65
66
# File 'lib/opium/model/connectable.rb', line 60

def http_get( options = {} )
  http( :get, options ) do |request|
    options.fetch(:query, {}).each do |key, value|
      request.params[key] = key.to_s == 'where' ? value.to_json : value
    end
  end
end

#http_post(data, options = {}) ⇒ Object



68
69
70
# File 'lib/opium/model/connectable.rb', line 68

def http_post( data, options = {} )
  http( :post, deeply_merge( options, content_type_json ), &infuse_request_with( data ) )
end

#http_put(id, data, options = {}) ⇒ Object



72
73
74
# File 'lib/opium/model/connectable.rb', line 72

def http_put( id, data, options = {} )
  http( :put, deeply_merge( options, content_type_json, id: id ), &infuse_request_with( data ) )          
end

#no_object_prefix!Object

Parse doesn’t route User objects through /classes/, instead treating them as a top-level class.



42
43
44
# File 'lib/opium/model/connectable.rb', line 42

def no_object_prefix!
  @object_prefix = ''
end

#object_prefixObject



37
38
39
# File 'lib/opium/model/connectable.rb', line 37

def object_prefix
  @object_prefix ||= 'classes'
end

#requires_heightened_privileges!Object



80
81
82
# File 'lib/opium/model/connectable.rb', line 80

def requires_heightened_privileges!
  @requires_heightened_privileges = true
end

#requires_heightened_privileges?Boolean Also known as: has_heightened_privileges?

Returns:



84
85
86
# File 'lib/opium/model/connectable.rb', line 84

def requires_heightened_privileges?
  !@requires_heightened_privileges.nil?
end

#reset_connection!Object



33
34
35
# File 'lib/opium/model/connectable.rb', line 33

def reset_connection!
  @@connection = nil
end

#resource_name(resource_id = nil) ⇒ Object



54
55
56
57
58
# File 'lib/opium/model/connectable.rb', line 54

def resource_name( resource_id = nil )
  return @masked_resource_name if @masked_resource_name
  @resource_name ||= Pathname.new( object_prefix ).join( map_name_to_resource( model_name ) )
  ( resource_id ? @resource_name.join( resource_id ) : @resource_name ).to_s
end

#with_heightened_privileges(&block) ⇒ Object



90
91
92
93
94
95
# File 'lib/opium/model/connectable.rb', line 90

def with_heightened_privileges(&block)
  previous, @requires_heightened_privileges = @requires_heightened_privileges, true
  block.call if block_given?
ensure
  @requires_heightened_privileges = previous
end