Module: ZendeskAPI::Server::Helper

Defined in:
lib/zendesk_api/server/helper.rb

Instance Method Summary (collapse)

Instance Method Details

- (Object) client(params = params)



98
99
100
101
102
103
104
105
106
# File 'lib/zendesk_api/server/helper.rb', line 98

def client(params = params)
  @client ||= ZendeskAPI::Client.new do |c|
    params.each do |key, value|
      c.send("#{key}=", value)
    end

    c.allow_http = App.development?
  end
end

- (Object) coerce_path(path)



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/zendesk_api/server/helper.rb', line 7

def coerce_path(path)
  if path =~ %r{(https?://)?(\w+)(\.zendesk\.com)?(/api/v2)?/(.*)}
    if $1 == "http://"
      @error = "Please enter a valid https URL"
      path
    elsif !$2 || $2.empty?
      @error = "Please enter a valid subdomain"
      path
    else
      params["url"] = "https://#{$2}.zendesk.com/api/v2"
      $5
    end
  else
    @error = "Please enter a valid URL"
    path
  end
end

- (Object) execute_request



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/zendesk_api/server/helper.rb', line 25

def execute_request
  unless @method && client.connection.respond_to?(@method)
    @error = "The input you entered was invalid"
    return
  end

  begin
    response = get_response
  rescue Faraday::Error::ConnectionFailed => e
    @error = "The connection failed"
  rescue Faraday::Error::ClientError => e
    set_response(e.response) if e.response
  rescue JSON::ParserError
    @error = "The JSON you attempted to send was invalid"
  rescue URI::InvalidURIError, ArgumentError
    @error = "Please enter a valid URL"
  else
    set_response(:body => response.body,
      :headers => response.env[:response_headers],
      :status => response.env[:status])
  end
end

- (Object) full_url



3
4
5
# File 'lib/zendesk_api/server/helper.rb', line 3

def full_url
  [params["url"], @path].compact.join("/")
end

- (Object) get_response



48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/zendesk_api/server/helper.rb', line 48

def get_response
  client.connection.send(@method, @path) do |request|
    request.params = @url_params.inject({}) do |accum, h|
      accum.merge(h["name"] => h["value"])
    end

    if @method != :get && @json && !@json.empty?
      request.body = JSON.parse(@json)
    end

    set_request(request.to_env(client.connection))
  end
end

- (Object) map_headers(headers)



62
63
64
65
66
67
# File 'lib/zendesk_api/server/helper.rb', line 62

def map_headers(headers)
  headers.map do |k,v|
    name = k.split("-").map(&:capitalize).join("-")
    "#{name}: #{v}"
  end.join("\n")
end

- (Object) set_request(request)



69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
# File 'lib/zendesk_api/server/helper.rb', line 69

def set_request(request)
  @html_request = <<-END
HTTP/1.1 #{@method.to_s.upcase} #{request[:url]}
#{map_headers(request[:request_headers])}
  END

  request_headers = request[:request_headers].dup
  request_headers.delete("Authorization")

  @user_request_hash = { :url => request[:url].to_s, :request_headers => request_headers }

  if @method != :get && @json && !@json.empty?
    parsed_json = CodeRay.scan(@json, :json).span
    @html_request << "\n\n#{parsed_json}"
  end
end

- (Object) set_response(response)



86
87
88
89
90
91
92
93
94
95
96
# File 'lib/zendesk_api/server/helper.rb', line 86

def set_response(response)
  @html_response =<<-END
HTTP/1.1 #{response[:status]}
#{map_headers(response[:headers])}


#{CodeRay.scan(JSON.pretty_generate(response[:body]), :json).span}
  END

  @user_response_hash = { :status => response[:status], :headers => response[:headers], :body => response[:body] }
end