Class: RESTfulLoaders::MqlExecutor

Inherits:
SimpleDelegator
  • Object
show all
Includes:
LoaderHelper
Defined in:
lib/mingle_macro_development_toolkit/loaders/restful_loaders/base.rb

Instance Method Summary collapse

Methods included from LoaderHelper

#extract, #get

Constructor Details

#initialize(resource, error_handler, delegator) ⇒ MqlExecutor

Returns a new instance of MqlExecutor.



37
38
39
40
41
42
# File 'lib/mingle_macro_development_toolkit/loaders/restful_loaders/base.rb', line 37

def initialize(resource, error_handler, delegator)
  super(delegator)
  @uri = URI.parse(resource)
  @error_handler = error_handler
  @version = /(\/api\/([^\/]*))\//.match(@uri.request_uri)[2]
end

Instance Method Details

#can_be_cached?(mql) ⇒ Boolean

Returns:

  • (Boolean)


51
52
53
54
55
56
# File 'lib/mingle_macro_development_toolkit/loaders/restful_loaders/base.rb', line 51

def can_be_cached?(mql)
  from_xml_data(get(url_for(:action => "can_be_cached", :query => "mql=#{mql}")))
rescue => e
  @error_handler.alert(e.message)
  []
end

#execute_mql(mql) ⇒ Object



44
45
46
47
48
49
# File 'lib/mingle_macro_development_toolkit/loaders/restful_loaders/base.rb', line 44

def execute_mql(mql)
  from_xml_data(get(url_for(:action => "execute_mql", :query => "mql=#{mql}")))
rescue => e
  @error_handler.alert(e.message)
  []
end

#format_date_with_project_date_format(date) ⇒ Object



65
66
67
68
69
70
# File 'lib/mingle_macro_development_toolkit/loaders/restful_loaders/base.rb', line 65

def format_date_with_project_date_format(date)
  from_xml_data(get(url_for(:action => "format_string_to_date_format", :query => "date=#{date}")))
rescue => e
  @error_handler.alert(e.message)
  []
end

#format_number_with_project_precision(number) ⇒ Object



58
59
60
61
62
63
# File 'lib/mingle_macro_development_toolkit/loaders/restful_loaders/base.rb', line 58

def format_number_with_project_precision(number)
  from_xml_data(get(url_for(:action => "format_number_to_project_precision", :query => "number=#{number}")))
rescue => e
  @error_handler.alert(e.message)
  []
end

#from_xml_data(data) ⇒ Object



77
78
79
80
81
82
83
# File 'lib/mingle_macro_development_toolkit/loaders/restful_loaders/base.rb', line 77

def from_xml_data(data)
  if data.is_a?(Hash) && data.keys.size == 1
    from_xml_data(data.values.first)
  else
    data
  end
end

#url_for(params) ⇒ Object



72
73
74
75
# File 'lib/mingle_macro_development_toolkit/loaders/restful_loaders/base.rb', line 72

def url_for(params)
  relative_path = URI.escape("/api/#{@version}/projects/#{identifier}/cards/#{params[:action]}.xml?#{params[:query]}")
  @uri.merge(relative_path).to_s
end