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,13 @@
|
|
1
|
+
%footer.container.footer
|
2
|
+
%small
|
3
|
+
We will never store your username, password or API token.
|
4
|
+
.footer_links
|
5
|
+
%span.footer_item
|
6
|
+
%a{:href => "http://www.zendesk.com"} Zendesk
|
7
|
+
%span.footer_item
|
8
|
+
%a{:href => "http://www.zendesk.com/signup"} Signup
|
9
|
+
%span.footer_item
|
10
|
+
%a{:href => "http://www.zendesk.com/integrations"} Integrations
|
11
|
+
%span.copyright
|
12
|
+
©2012 Zendesk
|
13
|
+
|
@@ -0,0 +1,20 @@
|
|
1
|
+
.navbar.navbar-fixed-top
|
2
|
+
.navbar-inner
|
3
|
+
.container
|
4
|
+
%a{:href => url("/")}
|
5
|
+
%img.logo-lotus{:src => url("/images/zendesk_developers_header.png")}
|
6
|
+
|
7
|
+
%ul.nav.pull-right
|
8
|
+
%li
|
9
|
+
%a{:href => "http://developer.zendesk.com/documentation/rest_api/introduction.html"} REST API
|
10
|
+
%li
|
11
|
+
%a{:href => "http://developer.zendesk.com/documentation/apps"} Apps
|
12
|
+
%li
|
13
|
+
%a{:href => "http://developer.zendesk.com/blog/index.html"} Blog
|
14
|
+
%li
|
15
|
+
%a{:href => "https://support.zendesk.com/forums/20636018-zendesk-api"} Community
|
16
|
+
%li
|
17
|
+
%a{:href => "https://support.zendesk.com"} Support
|
18
|
+
|
19
|
+
%form.navbar-search.pull-left{:action => "http://developer.zendesk.com/search", :method => "get"}
|
20
|
+
%input.search-query.span2{:type => "text", :name => "q", :placeholder => "Search"}
|
@@ -0,0 +1,68 @@
|
|
1
|
+
%form.form{:method => :post, :action => url("/")}
|
2
|
+
.form-inline
|
3
|
+
%input.input-xlarge{:id => "username", :name => "username", :placeholder => "username", :type => "text", :value => params["username"]}
|
4
|
+
%input.input-xlarge{:id => "password", :name => "password", :placeholder => "password / token", :type => "password", :value => params["password"]}
|
5
|
+
|
6
|
+
%input#path{:name => "url", :type => "text", :value => full_url, :placeholder => "https://{subdomain}.zendesk.com/api/v2/{path}.json"}
|
7
|
+
|
8
|
+
#input
|
9
|
+
#params
|
10
|
+
- (@url_params || {}).each do |param|
|
11
|
+
= haml :param, :locals => { :param => param }
|
12
|
+
|
13
|
+
%button.btn#add-param{:type => "button"}
|
14
|
+
Add URL Parameter
|
15
|
+
|
16
|
+
#possible-params{:href => "#"}
|
17
|
+
%i.icon-plus
|
18
|
+
%i.icon-minus.hide
|
19
|
+
Valid URL Parameters
|
20
|
+
|
21
|
+
#possible-params-text.hide.alert.alert-info
|
22
|
+
per_page, page, includes, sort_order
|
23
|
+
%small.inline (these may not be honored for all requests)
|
24
|
+
|
25
|
+
%textarea#json.hide{:name => "json", :placeholder => '{ "": "" }'}= @json
|
26
|
+
|
27
|
+
%select#method-select{:name => "method"}
|
28
|
+
- %w{GET POST PUT DELETE}.each do |method|
|
29
|
+
%option{:value => method, :selected => @method == method.downcase.to_sym}= method
|
30
|
+
|
31
|
+
%button.btn.btn-primary{:type => :submit}
|
32
|
+
Submit
|
33
|
+
|
34
|
+
#response
|
35
|
+
- if @html_request && @html_response
|
36
|
+
%ul.nav.nav-pills
|
37
|
+
%li
|
38
|
+
%a.tab-link#request-tab-link{:href => "#request"}
|
39
|
+
Request
|
40
|
+
%li.active
|
41
|
+
%a.tab-link#response-tab-link{:href => "#response"}
|
42
|
+
Response
|
43
|
+
|
44
|
+
- if @error
|
45
|
+
.alert.alert-error
|
46
|
+
%button.close{:type => "button", "data-dismiss" => "alert"} x
|
47
|
+
%span= "Error: #{@error}"
|
48
|
+
|
49
|
+
- if @html_request
|
50
|
+
#request-tab.code.tab.hide
|
51
|
+
%pre= @html_request
|
52
|
+
|
53
|
+
- if @html_response
|
54
|
+
#response-tab.code.tab
|
55
|
+
%pre= @html_response
|
56
|
+
|
57
|
+
- if @user_request
|
58
|
+
- url = url("/#{@user_request._id}")
|
59
|
+
|
60
|
+
You can access this request again at
|
61
|
+
%a{:href => url}= url
|
62
|
+
%small.inline (your password isn't stored)
|
63
|
+
|
64
|
+
:javascript
|
65
|
+
$("#add-param").click(function(event) {
|
66
|
+
event.preventDefault();
|
67
|
+
$("#params").append(#{haml(:param, :locals => { :param => {} }).to_json});
|
68
|
+
});
|
@@ -0,0 +1,44 @@
|
|
1
|
+
!!! 5
|
2
|
+
%html
|
3
|
+
%head
|
4
|
+
// Bootstrap
|
5
|
+
%link{:rel => "stylesheet", :href => url("/stylesheets/styles.css"), :type => "text/css"}
|
6
|
+
|
7
|
+
// developers.zendesk.com Mods
|
8
|
+
// Stored locally because it's Non-SSL
|
9
|
+
// %link{:rel => "stylesheet", :href => "http://developer.zendesk.com/stylesheets/screen.css", :type => "text/css"}
|
10
|
+
%link{:rel => "stylesheet", :href => url("/stylesheets/developer.screen.css"), :type => "text/css"}
|
11
|
+
|
12
|
+
// Our mods
|
13
|
+
%link{:rel => "stylesheet", :href => url("/stylesheets/screen.css"), :type => "text/css"}
|
14
|
+
|
15
|
+
%link{:rel => "stylesheet", :href => "//ajax.googleapis.com/ajax/libs/jqueryui/1.9.0/themes/base/jquery-ui.css", :type => "text/css"}
|
16
|
+
|
17
|
+
%script{:src => "//ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"}
|
18
|
+
%script{:src => "//ajax.googleapis.com/ajax/libs/jqueryui/1.9.1/jquery-ui.min.js"}
|
19
|
+
|
20
|
+
%script{:src => url("/javascripts/bootstrap-alert.js")}
|
21
|
+
%script{:src => url("/javascripts/application.js")}
|
22
|
+
|
23
|
+
%title Zendesk API
|
24
|
+
%body
|
25
|
+
= haml :header
|
26
|
+
|
27
|
+
.container
|
28
|
+
.row-fluid
|
29
|
+
.span12.frame.well#navigation
|
30
|
+
%ul.nav.nav-pills
|
31
|
+
%li.active
|
32
|
+
%a.tab-link#throw-tab-link{:href => "#"}
|
33
|
+
Try the API
|
34
|
+
%li
|
35
|
+
%a.tab-link#help-tab-link{:href => "#documentation"}
|
36
|
+
Documentation
|
37
|
+
.row-fluid
|
38
|
+
.span12.frame.well.tab#throw-tab
|
39
|
+
= yield
|
40
|
+
.row-fluid
|
41
|
+
.span12.frame.well.hide.tab#help-tab
|
42
|
+
= haml :search
|
43
|
+
|
44
|
+
= haml :footer
|
@@ -0,0 +1,23 @@
|
|
1
|
+
#search
|
2
|
+
.input-append
|
3
|
+
%input.input-block-level{:type => "text", :placeholder => "try: users", :name => "query"}
|
4
|
+
%button.btn#clear-search
|
5
|
+
%i.icon-remove
|
6
|
+
|
7
|
+
.alert.alert-info
|
8
|
+
%button.close{:type => "button", "data-dismiss" => "alert"} x
|
9
|
+
Begin typing and you should be able to see a list of available resources to view
|
10
|
+
%br
|
11
|
+
To go to a specific action, add the header name to the end e.g. users#list-users
|
12
|
+
|
13
|
+
|
14
|
+
#search-results= settings.help
|
15
|
+
|
16
|
+
:javascript
|
17
|
+
$("#search input").autocomplete({
|
18
|
+
source: #{settings.autocomplete.to_json},
|
19
|
+
minLength: 3,
|
20
|
+
select: function(event, ui) {
|
21
|
+
search(ui.item.value);
|
22
|
+
}
|
23
|
+
});
|
data/lib/zendesk_api/version.rb
CHANGED
File without changes
|
@@ -15,13 +15,13 @@ require 'logger'
|
|
15
15
|
require 'stringio'
|
16
16
|
require 'json'
|
17
17
|
|
18
|
-
require 'resource_macros'
|
19
|
-
require 'fixtures
|
20
|
-
require 'fixtures
|
18
|
+
require File.join(File.dirname(__FILE__), '..', 'macros', 'resource_macros')
|
19
|
+
require File.join(File.dirname(__FILE__), '..', 'fixtures', 'zendesk')
|
20
|
+
require File.join(File.dirname(__FILE__), '..', 'fixtures', 'test_resources')
|
21
21
|
|
22
22
|
# tests fail when this is included in a Module (someone else also defines client)
|
23
23
|
def client
|
24
|
-
credentials = File.join(File.dirname(__FILE__),
|
24
|
+
credentials = File.join(File.dirname(__FILE__), '..', 'fixtures', 'credentials.yml')
|
25
25
|
@client ||= begin
|
26
26
|
client = ZendeskAPI::Client.new do |config|
|
27
27
|
if File.exist?(credentials)
|
@@ -111,7 +111,7 @@ RSpec.configure do |c|
|
|
111
111
|
end
|
112
112
|
|
113
113
|
VCR.configure do |c|
|
114
|
-
c.cassette_library_dir = File.join(File.dirname(__FILE__),
|
114
|
+
c.cassette_library_dir = File.join(File.dirname(__FILE__), '..', 'fixtures', 'cassettes')
|
115
115
|
c.default_cassette_options = { :record => :new_episodes, :decode_compressed_response => true, :serialize_with => :json, :preserve_exact_body_bytes => true }
|
116
116
|
c.hook_into :webmock
|
117
117
|
end
|
File without changes
|