zendesk_api 0.1.11 → 0.2.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +3 -0
- data/.travis.yml +1 -3
- data/Gemfile +24 -0
- data/Gemfile.lock +75 -10
- data/Procfile +1 -0
- data/Rakefile +10 -3
- data/Readme.md +65 -0
- data/bin/zendesk +26 -0
- data/config.ru +6 -0
- data/config/mongoid.yml +81 -0
- data/lib/zendesk_api/actions.rb +2 -2
- data/lib/zendesk_api/collection.rb +15 -4
- data/lib/zendesk_api/console/base.rb +12 -0
- data/lib/zendesk_api/console/console.rb +144 -0
- data/lib/zendesk_api/console/extensions.rb +183 -0
- data/lib/zendesk_api/console/options.rb +41 -0
- data/lib/zendesk_api/resource.rb +12 -1
- data/lib/zendesk_api/resources.rb +28 -8
- data/lib/zendesk_api/server/base.rb +119 -0
- data/lib/zendesk_api/server/docs/account_settings.md +145 -0
- data/lib/zendesk_api/server/docs/activity_stream.md +121 -0
- data/lib/zendesk_api/server/docs/attachments.md +73 -0
- data/lib/zendesk_api/server/docs/autocomplete.md +29 -0
- data/lib/zendesk_api/server/docs/categories.md +193 -0
- data/lib/zendesk_api/server/docs/custom_roles.md +88 -0
- data/lib/zendesk_api/server/docs/forum_subscriptions.md +139 -0
- data/lib/zendesk_api/server/docs/forums.md +229 -0
- data/lib/zendesk_api/server/docs/group_memberships.md +229 -0
- data/lib/zendesk_api/server/docs/groups.md +212 -0
- data/lib/zendesk_api/server/docs/introduction.md +159 -0
- data/lib/zendesk_api/server/docs/job_statuses.md +86 -0
- data/lib/zendesk_api/server/docs/locales.md +124 -0
- data/lib/zendesk_api/server/docs/macros.md +287 -0
- data/lib/zendesk_api/server/docs/organizations.md +253 -0
- data/lib/zendesk_api/server/docs/problems.md +117 -0
- data/lib/zendesk_api/server/docs/requests.md +256 -0
- data/lib/zendesk_api/server/docs/satisfaction_ratings.md +136 -0
- data/lib/zendesk_api/server/docs/search.md +106 -0
- data/lib/zendesk_api/server/docs/sharing_agreements.md +57 -0
- data/lib/zendesk_api/server/docs/side_loading.md +125 -0
- data/lib/zendesk_api/server/docs/suspended_tickets.md +182 -0
- data/lib/zendesk_api/server/docs/tags.md +36 -0
- data/lib/zendesk_api/server/docs/ticket_audits.md +657 -0
- data/lib/zendesk_api/server/docs/ticket_export.md +121 -0
- data/lib/zendesk_api/server/docs/ticket_fields.md +277 -0
- data/lib/zendesk_api/server/docs/ticket_import.md +65 -0
- data/lib/zendesk_api/server/docs/ticket_metrics.md +125 -0
- data/lib/zendesk_api/server/docs/tickets.md +622 -0
- data/lib/zendesk_api/server/docs/topic_comments.md +221 -0
- data/lib/zendesk_api/server/docs/topic_subscriptions.md +140 -0
- data/lib/zendesk_api/server/docs/topic_votes.md +154 -0
- data/lib/zendesk_api/server/docs/topics.md +335 -0
- data/lib/zendesk_api/server/docs/triggers.md +199 -0
- data/lib/zendesk_api/server/docs/user_identities.md +279 -0
- data/lib/zendesk_api/server/docs/users.md +400 -0
- data/lib/zendesk_api/server/docs/views.md +505 -0
- data/lib/zendesk_api/server/helper.rb +104 -0
- data/lib/zendesk_api/server/html_renderer.rb +98 -0
- data/lib/zendesk_api/server/models/user_request.rb +16 -0
- data/lib/zendesk_api/server/models/zlib_json.rb +13 -0
- data/lib/zendesk_api/server/public/config.rb +26 -0
- data/lib/zendesk_api/server/public/favicon.ico +0 -0
- data/lib/zendesk_api/server/public/images/glyphicons-halflings-white.png +0 -0
- data/lib/zendesk_api/server/public/images/glyphicons-halflings.png +0 -0
- data/lib/zendesk_api/server/public/images/spinner.gif +0 -0
- data/lib/zendesk_api/server/public/images/zendesk_developers_bg.png +0 -0
- data/lib/zendesk_api/server/public/images/zendesk_developers_header.png +0 -0
- data/lib/zendesk_api/server/public/javascripts/application.js +186 -0
- data/lib/zendesk_api/server/public/javascripts/bootstrap-alert.js +90 -0
- data/lib/zendesk_api/server/public/javascripts/bootstrap-button.js +96 -0
- data/lib/zendesk_api/server/public/javascripts/bootstrap-carousel.js +169 -0
- data/lib/zendesk_api/server/public/javascripts/bootstrap-collapse.js +157 -0
- data/lib/zendesk_api/server/public/javascripts/bootstrap-dropdown.js +100 -0
- data/lib/zendesk_api/server/public/javascripts/bootstrap-modal.js +218 -0
- data/lib/zendesk_api/server/public/javascripts/bootstrap-popover.js +98 -0
- data/lib/zendesk_api/server/public/javascripts/bootstrap-scrollspy.js +151 -0
- data/lib/zendesk_api/server/public/javascripts/bootstrap-tab.js +135 -0
- data/lib/zendesk_api/server/public/javascripts/bootstrap-tooltip.js +275 -0
- data/lib/zendesk_api/server/public/javascripts/bootstrap-transition.js +61 -0
- data/lib/zendesk_api/server/public/javascripts/bootstrap-typeahead.js +285 -0
- data/lib/zendesk_api/server/public/sass/screen.scss +102 -0
- data/lib/zendesk_api/server/public/sass/styles.scss +5 -0
- data/lib/zendesk_api/server/public/stylesheets/developer.screen.css +836 -0
- data/lib/zendesk_api/server/public/stylesheets/screen.css +129 -0
- data/lib/zendesk_api/server/public/stylesheets/styles.css +6208 -0
- data/lib/zendesk_api/server/templates/footer.haml +13 -0
- data/lib/zendesk_api/server/templates/header.haml +20 -0
- data/lib/zendesk_api/server/templates/index.haml +68 -0
- data/lib/zendesk_api/server/templates/layout.haml +44 -0
- data/lib/zendesk_api/server/templates/param.haml +4 -0
- data/lib/zendesk_api/server/templates/search.haml +23 -0
- data/lib/zendesk_api/server/templates/sidebar.haml +7 -0
- data/lib/zendesk_api/version.rb +1 -1
- data/spec/{association_spec.rb → core/association_spec.rb} +1 -1
- data/spec/{client_spec.rb → core/client_spec.rb} +1 -1
- data/spec/{collection_spec.rb → core/collection_spec.rb} +1 -1
- data/spec/{configuration_spec.rb → core/configuration_spec.rb} +1 -1
- data/spec/{create_resource_spec.rb → core/create_resource_spec.rb} +1 -1
- data/spec/{data_resource_spec.rb → core/data_resource_spec.rb} +1 -1
- data/spec/{inflection_spec.rb → core/inflection_spec.rb} +1 -1
- data/spec/{lru_cache_spec.rb → core/lru_cache_spec.rb} +1 -1
- data/spec/{middleware → core/middleware}/request/etag_cache_spec.rb +1 -1
- data/spec/{middleware → core/middleware}/request/retry_spec.rb +1 -1
- data/spec/{middleware → core/middleware}/request/test.jpg +0 -0
- data/spec/{middleware → core/middleware}/request/upload_spec.rb +1 -1
- data/spec/{middleware → core/middleware}/response/callback_spec.rb +1 -1
- data/spec/{middleware → core/middleware}/response/deflate_spec.rb +1 -1
- data/spec/{middleware → core/middleware}/response/gzip_spec.rb +1 -1
- data/spec/{middleware → core/middleware}/response/parse_iso_dates_spec.rb +1 -1
- data/spec/{read_resource_spec.rb → core/read_resource_spec.rb} +1 -1
- data/spec/{rescue_spec.rb → core/rescue_spec.rb} +1 -1
- data/spec/{resource_spec.rb → core/resource_spec.rb} +1 -1
- data/spec/{search_spec.rb → core/search_spec.rb} +1 -1
- data/spec/{spec_helper.rb → core/spec_helper.rb} +5 -5
- data/spec/{trackie_spec.rb → core/trackie_spec.rb} +1 -1
- data/{live → spec/live}/Readme.md +0 -0
- data/{live → spec/live}/activity_spec.rb +1 -1
- data/{live → spec/live}/audit_spec.rb +1 -1
- data/{live → spec/live}/bookmark_spec.rb +1 -1
- data/{live → spec/live}/category_spec.rb +1 -1
- data/{live → spec/live}/collection_spec.rb +1 -1
- data/{live → spec/live}/crm_spec.rb +1 -1
- data/{live → spec/live}/custom_role_spec.rb +1 -1
- data/{live → spec/live}/forum_spec.rb +1 -1
- data/{live → spec/live}/forum_subscription_spec.rb +1 -1
- data/{live → spec/live}/group_membership_spec.rb +1 -1
- data/{live → spec/live}/group_spec.rb +1 -1
- data/{live → spec/live}/identity_spec.rb +1 -1
- data/{live → spec/live}/locale_spec.rb +1 -1
- data/{live → spec/live}/macro_spec.rb +1 -1
- data/{live → spec/live}/mobile_device_spec.rb +1 -1
- data/{live → spec/live}/organization_spec.rb +1 -1
- data/{live → spec/live}/request_spec.rb +1 -1
- data/{live → spec/live}/satisfaction_rating_spec.rb +1 -1
- data/{live → spec/live}/setting_spec.rb +1 -1
- data/{live → spec/live}/suspended_ticket_spec.rb +1 -1
- data/{live → spec/live}/ticket_field_spec.rb +1 -1
- data/{live → spec/live}/ticket_metrics_spec.rb +1 -1
- data/{live → spec/live}/ticket_spec.rb +1 -1
- data/spec/live/topic_comment_spec.rb +24 -0
- data/{live → spec/live}/topic_spec.rb +1 -1
- data/{live → spec/live}/topic_subscription_spec.rb +1 -1
- data/{live → spec/live}/topic_vote_spec.rb +1 -1
- data/{live → spec/live}/upload_spec.rb +1 -1
- data/{live → spec/live}/user_spec.rb +1 -1
- data/{live → spec/live}/view_spec.rb +1 -1
- data/spec/macros/resource_macros.rb +1 -1
- data/spec/server/app_spec.rb +140 -0
- data/spec/server/helper_spec.rb +97 -0
- data/spec/server/html_renderer_spec.rb +130 -0
- data/spec/server/spec_helper.rb +43 -0
- metadata +198 -77
- data/live/topic_comment_spec.rb +0 -13
@@ -0,0 +1,104 @@
|
|
1
|
+
module ZendeskAPI::Server
|
2
|
+
module Helper
|
3
|
+
def full_url
|
4
|
+
[params["url"], @path].compact.join("/")
|
5
|
+
end
|
6
|
+
|
7
|
+
def coerce_path(path)
|
8
|
+
if path =~ %r{(https?://)?(\w+)(\.zendesk\.com)?(/api/v2)?/(.*)}
|
9
|
+
if $1 == "http://"
|
10
|
+
@error = "Please enter a valid https URL"
|
11
|
+
path
|
12
|
+
elsif !$2 || $2.empty?
|
13
|
+
@error = "Please enter a valid subdomain"
|
14
|
+
path
|
15
|
+
else
|
16
|
+
params["url"] = "https://#{$2}.zendesk.com/api/v2"
|
17
|
+
$5
|
18
|
+
end
|
19
|
+
else
|
20
|
+
@error = "Please enter a valid URL"
|
21
|
+
path
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def execute_request
|
26
|
+
unless @method && client.connection.respond_to?(@method)
|
27
|
+
@error = "The input you entered was invalid"
|
28
|
+
return
|
29
|
+
end
|
30
|
+
|
31
|
+
begin
|
32
|
+
response = client.connection.send(@method, @path) do |request|
|
33
|
+
request.params = @url_params.inject({}) do |accum, h|
|
34
|
+
accum.merge(h["name"] => h["value"])
|
35
|
+
end
|
36
|
+
|
37
|
+
if @method != :get && @json && !@json.empty?
|
38
|
+
request.body = JSON.parse(@json)
|
39
|
+
end
|
40
|
+
|
41
|
+
set_request(request.to_env(client.connection))
|
42
|
+
end
|
43
|
+
rescue Faraday::Error::ConnectionFailed => e
|
44
|
+
@error = "The connection failed"
|
45
|
+
rescue Faraday::Error::ClientError => e
|
46
|
+
set_response(e.response) if e.response
|
47
|
+
rescue JSON::ParserError
|
48
|
+
@error = "The JSON you attempted to send was invalid"
|
49
|
+
rescue URI::InvalidURIError, ArgumentError
|
50
|
+
@error = "Please enter a valid URL"
|
51
|
+
else
|
52
|
+
set_response(:body => response.body,
|
53
|
+
:headers => response.env[:response_headers],
|
54
|
+
:status => response.env[:status])
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
def map_headers(headers)
|
59
|
+
headers.map do |k,v|
|
60
|
+
name = k.split("-").map(&:capitalize).join("-")
|
61
|
+
"#{name}: #{v}"
|
62
|
+
end.join("\n")
|
63
|
+
end
|
64
|
+
|
65
|
+
def set_request(request)
|
66
|
+
@html_request = <<-END
|
67
|
+
HTTP/1.1 #{@method.to_s.upcase} #{request[:url]}
|
68
|
+
#{map_headers(request[:request_headers])}
|
69
|
+
END
|
70
|
+
|
71
|
+
request_headers = request[:request_headers].dup
|
72
|
+
request_headers.delete("Authorization")
|
73
|
+
|
74
|
+
@user_request_hash = { :url => request[:url].to_s, :request_headers => request_headers }
|
75
|
+
|
76
|
+
if @method != :get && @json && !@json.empty?
|
77
|
+
parsed_json = CodeRay.scan(@json, :json).span
|
78
|
+
@html_request << "\n\n#{parsed_json}"
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
def set_response(response)
|
83
|
+
@html_response =<<-END
|
84
|
+
HTTP/1.1 #{response[:status]}
|
85
|
+
#{map_headers(response[:headers])}
|
86
|
+
|
87
|
+
|
88
|
+
#{CodeRay.scan(JSON.pretty_generate(response[:body]), :json).span}
|
89
|
+
END
|
90
|
+
|
91
|
+
@user_response_hash = { :status => response[:status], :headers => response[:headers], :body => response[:body] }
|
92
|
+
end
|
93
|
+
|
94
|
+
def client(params = params)
|
95
|
+
@client ||= ZendeskAPI::Client.new do |c|
|
96
|
+
params.each do |key, value|
|
97
|
+
c.send("#{key}=", value)
|
98
|
+
end
|
99
|
+
|
100
|
+
c.allow_http = App.development?
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
@@ -0,0 +1,98 @@
|
|
1
|
+
# Modified from DoubleDoc
|
2
|
+
# https://github.com/staugaard/double_doc/blob/master/lib/double_doc/html_renderer.rb
|
3
|
+
module ZendeskAPI::Server
|
4
|
+
class HtmlRenderer
|
5
|
+
def self.markdown
|
6
|
+
@markdown ||= Redcarpet::Markdown.new(RedcarpetRenderer, :fenced_code_blocks => true, :no_intra_emphasis => true, :tables => true)
|
7
|
+
end
|
8
|
+
|
9
|
+
def self.render(text)
|
10
|
+
markdown.render(text)
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.generate_id(text)
|
14
|
+
text.strip.downcase.gsub(/[\s,]+/, '-')
|
15
|
+
end
|
16
|
+
|
17
|
+
class RedcarpetRenderer < Redcarpet::Render::HTML
|
18
|
+
attr_reader :headers
|
19
|
+
|
20
|
+
def icons
|
21
|
+
<<-END
|
22
|
+
<i class=\"header-icon icon-plus\"></i>
|
23
|
+
<i class=\"header-icon icon-minus hide\"></i>
|
24
|
+
END
|
25
|
+
end
|
26
|
+
|
27
|
+
def header(text, level)
|
28
|
+
top_level = [2, 3].include?(level)
|
29
|
+
id = HtmlRenderer.generate_id(text)
|
30
|
+
|
31
|
+
@headers ||= []
|
32
|
+
@headers << id if top_level
|
33
|
+
|
34
|
+
"<h#{level} id=\"#{id}\">
|
35
|
+
#{icons if top_level}
|
36
|
+
#{text}
|
37
|
+
</h#{level}>"
|
38
|
+
end
|
39
|
+
|
40
|
+
def block_code(code, language)
|
41
|
+
# CodeRay doesn't know HTTP
|
42
|
+
language = "json" if language == "http"
|
43
|
+
|
44
|
+
mod = {}
|
45
|
+
|
46
|
+
json = nil
|
47
|
+
|
48
|
+
if language
|
49
|
+
if code.start_with?("curl")
|
50
|
+
if code =~ %r[(https://{subdomain}.zendesk.com/api/v2/.*.json(\?(\w+={.+})+ )?)]
|
51
|
+
example = true
|
52
|
+
|
53
|
+
mod["class"] = "example"
|
54
|
+
mod["data-url"] = $1.strip
|
55
|
+
|
56
|
+
# This grabs the -d parameter
|
57
|
+
# ...
|
58
|
+
if code.include?(" -d ")
|
59
|
+
str_begin = code.index(/['"]/, code.index(" -d "))
|
60
|
+
|
61
|
+
chars = code[str_begin..-1].chars.to_a
|
62
|
+
str_end = nil
|
63
|
+
|
64
|
+
chars[1..-1].each_with_index do |char, i|
|
65
|
+
if char == chars[0] && chars[i - 1] != "\\"
|
66
|
+
str_end = i
|
67
|
+
break
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
mod["data-json"] = code.slice(str_begin + 1..(str_begin + str_end)) if str_end
|
72
|
+
end
|
73
|
+
|
74
|
+
if code =~ /-X (PUT|POST|GET|DELETE)/
|
75
|
+
mod["data-method"] = $1
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
code = CodeRay.scan(code, language).html(:wrap => nil)
|
81
|
+
end
|
82
|
+
|
83
|
+
mod = mod.inject([]) {|str,(k,v)| str.push("#{k}='#{v}'")}.join(" ")
|
84
|
+
|
85
|
+
if example
|
86
|
+
<<-END
|
87
|
+
<button class="btn example" title="Fill in the form with this example">
|
88
|
+
<i class="icon icon-pencil"></i>
|
89
|
+
</button>
|
90
|
+
<pre #{mod}>#{code}</pre>
|
91
|
+
END
|
92
|
+
else
|
93
|
+
"<pre>#{code}</pre>"
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'zendesk_api/server/models/zlib_json'
|
2
|
+
|
3
|
+
module ZendeskAPI::Server
|
4
|
+
class UserRequest
|
5
|
+
include Mongoid::Document
|
6
|
+
|
7
|
+
field :method, :type => Symbol
|
8
|
+
field :url, :type => String
|
9
|
+
field :path, :type => String
|
10
|
+
field :json, :type => String
|
11
|
+
field :url_params, :type => Array
|
12
|
+
|
13
|
+
field :request, :type => ZlibJSON
|
14
|
+
field :response, :type => ZlibJSON
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module ZendeskAPI::Server
|
2
|
+
class ZlibJSON < Hash
|
3
|
+
class << self
|
4
|
+
def demongoize(serialized_object)
|
5
|
+
JSON.parse(Zlib.inflate(serialized_object.to_s)).symbolize_keys
|
6
|
+
end
|
7
|
+
|
8
|
+
def mongoize(input_hash)
|
9
|
+
Moped::BSON::Binary.new(:generic, Zlib.deflate(input_hash.to_json))
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'bootstrap-sass'
|
2
|
+
# Require any additional compass plugins here.
|
3
|
+
|
4
|
+
|
5
|
+
# Set this to the root of your project when deployed:
|
6
|
+
http_path = "/"
|
7
|
+
css_dir = "stylesheets"
|
8
|
+
sass_dir = "sass"
|
9
|
+
images_dir = "images"
|
10
|
+
javascripts_dir = "javascripts"
|
11
|
+
|
12
|
+
# You can select your preferred output style here (can be overridden via the command line):
|
13
|
+
# output_style = :expanded or :nested or :compact or :compressed
|
14
|
+
|
15
|
+
# To enable relative paths to assets via compass helper functions. Uncomment:
|
16
|
+
# relative_assets = true
|
17
|
+
|
18
|
+
# To disable debugging comments that display the original location of your selectors. Uncomment:
|
19
|
+
# line_comments = false
|
20
|
+
|
21
|
+
|
22
|
+
# If you prefer the indented syntax, you might want to regenerate this
|
23
|
+
# project again passing --syntax sass, or you can uncomment this:
|
24
|
+
# preferred_syntax = :sass
|
25
|
+
# and then run:
|
26
|
+
# sass-convert -R --from scss --to sass sass scss && rm -rf sass && mv scss sass
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -0,0 +1,186 @@
|
|
1
|
+
function search(query) {
|
2
|
+
query = query.split("#");
|
3
|
+
|
4
|
+
$.post("/search", { query: query[0] }, function(data) {
|
5
|
+
$("#search-results").html(data);
|
6
|
+
|
7
|
+
$("#search-results h2, h3").nextUntil("h3").addClass("hide");
|
8
|
+
$("#search-results h2, h3").children("i.icon-minus").addClass("hide");
|
9
|
+
$("#search-results h2, h3").children("i.icon-plus").removeClass("hide");
|
10
|
+
|
11
|
+
if(query[1]) {
|
12
|
+
var header = $("#search-results #" + query[1]);
|
13
|
+
|
14
|
+
if(header.children("i.icon-minus").hasClass("hide"))
|
15
|
+
header.click();
|
16
|
+
|
17
|
+
// document.getElementById(query[1]).scrollIntoView(true);
|
18
|
+
}
|
19
|
+
}).error(function() {
|
20
|
+
// TODO
|
21
|
+
});
|
22
|
+
}
|
23
|
+
|
24
|
+
function toggle_json_editor() {
|
25
|
+
var method = $("#method-select option:selected").val();
|
26
|
+
$("#json").toggle(method == "POST" || method == "PUT");
|
27
|
+
}
|
28
|
+
|
29
|
+
$(document).ready(function() {
|
30
|
+
var dirty = false;
|
31
|
+
|
32
|
+
$('#search input').keyup(function() {
|
33
|
+
var value = $(this).val();
|
34
|
+
dirty = value != "";
|
35
|
+
|
36
|
+
setTimeout(function() {
|
37
|
+
if(dirty) {
|
38
|
+
dirty = false;
|
39
|
+
search($('#search input').val());
|
40
|
+
}
|
41
|
+
}, 750);
|
42
|
+
});
|
43
|
+
|
44
|
+
$('#clear-search').click(function() {
|
45
|
+
$('#search input').val("");
|
46
|
+
search("help");
|
47
|
+
});
|
48
|
+
|
49
|
+
$("#search-results h2, h3").nextUntil("h3").addClass("hide");
|
50
|
+
|
51
|
+
$("#search-results h2, h3").live("click", function() {
|
52
|
+
$(this).nextUntil("h3").toggleClass("hide");
|
53
|
+
$(this).children().toggleClass("hide");
|
54
|
+
|
55
|
+
query = $('#search input').val();
|
56
|
+
query = query.split("#");
|
57
|
+
$('#search input').val(query[0] + "#" + this.id);
|
58
|
+
});
|
59
|
+
|
60
|
+
$("#search-results a").live("click", function(event) {
|
61
|
+
event.preventDefault();
|
62
|
+
|
63
|
+
query = $(this).attr("href");
|
64
|
+
query = query.replace(/\.(html|md)/, "");
|
65
|
+
|
66
|
+
$('#search input').val(query);
|
67
|
+
|
68
|
+
search(query);
|
69
|
+
});
|
70
|
+
|
71
|
+
if(window.location.hash == "#response" || window.location.hash == "#request") {
|
72
|
+
$('#response .tab').addClass('hide');
|
73
|
+
$('#response ul.nav-pills li').removeClass('active');
|
74
|
+
|
75
|
+
var tab = window.location.hash + "-tab";
|
76
|
+
$(tab).removeClass("hide");
|
77
|
+
$(tab + "-link").parent('li').addClass('active');
|
78
|
+
} else if(window.location.hash == "#documentation") {
|
79
|
+
$('.frame.tab').addClass('hide');
|
80
|
+
$('#navigation ul.nav-pills li').removeClass('active');
|
81
|
+
|
82
|
+
$('#help-tab').removeClass('hide');
|
83
|
+
$('#help-tab-link').parent("li").addClass('active');
|
84
|
+
}
|
85
|
+
|
86
|
+
$('#response .tab-link').click(function() {
|
87
|
+
var elem = $(this);
|
88
|
+
|
89
|
+
$('#response .tab').addClass("hide");
|
90
|
+
$('#response ul.nav-pills li').removeClass('active');
|
91
|
+
|
92
|
+
$('#' + this.id.replace(/-link/, '')).removeClass("hide");
|
93
|
+
elem.parent('li').addClass('active');
|
94
|
+
|
95
|
+
event.preventDefault();
|
96
|
+
});
|
97
|
+
|
98
|
+
$('#possible-params').click(function(event) {
|
99
|
+
$(this).children('i').toggleClass('hide');
|
100
|
+
$('#possible-params-text').toggleClass('hide');
|
101
|
+
|
102
|
+
event.preventDefault();
|
103
|
+
});
|
104
|
+
|
105
|
+
$('#navigation .tab-link').click(function() {
|
106
|
+
var elem = $(this);
|
107
|
+
|
108
|
+
$('.frame.tab').addClass("hide");
|
109
|
+
$('#navigation ul.nav-pills li').removeClass('active');
|
110
|
+
|
111
|
+
$('#' + this.id.replace(/-link/, '')).removeClass("hide");
|
112
|
+
elem.parent('li').addClass('active');
|
113
|
+
});
|
114
|
+
|
115
|
+
$('#json').keydown(function() {
|
116
|
+
$('#input p.error').html('');
|
117
|
+
});
|
118
|
+
|
119
|
+
$('#json').keyup(function() {
|
120
|
+
var value = $('#json').val();
|
121
|
+
|
122
|
+
$('#json').removeClass('invalid');
|
123
|
+
|
124
|
+
if(value == '') {
|
125
|
+
$('#json').removeClass('invalid', 'valid');
|
126
|
+
return;
|
127
|
+
}
|
128
|
+
|
129
|
+
try {
|
130
|
+
JSON.parse(value);
|
131
|
+
$('#json').addClass('valid');
|
132
|
+
} catch(e) {
|
133
|
+
$('#json').addClass('invalid');
|
134
|
+
}
|
135
|
+
});
|
136
|
+
|
137
|
+
$('button.example').live("click", function() {
|
138
|
+
var element = $(this).next();
|
139
|
+
|
140
|
+
var url = element.data("url");
|
141
|
+
url = url.split("?");
|
142
|
+
|
143
|
+
$("#path").val(url[0]);
|
144
|
+
|
145
|
+
if(url[1]) {
|
146
|
+
var params = url[1].split("&");
|
147
|
+
var param, inputs;
|
148
|
+
|
149
|
+
for(var i = 0; i < params.length; i++) {
|
150
|
+
param = params[i].split("=");
|
151
|
+
$("#add-param").click();
|
152
|
+
inputs = $("#params div:last input");
|
153
|
+
|
154
|
+
if(inputs.length == 2) {
|
155
|
+
$(inputs[0]).val(param[0]);
|
156
|
+
$(inputs[1]).val(param[1]);
|
157
|
+
}
|
158
|
+
}
|
159
|
+
}
|
160
|
+
|
161
|
+
|
162
|
+
var method = element.data("method") || "GET";
|
163
|
+
|
164
|
+
$("#method-select").val(method);
|
165
|
+
$("#method-select").trigger("change");
|
166
|
+
|
167
|
+
var json = element.data("json");
|
168
|
+
|
169
|
+
if(json) {
|
170
|
+
$("#json").val(JSON.stringify(json));
|
171
|
+
} else {
|
172
|
+
$("#json").val("");
|
173
|
+
}
|
174
|
+
|
175
|
+
window.location.hash = "";
|
176
|
+
$("#throw-tab-link").click();
|
177
|
+
});
|
178
|
+
|
179
|
+
$("#method-select").change(toggle_json_editor);
|
180
|
+
toggle_json_editor();
|
181
|
+
|
182
|
+
$(".remove-param").live("click", function(event) {
|
183
|
+
event.preventDefault();
|
184
|
+
$(this).parent("div").remove();
|
185
|
+
});
|
186
|
+
});
|