platform 3.1.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +21 -0
- data/.rspec +2 -0
- data/Gemfile +14 -0
- data/Gemfile.lock +191 -0
- data/MIT-LICENSE +20 -0
- data/README.rdoc +5 -0
- data/Rakefile +37 -0
- data/app/assets/images/platform/.gitkeep +0 -0
- data/app/assets/images/platform/accept.png +0 -0
- data/app/assets/images/platform/action_tab_bkgd.gif +0 -0
- data/app/assets/images/platform/action_tab_white_bkgd.gif +0 -0
- data/app/assets/images/platform/add.png +0 -0
- data/app/assets/images/platform/apps/app_icon.gif +0 -0
- data/app/assets/images/platform/apps/app_logo.gif +0 -0
- data/app/assets/images/platform/arrow_down.gif +0 -0
- data/app/assets/images/platform/arrow_down.png +0 -0
- data/app/assets/images/platform/arrow_down_grey.png +0 -0
- data/app/assets/images/platform/arrow_right.gif +0 -0
- data/app/assets/images/platform/arrow_up.png +0 -0
- data/app/assets/images/platform/arrow_up_grey.png +0 -0
- data/app/assets/images/platform/bullet_go.png +0 -0
- data/app/assets/images/platform/buttons.png +0 -0
- data/app/assets/images/platform/cancel.png +0 -0
- data/app/assets/images/platform/clipboard_icon.gif +0 -0
- data/app/assets/images/platform/close.gif +0 -0
- data/app/assets/images/platform/cross.png +0 -0
- data/app/assets/images/platform/default_app_icon.gif +0 -0
- data/app/assets/images/platform/default_app_logo.gif +0 -0
- data/app/assets/images/platform/delete.png +0 -0
- data/app/assets/images/platform/disk.png +0 -0
- data/app/assets/images/platform/exclamation.png +0 -0
- data/app/assets/images/platform/eye.png +0 -0
- data/app/assets/images/platform/eye_not.png +0 -0
- data/app/assets/images/platform/field_sprite.gif +0 -0
- data/app/assets/images/platform/find.png +0 -0
- data/app/assets/images/platform/globe.gif +0 -0
- data/app/assets/images/platform/help.png +0 -0
- data/app/assets/images/platform/help/app_reg.png +0 -0
- data/app/assets/images/platform/help/app_reg_ext.png +0 -0
- data/app/assets/images/platform/help/app_reg_web.png +0 -0
- data/app/assets/images/platform/help/auth_desktop.png +0 -0
- data/app/assets/images/platform/help/auth_iframe.png +0 -0
- data/app/assets/images/platform/help/auth_iphone.png +0 -0
- data/app/assets/images/platform/help/auth_web.png +0 -0
- data/app/assets/images/platform/help/authorize.png +0 -0
- data/app/assets/images/platform/help/ext.png +0 -0
- data/app/assets/images/platform/help/login.png +0 -0
- data/app/assets/images/platform/help/login_desktop.png +0 -0
- data/app/assets/images/platform/help/login_iphone.png +0 -0
- data/app/assets/images/platform/help/login_web.png +0 -0
- data/app/assets/images/platform/help2.png +0 -0
- data/app/assets/images/platform/information.png +0 -0
- data/app/assets/images/platform/keyboard.png +0 -0
- data/app/assets/images/platform/language_selector_arrow.gif +0 -0
- data/app/assets/images/platform/left_quote.png +0 -0
- data/app/assets/images/platform/lightning.png +0 -0
- data/app/assets/images/platform/loading.gif +0 -0
- data/app/assets/images/platform/loading2.gif +0 -0
- data/app/assets/images/platform/loading3.gif +0 -0
- data/app/assets/images/platform/loading_animation.gif +0 -0
- data/app/assets/images/platform/loading_large.gif +0 -0
- data/app/assets/images/platform/lock.png +0 -0
- data/app/assets/images/platform/lock_add.png +0 -0
- data/app/assets/images/platform/lock_delete.png +0 -0
- data/app/assets/images/platform/lock_open.png +0 -0
- data/app/assets/images/platform/medals/bronze.png +0 -0
- data/app/assets/images/platform/medals/gold.png +0 -0
- data/app/assets/images/platform/medals/runner.png +0 -0
- data/app/assets/images/platform/medals/silver.png +0 -0
- data/app/assets/images/platform/minus_node.png +0 -0
- data/app/assets/images/platform/oauth/perm_tile.gif +0 -0
- data/app/assets/images/platform/oauth/right_grey.png +0 -0
- data/app/assets/images/platform/pencil.png +0 -0
- data/app/assets/images/platform/photo_silhouette.gif +0 -0
- data/app/assets/images/platform/pixel.gif +0 -0
- data/app/assets/images/platform/platform.png +0 -0
- data/app/assets/images/platform/platform2.png +0 -0
- data/app/assets/images/platform/platform3.png +0 -0
- data/app/assets/images/platform/platform4.png +0 -0
- data/app/assets/images/platform/platform5.png +0 -0
- data/app/assets/images/platform/plus.png +0 -0
- data/app/assets/images/platform/plus_node.png +0 -0
- data/app/assets/images/platform/random.png +0 -0
- data/app/assets/images/platform/random2.png +0 -0
- data/app/assets/images/platform/rating_star0.png +0 -0
- data/app/assets/images/platform/rating_star05.png +0 -0
- data/app/assets/images/platform/rating_star1.png +0 -0
- data/app/assets/images/platform/rating_stars.gif +0 -0
- data/app/assets/images/platform/rating_stars.psd +0 -0
- data/app/assets/images/platform/reply.png +0 -0
- data/app/assets/images/platform/right_quote.png +0 -0
- data/app/assets/images/platform/rotating_world.gif +0 -0
- data/app/assets/images/platform/script.png +0 -0
- data/app/assets/images/platform/script_edit.png +0 -0
- data/app/assets/images/platform/script_gear.png +0 -0
- data/app/assets/images/platform/site_sprite.gif +0 -0
- data/app/assets/images/platform/spinner.gif +0 -0
- data/app/assets/images/platform/star.png +0 -0
- data/app/assets/images/platform/table_edit.png +0 -0
- data/app/assets/images/platform/table_gear.png +0 -0
- data/app/assets/images/platform/table_multiple.png +0 -0
- data/app/assets/images/platform/thumb_down.png +0 -0
- data/app/assets/images/platform/thumb_up.png +0 -0
- data/app/assets/images/platform/top_left_stem.png +0 -0
- data/app/assets/images/platform/top_right_stem.png +0 -0
- data/app/assets/images/platform/translate_icn.gif +0 -0
- data/app/assets/images/platform/treeview/diffDoc.gif +0 -0
- data/app/assets/images/platform/treeview/diffFolder.gif +0 -0
- data/app/assets/images/platform/treeview/ftv2blank.gif +0 -0
- data/app/assets/images/platform/treeview/ftv2doc.gif +0 -0
- data/app/assets/images/platform/treeview/ftv2folderclosed.gif +0 -0
- data/app/assets/images/platform/treeview/ftv2folderopen.gif +0 -0
- data/app/assets/images/platform/treeview/ftv2lastnode.gif +0 -0
- data/app/assets/images/platform/treeview/ftv2link.gif +0 -0
- data/app/assets/images/platform/treeview/ftv2mlastnode.gif +0 -0
- data/app/assets/images/platform/treeview/ftv2mnode.gif +0 -0
- data/app/assets/images/platform/treeview/ftv2node.gif +0 -0
- data/app/assets/images/platform/treeview/ftv2plastnode.gif +0 -0
- data/app/assets/images/platform/treeview/ftv2pnode.gif +0 -0
- data/app/assets/images/platform/treeview/ftv2vertline.gif +0 -0
- data/app/assets/images/platform/wizard.png +0 -0
- data/app/assets/images/platform/world_link.png +0 -0
- data/app/assets/javascripts/platform/api_explorer.js +628 -0
- data/app/assets/javascripts/platform/application.js +9 -0
- data/app/assets/javascripts/platform/ftiens4.js +1197 -0
- data/app/assets/javascripts/platform/jsdk.js +539 -0
- data/app/assets/javascripts/platform/platform.js +447 -0
- data/app/assets/javascripts/platform/shortcut.js +223 -0
- data/app/assets/javascripts/platform/ua.js +147 -0
- data/app/assets/stylesheets/platform/api_explorer.css.scss +140 -0
- data/app/assets/stylesheets/platform/application.css.scss +6 -0
- data/app/assets/stylesheets/platform/components.css.scss +208 -0
- data/app/assets/stylesheets/platform/layout.css.scss +119 -0
- data/app/assets/stylesheets/platform/oauth.css +51 -0
- data/app/assets/stylesheets/platform/platform.css.scss +311 -0
- data/app/controllers/platform/admin/apps_controller.rb +99 -0
- data/app/controllers/platform/admin/base_controller.rb +60 -0
- data/app/controllers/platform/admin/categories_controller.rb +132 -0
- data/app/controllers/platform/admin/clientsdk_controller.rb +30 -0
- data/app/controllers/platform/admin/developers_controller.rb +30 -0
- data/app/controllers/platform/admin/exceptions_controller.rb +30 -0
- data/app/controllers/platform/admin/forum_controller.rb +34 -0
- data/app/controllers/platform/admin/metrics_controller.rb +42 -0
- data/app/controllers/platform/api/apps_controller.rb +40 -0
- data/app/controllers/platform/api/base_controller.rb +541 -0
- data/app/controllers/platform/apps_controller.rb +142 -0
- data/app/controllers/platform/base_controller.rb +127 -0
- data/app/controllers/platform/developer/api_explorer_controller.rb +56 -0
- data/app/controllers/platform/developer/apps_controller.rb +161 -0
- data/app/controllers/platform/developer/base_controller.rb +51 -0
- data/app/controllers/platform/developer/blog_controller.rb +29 -0
- data/app/controllers/platform/developer/dashboard_controller.rb +63 -0
- data/app/controllers/platform/developer/forum_controller.rb +85 -0
- data/app/controllers/platform/developer/help_controller.rb +113 -0
- data/app/controllers/platform/developer/info_controller.rb +41 -0
- data/app/controllers/platform/developer/registration_controller.rb +39 -0
- data/app/controllers/platform/developer/resources_controller.rb +30 -0
- data/app/controllers/platform/forum_controller.rb +74 -0
- data/app/controllers/platform/oauth_controller.rb +421 -0
- data/app/controllers/platform/ratings_controller.rb +61 -0
- data/app/helpers/platform/admin/categories_helper.rb +54 -0
- data/app/helpers/platform/apps_helper.rb +26 -0
- data/app/helpers/platform/developer/dashboard_helper.rb +42 -0
- data/app/helpers/platform/developer/help_helper.rb +45 -0
- data/app/helpers/platform_helper.rb +26 -0
- data/app/models/platform/application.rb +394 -0
- data/app/models/platform/application_category.rb +34 -0
- data/app/models/platform/application_developer.rb +30 -0
- data/app/models/platform/application_filter.rb +30 -0
- data/app/models/platform/application_log.rb +32 -0
- data/app/models/platform/application_log_filter.rb +34 -0
- data/app/models/platform/application_metric.rb +58 -0
- data/app/models/platform/application_metric_filter.rb +34 -0
- data/app/models/platform/application_permission.rb +30 -0
- data/app/models/platform/application_permission_filter.rb +30 -0
- data/app/models/platform/application_usage_metric.rb +58 -0
- data/app/models/platform/application_usage_metric_filter.rb +34 -0
- data/app/models/platform/application_user.rb +45 -0
- data/app/models/platform/application_user_filter.rb +34 -0
- data/app/models/platform/base_filter.rb +46 -0
- data/app/models/platform/category.rb +64 -0
- data/app/models/platform/daily_application_metric.rb +31 -0
- data/app/models/platform/developer.rb +45 -0
- data/app/models/platform/developer_filter.rb +26 -0
- data/app/models/platform/forum_message.rb +35 -0
- data/app/models/platform/forum_message_filter.rb +26 -0
- data/app/models/platform/forum_topic.rb +38 -0
- data/app/models/platform/forum_topic_filter.rb +26 -0
- data/app/models/platform/logged_exception.rb +290 -0
- data/app/models/platform/logged_exception_filter.rb +58 -0
- data/app/models/platform/media/image.rb +26 -0
- data/app/models/platform/media/media.rb +58 -0
- data/app/models/platform/monthly_application_metric.rb +31 -0
- data/app/models/platform/oauth/access_token.rb +57 -0
- data/app/models/platform/oauth/client_token.rb +38 -0
- data/app/models/platform/oauth/oauth_model_methods.rb +41 -0
- data/app/models/platform/oauth/oauth_token.rb +57 -0
- data/app/models/platform/oauth/oauth_token_filter.rb +34 -0
- data/app/models/platform/oauth/refresh_token.rb +47 -0
- data/app/models/platform/oauth/request_token.rb +50 -0
- data/app/models/platform/permission.rb +27 -0
- data/app/models/platform/rating.rb +43 -0
- data/app/models/platform/rating_filter.rb +30 -0
- data/app/models/platform/rollup_log.rb +27 -0
- data/app/models/platform/rollup_log_filter.rb +30 -0
- data/app/models/platform/total_application_metric.rb +40 -0
- data/app/models/platform/weekly_application_metric.rb +31 -0
- data/app/views/platform/admin/apps/_categories.html.erb +17 -0
- data/app/views/platform/admin/apps/_categories_scripts.html.erb +17 -0
- data/app/views/platform/admin/apps/_tabs.html.erb +25 -0
- data/app/views/platform/admin/apps/index.html.erb +32 -0
- data/app/views/platform/admin/apps/permissions.html.erb +7 -0
- data/app/views/platform/admin/apps/ratings.html.erb +7 -0
- data/app/views/platform/admin/apps/tokens.html.erb +18 -0
- data/app/views/platform/admin/apps/users.html.erb +7 -0
- data/app/views/platform/admin/apps/view.html.erb +170 -0
- data/app/views/platform/admin/categories/_tabs.html.erb +22 -0
- data/app/views/platform/admin/categories/category_assigner.html.erb +9 -0
- data/app/views/platform/admin/categories/category_assigner_tree.html.erb +81 -0
- data/app/views/platform/admin/categories/index.html.erb +106 -0
- data/app/views/platform/admin/categories/items.html.erb +153 -0
- data/app/views/platform/admin/categories/lb_update_application_category.html.erb +54 -0
- data/app/views/platform/admin/categories/lb_update_category.html.erb +64 -0
- data/app/views/platform/admin/categories/tree.html.erb +64 -0
- data/app/views/platform/admin/clientsdk/index.html.erb +89 -0
- data/app/views/platform/admin/common/_footer.html.erb +1 -0
- data/app/views/platform/admin/common/_header.html.erb +32 -0
- data/app/views/platform/admin/common/_lightbox_buttons.html.erb +5 -0
- data/app/views/platform/admin/common/_paginator.html.erb +20 -0
- data/app/views/platform/admin/developers/_tabs.html.erb +22 -0
- data/app/views/platform/admin/developers/index.html.erb +7 -0
- data/app/views/platform/admin/exceptions/_tabs.html.erb +22 -0
- data/app/views/platform/admin/exceptions/index.html.erb +7 -0
- data/app/views/platform/admin/forum/_tabs.html.erb +22 -0
- data/app/views/platform/admin/forum/index.html.erb +7 -0
- data/app/views/platform/admin/forum/messages.html.erb +7 -0
- data/app/views/platform/admin/metrics/_tabs.html.erb +25 -0
- data/app/views/platform/admin/metrics/application_log.html.erb +7 -0
- data/app/views/platform/admin/metrics/index.html.erb +9 -0
- data/app/views/platform/admin/metrics/rollup_log.html.erb +7 -0
- data/app/views/platform/admin/metrics/usage.html.erb +7 -0
- data/app/views/platform/apps/_actions_module.html.erb +3 -0
- data/app/views/platform/apps/_app_footer.html.erb +8 -0
- data/app/views/platform/apps/_app_header.html.erb +25 -0
- data/app/views/platform/apps/_apps_module.html.erb +42 -0
- data/app/views/platform/apps/_authorize_form.html.erb +11 -0
- data/app/views/platform/apps/_categories_module.html.erb +11 -0
- data/app/views/platform/apps/_featured_apps_module.html.erb +40 -0
- data/app/views/platform/apps/_left.html.erb +20 -0
- data/app/views/platform/apps/_monthly_users_module.html.erb +8 -0
- data/app/views/platform/apps/_paginator.html.erb +13 -0
- data/app/views/platform/apps/_rank_module.html.erb +18 -0
- data/app/views/platform/apps/_search_apps_module.html.erb +35 -0
- data/app/views/platform/apps/canvas_app.html.erb +15 -0
- data/app/views/platform/apps/index.html.erb +86 -0
- data/app/views/platform/apps/view.html.erb +71 -0
- data/app/views/platform/apps/xd.html.erb +11 -0
- data/app/views/platform/common/_footer.html.erb +1 -0
- data/app/views/platform/common/_header.html.erb +4 -0
- data/app/views/platform/common/_paginator.html.erb +32 -0
- data/app/views/platform/common/_scripts.html.erb +7 -0
- data/app/views/platform/common/_user_login.html.erb +11 -0
- data/app/views/platform/developer/api_explorer/history.html.erb +31 -0
- data/app/views/platform/developer/api_explorer/index.html.erb +134 -0
- data/app/views/platform/developer/api_explorer/oauth_lander.html.erb +4 -0
- data/app/views/platform/developer/api_explorer/options.html.erb +44 -0
- data/app/views/platform/developer/apps/_form.html.erb +340 -0
- data/app/views/platform/developer/apps/create_version.html.erb +19 -0
- data/app/views/platform/developer/apps/edit.html.erb +21 -0
- data/app/views/platform/developer/apps/index.html.erb +375 -0
- data/app/views/platform/developer/apps/new.html.erb +20 -0
- data/app/views/platform/developer/blog/index.html.erb +7 -0
- data/app/views/platform/developer/common/_footer.html.erb +1 -0
- data/app/views/platform/developer/common/_header.html.erb +34 -0
- data/app/views/platform/developer/dashboard/_apps_info.html.erb +84 -0
- data/app/views/platform/developer/dashboard/_discussions.html.erb +68 -0
- data/app/views/platform/developer/dashboard/_header.html.erb +12 -0
- data/app/views/platform/developer/dashboard/_reviews.html.erb +53 -0
- data/app/views/platform/developer/dashboard/_statistics.html.erb +105 -0
- data/app/views/platform/developer/dashboard/index.html.erb +85 -0
- data/app/views/platform/developer/dashboard/settings.html.erb +23 -0
- data/app/views/platform/developer/forum/_message.html.erb +17 -0
- data/app/views/platform/developer/forum/_messages.html.erb +14 -0
- data/app/views/platform/developer/forum/_new_message.html.erb +28 -0
- data/app/views/platform/developer/forum/_new_topic.html.erb +39 -0
- data/app/views/platform/developer/forum/index.html.erb +89 -0
- data/app/views/platform/developer/forum/topic.html.erb +28 -0
- data/app/views/platform/developer/help/_footer.html.erb +4 -0
- data/app/views/platform/developer/help/_header.html.erb +95 -0
- data/app/views/platform/developer/help/_navigation.html.erb +99 -0
- data/app/views/platform/developer/help/api.html.erb +120 -0
- data/app/views/platform/developer/help/credits.html.erb +77 -0
- data/app/views/platform/developer/help/index.html.erb +19 -0
- data/app/views/platform/developer/help/license.html.erb +586 -0
- data/app/views/platform/developer/help/oauth_app_login.html.erb +177 -0
- data/app/views/platform/developer/help/oauth_client_side.html.erb +264 -0
- data/app/views/platform/developer/help/oauth_desktop.html.erb +191 -0
- data/app/views/platform/developer/help/oauth_extensions.html.erb +342 -0
- data/app/views/platform/developer/help/oauth_intro.html.erb +371 -0
- data/app/views/platform/developer/help/oauth_mobile.html.erb +292 -0
- data/app/views/platform/developer/help/oauth_server_side.html.erb +603 -0
- data/app/views/platform/developer/help/oauth_trusted_client.html.erb +202 -0
- data/app/views/platform/developer/help/reference.html.erb +42 -0
- data/app/views/platform/developer/help/sdk_ios.html.erb +31 -0
- data/app/views/platform/developer/help/sdk_js.html.erb +202 -0
- data/app/views/platform/developer/info/_basic_info.html.erb +74 -0
- data/app/views/platform/developer/info/_header.html.erb +12 -0
- data/app/views/platform/developer/info/index.html.erb +23 -0
- data/app/views/platform/developer/registration/index.html.erb +134 -0
- data/app/views/platform/developer/resources/index.html.erb +23 -0
- data/app/views/platform/forum/_message.html.erb +17 -0
- data/app/views/platform/forum/_messages.html.erb +14 -0
- data/app/views/platform/forum/_new_message.html.erb +26 -0
- data/app/views/platform/forum/_new_topic.html.erb +38 -0
- data/app/views/platform/forum/_topic.html.erb +18 -0
- data/app/views/platform/forum/_topics.html.erb +74 -0
- data/app/views/platform/login/index.html.erb +31 -0
- data/app/views/platform/login/register.html.erb +55 -0
- data/app/views/platform/oauth/_authorization_box.html.erb +75 -0
- data/app/views/platform/oauth/_authorization_popup.html.erb +38 -0
- data/app/views/platform/oauth/_authorize_form.html.erb +11 -0
- data/app/views/platform/oauth/auth_failed.html.erb +0 -0
- data/app/views/platform/oauth/auth_success.html.erb +0 -0
- data/app/views/platform/oauth/authorize_desktop.html.erb +76 -0
- data/app/views/platform/oauth/authorize_failure_iframe.html.erb +1 -0
- data/app/views/platform/oauth/authorize_failure_mobile.html.erb +24 -0
- data/app/views/platform/oauth/authorize_failure_popup.html.erb +24 -0
- data/app/views/platform/oauth/authorize_failure_web.html.erb +1 -0
- data/app/views/platform/oauth/authorize_iframe.html.erb +16 -0
- data/app/views/platform/oauth/authorize_mobile.html.erb +1 -0
- data/app/views/platform/oauth/authorize_popup.html.erb +1 -0
- data/app/views/platform/oauth/authorize_success_iframe.html.erb +1 -0
- data/app/views/platform/oauth/authorize_success_mobile.html.erb +24 -0
- data/app/views/platform/oauth/authorize_success_popup.html.erb +24 -0
- data/app/views/platform/oauth/authorize_success_web.html.erb +1 -0
- data/app/views/platform/oauth/authorize_web.html.erb +3 -0
- data/app/views/platform/oauth/xd.html.erb +13 -0
- data/app/views/platform/ratings/_list.html.erb +30 -0
- data/app/views/platform/ratings/_new.html.erb +70 -0
- data/app/views/platform/ratings/_rating.html.erb +17 -0
- data/config/platform/config.yml +133 -0
- data/config/platform/data/default_applications.yml +39 -0
- data/config/platform/data/default_categories.yml +56 -0
- data/config/platform/data/default_permissions.yml +0 -0
- data/config/platform/site/features.yml +66 -0
- data/config/routes.rb +59 -0
- data/db/migrate/20110602232141_create_platform_tables.rb +262 -0
- data/docs/Classes.graffle +7315 -0
- data/docs/Classes.pdf +0 -0
- data/lib/generators/platform/platform_generator.rb +56 -0
- data/lib/generators/platform/templates/db/create_platform_tables.rb +262 -0
- data/lib/generators/platform/templates/layouts/platform.html.erb +49 -0
- data/lib/generators/platform/templates/layouts/platform_admin.html.erb +60 -0
- data/lib/platform.rb +6 -0
- data/lib/platform/api/already_jsoned_string.rb +9 -0
- data/lib/platform/api/proxy.rb +45 -0
- data/lib/platform/api/proxy/base.rb +62 -0
- data/lib/platform/cache.rb +78 -0
- data/lib/platform/config.rb +666 -0
- data/lib/platform/engine.rb +5 -0
- data/lib/platform/exception.rb +27 -0
- data/lib/platform/extensions/action_controller_extension.rb +65 -0
- data/lib/platform/extensions/action_view_extension.rb +168 -0
- data/lib/platform/extensions/object_extension.rb +51 -0
- data/lib/platform/helper.rb +33 -0
- data/lib/platform/logger.rb +62 -0
- data/lib/platform/railtie.rb +52 -0
- data/lib/platform/random_password_generator.rb +76 -0
- data/lib/platform/simple_string_permissions.rb +40 -0
- data/lib/platform/version.rb +3 -0
- data/lib/tasks/platform.rake +119 -0
- data/platform.gemspec +45 -0
- data/script/rails +6 -0
- data/spec/config/config_spec.rb +10 -0
- data/spec/dummy_app.rb +52 -0
- data/spec/models/application_spec.rb +53 -0
- data/spec/models/developer_spec.rb +23 -0
- data/spec/spec_helper.rb +29 -0
- data/test/dummy/Rakefile +7 -0
- data/test/dummy/app/assets/javascripts/application.js +7 -0
- data/test/dummy/app/assets/stylesheets/admin.css +200 -0
- data/test/dummy/app/assets/stylesheets/application.css +47 -0
- data/test/dummy/app/assets/stylesheets/components.css.scss +211 -0
- data/test/dummy/app/assets/stylesheets/layout.css.scss +143 -0
- data/test/dummy/app/controllers/admin/admins_controller.rb +7 -0
- data/test/dummy/app/controllers/admin/base_controller.rb +12 -0
- data/test/dummy/app/controllers/admin/bookmarks_controller.rb +7 -0
- data/test/dummy/app/controllers/admin/users_controller.rb +19 -0
- data/test/dummy/app/controllers/api/base_controller.rb +5 -0
- data/test/dummy/app/controllers/api/bookmarks_controller.rb +35 -0
- data/test/dummy/app/controllers/api/users_controller.rb +19 -0
- data/test/dummy/app/controllers/application_controller.rb +31 -0
- data/test/dummy/app/controllers/home_controller.rb +7 -0
- data/test/dummy/app/controllers/login_controller.rb +65 -0
- data/test/dummy/app/helpers/application_helper.rb +9 -0
- data/test/dummy/app/helpers/home_helper.rb +2 -0
- data/test/dummy/app/mailers/.gitkeep +0 -0
- data/test/dummy/app/models/.gitkeep +0 -0
- data/test/dummy/app/models/admin.rb +4 -0
- data/test/dummy/app/models/admin_filter.rb +7 -0
- data/test/dummy/app/models/bookmark.rb +7 -0
- data/test/dummy/app/models/user.rb +34 -0
- data/test/dummy/app/views/admin/admins/index.html.erb +7 -0
- data/test/dummy/app/views/admin/bookmarks/index.html.erb +5 -0
- data/test/dummy/app/views/admin/users/index.html.erb +10 -0
- data/test/dummy/app/views/demo/index.rhtml +108 -0
- data/test/dummy/app/views/demo/tokens.rhtml +35 -0
- data/test/dummy/app/views/home/index.html.erb +43 -0
- data/test/dummy/app/views/layouts/_footer.html.erb +16 -0
- data/test/dummy/app/views/layouts/_header.html.erb +22 -0
- data/test/dummy/app/views/layouts/admin.html.erb +97 -0
- data/test/dummy/app/views/layouts/application.html.erb +25 -0
- data/test/dummy/app/views/layouts/minimal.html.erb +37 -0
- data/test/dummy/app/views/layouts/popup.html.erb +43 -0
- data/test/dummy/app/views/login/index.html.erb +34 -0
- data/test/dummy/app/views/login/register.html.erb +51 -0
- data/test/dummy/config.ru +4 -0
- data/test/dummy/config/application.rb +51 -0
- data/test/dummy/config/boot.rb +10 -0
- data/test/dummy/config/database.yml +25 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +30 -0
- data/test/dummy/config/environments/production.rb +60 -0
- data/test/dummy/config/environments/test.rb +42 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/inflections.rb +10 -0
- data/test/dummy/config/initializers/mime_types.rb +5 -0
- data/test/dummy/config/initializers/secret_token.rb +7 -0
- data/test/dummy/config/initializers/session_store.rb +8 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/test/dummy/config/locales/en.yml +5 -0
- data/test/dummy/config/platform/api/0/bookmark.yml +18 -0
- data/test/dummy/config/platform/api/0/user.yml +17 -0
- data/test/dummy/config/platform/api/1/bookmark.yml +58 -0
- data/test/dummy/config/platform/api/1/user.yml +36 -0
- data/test/dummy/config/platform/config.yml +135 -0
- data/test/dummy/config/platform/data/default_applications.yml +39 -0
- data/test/dummy/config/platform/data/default_categories.yml +56 -0
- data/test/dummy/config/platform/data/default_permissions.yml +0 -0
- data/test/dummy/config/platform/site/features.yml +66 -0
- data/test/dummy/config/platform/site/sample_apps.yml +100 -0
- data/test/dummy/config/routes.rb +30 -0
- data/test/dummy/config/tr8n/config.yml +247 -0
- data/test/dummy/config/tr8n/data/ip_locations.csv +93460 -0
- data/test/dummy/config/tr8n/rules/default_date_rules.yml +20 -0
- data/test/dummy/config/tr8n/rules/default_gender_list_rules.yml +82 -0
- data/test/dummy/config/tr8n/rules/default_gender_rules.yml +20 -0
- data/test/dummy/config/tr8n/rules/default_language_cases.yml +272 -0
- data/test/dummy/config/tr8n/rules/default_list_rules.yml +19 -0
- data/test/dummy/config/tr8n/rules/default_numeric_rules.yml +42 -0
- data/test/dummy/config/tr8n/rules/default_value_rules.yml +18 -0
- data/test/dummy/config/tr8n/site/default_glossary.yml +18 -0
- data/test/dummy/config/tr8n/site/default_languages.yml +1591 -0
- data/test/dummy/config/tr8n/site/features.yml +111 -0
- data/test/dummy/config/tr8n/site/shortcuts.yml +55 -0
- data/test/dummy/config/tr8n/site/sitemap.json +42 -0
- data/test/dummy/config/tr8n/tokens/data.yml +19 -0
- data/test/dummy/config/tr8n/tokens/decorations.yml +19 -0
- data/test/dummy/config/will_filter/config.yml +99 -0
- data/test/dummy/db/migrate/20101207014543_create_users.rb +23 -0
- data/test/dummy/db/migrate/20110113223509_create_admins.rb +15 -0
- data/test/dummy/db/migrate/20110930041143_create_will_filter_filters.rb +15 -0
- data/test/dummy/db/migrate/20110930041150_create_tr8n_tables.rb +350 -0
- data/test/dummy/db/migrate/20111004075531_create_platform_tables.rb +262 -0
- data/test/dummy/db/migrate/20111012055603_create_bookmarks.rb +10 -0
- data/test/dummy/db/schema.rb +683 -0
- data/test/dummy/lib/assets/.gitkeep +0 -0
- data/test/dummy/lib/platform/api/bookmark_proxy_0.rb +12 -0
- data/test/dummy/lib/platform/api/bookmark_proxy_1.rb +12 -0
- data/test/dummy/lib/platform/api/user_proxy_0.rb +12 -0
- data/test/dummy/lib/platform/api/user_proxy_1.rb +12 -0
- data/test/dummy/log/.gitkeep +0 -0
- data/test/dummy/public/404.html +26 -0
- data/test/dummy/public/422.html +26 -0
- data/test/dummy/public/500.html +26 -0
- data/test/dummy/public/favicon.ico +0 -0
- data/test/dummy/script/rails +6 -0
- data/test/dummy/test/fixtures/documents.yml +11 -0
- data/test/dummy/test/unit/document_test.rb +7 -0
- metadata +886 -0
@@ -0,0 +1,177 @@
|
|
1
|
+
<%= render :partial => "header" %>
|
2
|
+
<div class="documentation_section_title">
|
3
|
+
<%= tr("Application Login Flow") %>
|
4
|
+
</div>
|
5
|
+
<div class="documentation_section">
|
6
|
+
<p>
|
7
|
+
<%=tr("In this flow, application requests authorization to make calls on its behalf.") %>
|
8
|
+
<%=tr("By using this flow application will get higher rate limits for the public API calls than making unauthorized calls without an access token.") %>
|
9
|
+
<%=tr("Application will also be able to get app related data, such as statistics and metrics.") %>
|
10
|
+
</p>
|
11
|
+
|
12
|
+
<h2><%=tr("Application Authorization") %></h2>
|
13
|
+
<p>
|
14
|
+
<%=tr("In order to authenticate your app, you must pass the following parameter to the request_token endpoint:") %>
|
15
|
+
</p>
|
16
|
+
<h3><%=tr("Oauth Endpoint") %></h3>
|
17
|
+
<div class="code_snippet">
|
18
|
+
https://<%=Platform::Config.site_base_url %>/platform/oauth/request_token
|
19
|
+
</div>
|
20
|
+
<h3><%=tr("Parameters") %></h3>
|
21
|
+
<p>
|
22
|
+
<table class="documentation_table">
|
23
|
+
<tr>
|
24
|
+
<th style="width:150px;">
|
25
|
+
<%=tr("Name") %>
|
26
|
+
</th>
|
27
|
+
<th>
|
28
|
+
<%=tr("Description") %>
|
29
|
+
</th>
|
30
|
+
<th style="width:150px;">
|
31
|
+
<%=tr("Required") %>
|
32
|
+
</th>
|
33
|
+
</tr>
|
34
|
+
<tr>
|
35
|
+
<td>
|
36
|
+
client_id
|
37
|
+
</td>
|
38
|
+
<td>
|
39
|
+
<%=tr("Application key generated during the app registration.") %>
|
40
|
+
</td>
|
41
|
+
<td>
|
42
|
+
true
|
43
|
+
</td>
|
44
|
+
</tr>
|
45
|
+
<tr>
|
46
|
+
<td>
|
47
|
+
client_secret
|
48
|
+
</td>
|
49
|
+
<td>
|
50
|
+
<%=tr("Application secret generated during the registration process and availble in the application settings.") %>
|
51
|
+
</td>
|
52
|
+
<td>
|
53
|
+
true
|
54
|
+
</td>
|
55
|
+
</tr>
|
56
|
+
<tr>
|
57
|
+
<td>
|
58
|
+
grant_type
|
59
|
+
</td>
|
60
|
+
<td>
|
61
|
+
<%=tr("For this flow you must set it to \"client_credentials\".") %>
|
62
|
+
</td>
|
63
|
+
<td>
|
64
|
+
true
|
65
|
+
</td>
|
66
|
+
</tr>
|
67
|
+
</table>
|
68
|
+
</p>
|
69
|
+
<h3><%=tr("Example") %></h3>
|
70
|
+
<div class="code_snippet">
|
71
|
+
https://<%=Platform::Config.site_base_url %>/platform/oauth/request_token?client_id=YOUR_APP_ID&client_secret=YOUR_APP_SECRET&grant_type=client_credentials
|
72
|
+
</div>
|
73
|
+
<p>
|
74
|
+
<%=tr("If your app is successfully authenticated, the authorization server will return the access token in a JSON format:") %>
|
75
|
+
</p>
|
76
|
+
<h3><%=tr("Returned Fields") %></h3>
|
77
|
+
<p>
|
78
|
+
<table class="documentation_table">
|
79
|
+
<tr>
|
80
|
+
<th style="width:150px;">
|
81
|
+
<%=tr("Name") %>
|
82
|
+
</th>
|
83
|
+
<th style="width:150px;">
|
84
|
+
<%=tr("Type") %>
|
85
|
+
</th>
|
86
|
+
<th>
|
87
|
+
<%=tr("Description") %>
|
88
|
+
</th>
|
89
|
+
</tr>
|
90
|
+
<tr>
|
91
|
+
<td style="widtd:150px;">
|
92
|
+
access_token
|
93
|
+
</td>
|
94
|
+
<td style="widtd:150px;">
|
95
|
+
String
|
96
|
+
</td>
|
97
|
+
<td>
|
98
|
+
<%=tr("Access token to be used with every API request")%>
|
99
|
+
</td>
|
100
|
+
</tr>
|
101
|
+
<tr>
|
102
|
+
<td style="widtd:150px;">
|
103
|
+
expires_in
|
104
|
+
</td>
|
105
|
+
<td style="widtd:150px;">
|
106
|
+
Number
|
107
|
+
</td>
|
108
|
+
<td>
|
109
|
+
<%=tr("Seconds until the token will expire") %>
|
110
|
+
</td>
|
111
|
+
</tr>
|
112
|
+
<tr>
|
113
|
+
<td style="widtd:150px;">
|
114
|
+
refresh_token
|
115
|
+
</td>
|
116
|
+
<td style="widtd:150px;">
|
117
|
+
String
|
118
|
+
</td>
|
119
|
+
<td>
|
120
|
+
<%=tr("Token that can be used to get a new access token") %>
|
121
|
+
</td>
|
122
|
+
</tr>
|
123
|
+
</table>
|
124
|
+
</p>
|
125
|
+
<h3><%=tr("Example") %></h3>
|
126
|
+
<div class="code_snippet">
|
127
|
+
{"expires_in":86400,"refresh_token":"wEq6FMb3CcfPN6CckQv7","access_token":"sye4NMd130L4wqq13zjqqLHwuHd5jnnKwdVi9S8X"}
|
128
|
+
</div>
|
129
|
+
<p>
|
130
|
+
<%=tr("If your app failed to provide appropriate parameters, you will get one of the errors below in JSON format: ") %>
|
131
|
+
</p>
|
132
|
+
<h3><%=tr("Returned Fields") %></h3>
|
133
|
+
<p>
|
134
|
+
<table class="documentation_table">
|
135
|
+
<tr>
|
136
|
+
<th style="width:150px;">
|
137
|
+
<%=tr("Name") %>
|
138
|
+
</th>
|
139
|
+
<th style="width:150px;">
|
140
|
+
<%=tr("Type") %>
|
141
|
+
</th>
|
142
|
+
<th>
|
143
|
+
<%=tr("Description") %>
|
144
|
+
</th>
|
145
|
+
</tr>
|
146
|
+
<tr>
|
147
|
+
<tr>
|
148
|
+
<td style="widtd:150px;">
|
149
|
+
error
|
150
|
+
</td>
|
151
|
+
<td style="widtd:150px;">
|
152
|
+
String
|
153
|
+
</td>
|
154
|
+
<td>
|
155
|
+
<%=tr("Error code") %>
|
156
|
+
</td>
|
157
|
+
</tr>
|
158
|
+
<tr>
|
159
|
+
<td style="widtd:150px;">
|
160
|
+
error_description
|
161
|
+
</td>
|
162
|
+
<td style="widtd:150px;">
|
163
|
+
String
|
164
|
+
</td>
|
165
|
+
<td>
|
166
|
+
<%=tr("Error description") %>
|
167
|
+
</td>
|
168
|
+
</tr>
|
169
|
+
</table>
|
170
|
+
</p>
|
171
|
+
<h3><%=tr("Examples") %></h3>
|
172
|
+
<div class="code_snippet">
|
173
|
+
{"error_description":"invalid client application id","error":"unauthorized_client"}
|
174
|
+
<br>
|
175
|
+
</div>
|
176
|
+
</div>
|
177
|
+
<%= render :partial => "footer" %>
|
@@ -0,0 +1,264 @@
|
|
1
|
+
<%= render :partial => "header" %>
|
2
|
+
<div class="documentation_section_title">
|
3
|
+
<%= tr("Client Side Authorization Flow") %>
|
4
|
+
</div>
|
5
|
+
<div class="documentation_section">
|
6
|
+
<p>
|
7
|
+
<%=tr("Client side authentication and authorization flow is very similar to the server side flow.") %>
|
8
|
+
<%=tr("The difference is in the parameters passed to the server and in the response fields that you get back.") %>
|
9
|
+
</p>
|
10
|
+
<h2><%=tr("Authentication & Authorization") %></h2>
|
11
|
+
<p>
|
12
|
+
<%=tr("To enter the authentication/authorization client-side flow, you must pass the following parameters to the authorization URL:")%>
|
13
|
+
</p>
|
14
|
+
<h3><%=tr("Oauth URL")%></h3>
|
15
|
+
<div class="code_snippet">
|
16
|
+
https://<%=Platform::Config.site_base_url %>/platform/oauth/authorize
|
17
|
+
</div>
|
18
|
+
<h3><%=tr("Parameters")%></h3>
|
19
|
+
<p>
|
20
|
+
<table class="documentation_table">
|
21
|
+
<tr>
|
22
|
+
<th style="width:150px;">
|
23
|
+
<%=tr("Name") %>
|
24
|
+
</th>
|
25
|
+
<th>
|
26
|
+
<%=tr("Description") %>
|
27
|
+
</th>
|
28
|
+
<th style="width:150px;">
|
29
|
+
<%=tr("Required") %>
|
30
|
+
</th>
|
31
|
+
</tr>
|
32
|
+
<tr>
|
33
|
+
<td>
|
34
|
+
client_id
|
35
|
+
</td>
|
36
|
+
<td>
|
37
|
+
<%=tr("Application key generated during the app registration.")%>
|
38
|
+
</td>
|
39
|
+
<td>
|
40
|
+
true
|
41
|
+
</td>
|
42
|
+
</tr>
|
43
|
+
<tr>
|
44
|
+
<td>
|
45
|
+
redirect_uri
|
46
|
+
</td>
|
47
|
+
<td>
|
48
|
+
<%=tr("URL that the user's browser will be redirected back to once the application authorization is completed.") %>
|
49
|
+
<%=tr("You can specify this URL in your application settings as a Callback URL, or pass it as a request paremeter.") %>
|
50
|
+
<%=tr("The redirect_uri must be within the same domain as the Site Domain you specified in the application settings.") %>
|
51
|
+
</td>
|
52
|
+
<td>
|
53
|
+
true
|
54
|
+
</td>
|
55
|
+
</tr>
|
56
|
+
<tr>
|
57
|
+
<td>
|
58
|
+
response_type
|
59
|
+
</td>
|
60
|
+
<td>
|
61
|
+
<%=tr("For the server side flow the response type is defaulted to \"token\" and you don't need to pass it as a parameter.") %>
|
62
|
+
</td>
|
63
|
+
<td>
|
64
|
+
true
|
65
|
+
</td>
|
66
|
+
</tr>
|
67
|
+
<tr>
|
68
|
+
<td>
|
69
|
+
scope
|
70
|
+
</td>
|
71
|
+
<td>
|
72
|
+
<%=tr("A comma delimited list of permissions that the application needs.") %> <%=tr("By default the scope is set to a full data access.") %><%=tr("This is subject to change in the upcoming releases.") %>
|
73
|
+
</td>
|
74
|
+
<td>
|
75
|
+
false
|
76
|
+
</td>
|
77
|
+
</tr>
|
78
|
+
<tr>
|
79
|
+
<td>
|
80
|
+
display
|
81
|
+
</td>
|
82
|
+
<td>
|
83
|
+
<%=tr("For the server side flow the display parameter is defaulted to \"web\".") %>
|
84
|
+
</td>
|
85
|
+
<td>
|
86
|
+
false
|
87
|
+
</td>
|
88
|
+
</tr>
|
89
|
+
</table>
|
90
|
+
</p>
|
91
|
+
<h3><%=tr("Example")%></h3>
|
92
|
+
<div class="code_snippet">
|
93
|
+
https://<%=Platform::Config.site_base_url %>/platform/oauth/authorize?client_id=YOUR_APP_KEY&redirect_uri=YOUR_URL&response_type=token
|
94
|
+
</div>
|
95
|
+
<p>
|
96
|
+
<%=tr("If the user is already logged in, we validate the login cookie that we have stored on the user's browser and authenticate the user.") %><%=tr("If the user is not logged in, they are prompted to enter their credentials:") %>
|
97
|
+
</p>
|
98
|
+
<p style="text-align:center">
|
99
|
+
<%=image_tag("platform/help/login_web.png", :style=>"width:600px;", :class => "screenshot") %>
|
100
|
+
</p>
|
101
|
+
<p>
|
102
|
+
<%=tr("Once we have successfully authenticated the user, we will prompt the user to authorize your application:") %>
|
103
|
+
</p>
|
104
|
+
<p style="text-align:center">
|
105
|
+
<%=image_tag("platform/help/auth_web.png", :style=>"width:600px;", :class => "screenshot") %>
|
106
|
+
</p>
|
107
|
+
<p>
|
108
|
+
<%=tr("If the user presses Don't Allow, your app is not authorized.") %><%=tr("The user will be redirected (via HTTP 302) to the URL you passed in the redirect_uri parameter with the following error information:") %>
|
109
|
+
</p>
|
110
|
+
<h3><%=tr("Returned Fields") %></h3>
|
111
|
+
<p>
|
112
|
+
<table class="documentation_table">
|
113
|
+
<tr>
|
114
|
+
<th style="width:150px;">
|
115
|
+
<%=tr("Name") %>
|
116
|
+
</th>
|
117
|
+
<th style="width:150px;">
|
118
|
+
<%=tr("Type") %>
|
119
|
+
</th>
|
120
|
+
<th>
|
121
|
+
<%=tr("Description") %>
|
122
|
+
</th>
|
123
|
+
</tr>
|
124
|
+
<tr>
|
125
|
+
<td style="widtd:150px;">
|
126
|
+
status
|
127
|
+
</td>
|
128
|
+
<td style="widtd:150px;">
|
129
|
+
String
|
130
|
+
</td>
|
131
|
+
<td>
|
132
|
+
<%=tr("If user cancels the authorization flow, the status will be set to \"unauthorized\".") %>
|
133
|
+
</td>
|
134
|
+
</tr>
|
135
|
+
<tr>
|
136
|
+
<td style="widtd:150px;">
|
137
|
+
message
|
138
|
+
</td>
|
139
|
+
<td style="widtd:150px;">
|
140
|
+
String
|
141
|
+
</td>
|
142
|
+
<td>
|
143
|
+
<%=tr("Error message") %>
|
144
|
+
</td>
|
145
|
+
</tr>
|
146
|
+
</table>
|
147
|
+
</p>
|
148
|
+
<h3><%=tr("Example") %></h3>
|
149
|
+
<div class="code_snippet">
|
150
|
+
http://YOUR_URL#status=unauthorized&message=user+canceled
|
151
|
+
</div>
|
152
|
+
<p>
|
153
|
+
<%=tr("If the user presses Allow, your app is authorized.") %><%=tr("The user will be redirected (via HTTP 302) to the URL you passed in the redirect_uri parameter with an authorization code:") %>
|
154
|
+
</p>
|
155
|
+
<h3><%=tr("Returned Fields") %></h3>
|
156
|
+
<p>
|
157
|
+
<table class="documentation_table">
|
158
|
+
<tr>
|
159
|
+
<th style="width:150px;">
|
160
|
+
<%=tr("Name") %>
|
161
|
+
</th>
|
162
|
+
<th style="width:150px;">
|
163
|
+
<%=tr("Type") %>
|
164
|
+
</th>
|
165
|
+
<th>
|
166
|
+
<%=tr("Description") %>
|
167
|
+
</th>
|
168
|
+
</tr>
|
169
|
+
<tr>
|
170
|
+
<td style="widtd:150px;">
|
171
|
+
access_token
|
172
|
+
</td>
|
173
|
+
<td style="widtd:150px;">
|
174
|
+
String
|
175
|
+
</td>
|
176
|
+
<td>
|
177
|
+
<%=tr("Access token to be used with every API request")%>
|
178
|
+
</td>
|
179
|
+
</tr>
|
180
|
+
<tr>
|
181
|
+
<td style="widtd:150px;">
|
182
|
+
expires_in
|
183
|
+
</td>
|
184
|
+
<td style="widtd:150px;">
|
185
|
+
Number
|
186
|
+
</td>
|
187
|
+
<td>
|
188
|
+
<%=tr("Seconds until the token will expire")%>
|
189
|
+
</td>
|
190
|
+
</tr>
|
191
|
+
</table>
|
192
|
+
</p>
|
193
|
+
<h3><%=tr("Example")%></h3>
|
194
|
+
<div class="code_snippet">
|
195
|
+
http://YOUR_URL#access_token=ACCESS_TOKEN_GENERATED_BY_SERVER&expires_in=SECONDS_UNTIL_IT_IS_EXPIRED
|
196
|
+
</div>
|
197
|
+
<h2><%=tr("Cross Domain API Calls")%></h2>
|
198
|
+
<p>
|
199
|
+
<%=tr("{site_title} Platform supports cross-domain API calls using [link: JSONP] framework.", "", :site_title => Platform::Config.site_title, :link => ["http://en.wikipedia.org/wiki/JSONP"]) %>
|
200
|
+
<%=tr("Below is a simple example for Geni JSONP API call.")%>
|
201
|
+
<%=tr("You must provide a valid access token in order to make an JSONP API call.")%>
|
202
|
+
</p>
|
203
|
+
<h3><%=tr("Example")%></h3>
|
204
|
+
<pre class="code_snippet">
|
205
|
+
var Geni = {callbacks:{}, client_id:"YOUR_APP_KEY", access_token:""};
|
206
|
+
|
207
|
+
function jsonp(url, params, callback) {
|
208
|
+
var script = document.createElement('script');
|
209
|
+
var g_uuid = 'g' + (((1+Math.random())*0x10000)|0).toString(16).substring(1);
|
210
|
+
|
211
|
+
params = params || {};
|
212
|
+
params['callback'] = 'Geni.callbacks.' + g_uuid;
|
213
|
+
|
214
|
+
var query = [];
|
215
|
+
for(var p in params) str.push(encodeURIComponent(p) + "=" + encodeURIComponent(params[p]));
|
216
|
+
query = query.join("&");
|
217
|
+
|
218
|
+
url = url + (url.indexOf('?')>-1 ? '&' : '?') + query;
|
219
|
+
|
220
|
+
Geni.callbacks[g_uuid] = function(data) {
|
221
|
+
if(callback) callback(data);
|
222
|
+
delete Geni.callbacks[g_uuid];
|
223
|
+
}
|
224
|
+
script.src = url;
|
225
|
+
document.getElementsByTagName('head')[0].appendChild(script);
|
226
|
+
}
|
227
|
+
|
228
|
+
|
229
|
+
// Parse access token from the URL if it is available
|
230
|
+
if (Geni.access_token == "") {
|
231
|
+
var params = {};
|
232
|
+
|
233
|
+
var anchor = window.location.href.split("#");
|
234
|
+
if (anchor.length > 1) {
|
235
|
+
var parts = anchor[1].split("&");
|
236
|
+
for (var i=0; i < parts.length; i++) {
|
237
|
+
var values = parts[i].split("=");
|
238
|
+
params[values[0]] = values[1];
|
239
|
+
}
|
240
|
+
}
|
241
|
+
|
242
|
+
// Add code to store/retrieve access token from a cookie
|
243
|
+
|
244
|
+
Geni.access_token = params["access_token"];
|
245
|
+
}
|
246
|
+
|
247
|
+
if (Geni.access_token == "") {
|
248
|
+
window.location = "https://www.geni.com/oauth/authorize?client_id" + Geni.client_id + "&redirect_uri="
|
249
|
+
+ window.location.href + "&response_type=token";
|
250
|
+
} else {
|
251
|
+
// Get profile data
|
252
|
+
jsonp("/profile", {access_token:Geni.access_token}, function(data) {
|
253
|
+
alert("Hello " + data["name"]);
|
254
|
+
})
|
255
|
+
}
|
256
|
+
|
257
|
+
</pre>
|
258
|
+
<h3><%=tr("{site_title} JavaScript Client SDK", "", :site_title => Platform::Config.site_title)%></h3>
|
259
|
+
<p>
|
260
|
+
<%=tr("{site_title} Platform comes with a [link: full featured JavaScript library] that allows you to build dynamic web applications in the browser with {site_title}'s data.", "", :site_title => Platform::Config.site_title, :link => ["/platform/developer/help/sdk_js"])%>
|
261
|
+
<%=tr("It supports authentication, autherization and API calls to get the site data.")%>
|
262
|
+
</p>
|
263
|
+
</div>
|
264
|
+
<%= render :partial => "footer" %>
|
@@ -0,0 +1,191 @@
|
|
1
|
+
<%= render :partial => "header" %>
|
2
|
+
<div class="documentation_section_title">
|
3
|
+
<%= tr("Desktop Application Authorization Flow") %>
|
4
|
+
</div>
|
5
|
+
<div class="documentation_section">
|
6
|
+
<p>
|
7
|
+
<%=tr("Desktop application flow is a slightly modified version of the client-side flow.")%>
|
8
|
+
<%=tr("Since desktop applications do not normally run their own web servers, we cannot redirect back to the desktop app URL. Instead, we will redirect to an internal url with the returned fields.")%>
|
9
|
+
<%=tr("Desktop applications can listen to the browser URL changes.") %> <%=tr("Once a URL is matched against a special Platform URL, desktop application can get the access token and other parameters from the URL.")%>
|
10
|
+
</p>
|
11
|
+
<h2><%=tr("Authentication & Authorization")%></h2>
|
12
|
+
<p>
|
13
|
+
<%=tr("To enter the authentication/authorization desktop client flow, you must point an embedded browser to the authorization url and pass the following parameters:")%>
|
14
|
+
</p>
|
15
|
+
<h3><%=tr("Oauth URL")%></h3>
|
16
|
+
<div class="code_snippet">
|
17
|
+
https://<%=Platform::Config.site_base_url %>/platform/oauth/authorize
|
18
|
+
</div>
|
19
|
+
<h3><%=tr("Parameters")%></h3>
|
20
|
+
<p>
|
21
|
+
<table class="documentation_table">
|
22
|
+
<tr>
|
23
|
+
<th style="width:150px;">
|
24
|
+
<%=tr("Name") %>
|
25
|
+
</th>
|
26
|
+
<th>
|
27
|
+
<%=tr("Description") %>
|
28
|
+
</th>
|
29
|
+
<th style="width:150px;">
|
30
|
+
<%=tr("Required") %>
|
31
|
+
</th>
|
32
|
+
</tr>
|
33
|
+
<tr>
|
34
|
+
<td>
|
35
|
+
client_id
|
36
|
+
</td>
|
37
|
+
<td>
|
38
|
+
<%=tr("Application key generated during the app registration.")%>
|
39
|
+
</td>
|
40
|
+
<td>
|
41
|
+
true
|
42
|
+
</td>
|
43
|
+
</tr>
|
44
|
+
<tr>
|
45
|
+
<td>
|
46
|
+
response_type
|
47
|
+
</td>
|
48
|
+
<td>
|
49
|
+
<%=tr("For the client side flow the response type must be set to \"token\".")%>
|
50
|
+
</td>
|
51
|
+
<td>
|
52
|
+
true
|
53
|
+
</td>
|
54
|
+
</tr>
|
55
|
+
<tr>
|
56
|
+
<td>
|
57
|
+
display
|
58
|
+
</td>
|
59
|
+
<td>
|
60
|
+
<%=tr("For a desktop application embedded browser, set the display value to \"desktop\".")%>
|
61
|
+
</td>
|
62
|
+
<td>
|
63
|
+
true
|
64
|
+
</td>
|
65
|
+
</tr>
|
66
|
+
<tr>
|
67
|
+
<td>
|
68
|
+
scope
|
69
|
+
</td>
|
70
|
+
<td>
|
71
|
+
<%=tr("A comma delimited list of permissions that the application needs.") %>
|
72
|
+
<%=tr("By default the scope is set to a full data access.") %>
|
73
|
+
<%=tr("This is subject to change in the upcoming releases.") %>
|
74
|
+
</td>
|
75
|
+
<td>
|
76
|
+
false
|
77
|
+
</td>
|
78
|
+
</tr>
|
79
|
+
</table>
|
80
|
+
</p>
|
81
|
+
<h3><%=tr("Example")%></h3>
|
82
|
+
<div class="code_snippet">
|
83
|
+
https://<%=Platform::Config.site_base_url %>/platform/oauth/authorize?client_id=YOUR_APP_KEY&response_type=token&display=desktop
|
84
|
+
</div>
|
85
|
+
<p>
|
86
|
+
<%=tr("If the user is already logged in, we validate the login cookie that we have stored on the user's browser and authenticate the user.") %><%=tr("If the user is not logged in, they are prompted to enter their credentials:") %>
|
87
|
+
</p>
|
88
|
+
<center>
|
89
|
+
<%=image_tag("platform/help/login_desktop.png", :style=>"width:600px;", :class => "screenshot") %>
|
90
|
+
</center>
|
91
|
+
<p>
|
92
|
+
<%=tr("Once we have successfully authenticated the user, we will prompt the user to authorize your application:") %>
|
93
|
+
</p>
|
94
|
+
<center>
|
95
|
+
<%=image_tag("platform/help/auth_desktop.png", :style=>"width:600px;", :class => "screenshot") %>
|
96
|
+
</center>
|
97
|
+
<p>
|
98
|
+
<%=tr("If the user presses Don't Allow, your app is not authorized.") %>
|
99
|
+
<%=tr("The user will be redirected (via HTTP 302) to the special URL with the following error information:") %>
|
100
|
+
</p>
|
101
|
+
<h3><%=tr("Returned Fields") %></h3>
|
102
|
+
<p>
|
103
|
+
<table class="documentation_table">
|
104
|
+
<tr>
|
105
|
+
<th style="width:150px;">
|
106
|
+
<%=tr("Name") %>
|
107
|
+
</th>
|
108
|
+
<th style="width:150px;">
|
109
|
+
<%=tr("Type") %>
|
110
|
+
</th>
|
111
|
+
<th>
|
112
|
+
<%=tr("Description") %>
|
113
|
+
</th>
|
114
|
+
</tr>
|
115
|
+
<tr>
|
116
|
+
<td style="widtd:150px;">
|
117
|
+
status
|
118
|
+
</td>
|
119
|
+
<td style="widtd:150px;">
|
120
|
+
String
|
121
|
+
</td>
|
122
|
+
<td>
|
123
|
+
<%=tr("If user cancels the authorization flow, the status will be set to \"unauthorized\".") %>
|
124
|
+
</td>
|
125
|
+
</tr>
|
126
|
+
<tr>
|
127
|
+
<td style="widtd:150px;">
|
128
|
+
message
|
129
|
+
</td>
|
130
|
+
<td style="widtd:150px;">
|
131
|
+
String
|
132
|
+
</td>
|
133
|
+
<td>
|
134
|
+
<%=tr("Error message") %>
|
135
|
+
</td>
|
136
|
+
</tr>
|
137
|
+
</table>
|
138
|
+
</p>
|
139
|
+
|
140
|
+
<h3><%=tr("Example") %></h3>
|
141
|
+
<div class="code_snippet">
|
142
|
+
https://<%=Platform::Config.site_base_url %>/platform/oauth/auth_failed#status=unauthorized&message=user+canceled
|
143
|
+
</div>
|
144
|
+
<p>
|
145
|
+
<%=tr("If the user presses Allow, your app is authorized.") %>
|
146
|
+
<%=tr("The user will be redirected (via HTTP 302) to the special URL with an authorization code:") %>
|
147
|
+
</p>
|
148
|
+
<h3><%=tr("Returned Fields") %></h3>
|
149
|
+
<p>
|
150
|
+
<table class="documentation_table">
|
151
|
+
<tr>
|
152
|
+
<th style="width:150px;">
|
153
|
+
<%=tr("Name") %>
|
154
|
+
</th>
|
155
|
+
<th style="width:150px;">
|
156
|
+
<%=tr("Type") %>
|
157
|
+
</th>
|
158
|
+
<th>
|
159
|
+
<%=tr("Description") %>
|
160
|
+
</th>
|
161
|
+
</tr>
|
162
|
+
<tr>
|
163
|
+
<td style="widtd:150px;">
|
164
|
+
access_token
|
165
|
+
</td>
|
166
|
+
<td style="widtd:150px;">
|
167
|
+
String
|
168
|
+
</td>
|
169
|
+
<td>
|
170
|
+
<%=tr("Access token to be used with every API request")%>
|
171
|
+
</td>
|
172
|
+
</tr>
|
173
|
+
<tr>
|
174
|
+
<td style="widtd:150px;">
|
175
|
+
expires_in
|
176
|
+
</td>
|
177
|
+
<td style="widtd:150px;">
|
178
|
+
Number
|
179
|
+
</td>
|
180
|
+
<td>
|
181
|
+
<%=tr("Seconds until the token will expire") %>
|
182
|
+
</td>
|
183
|
+
</tr>
|
184
|
+
</table>
|
185
|
+
</p>
|
186
|
+
<h3><%=tr("Example")%></h3>
|
187
|
+
<div class="code_snippet">
|
188
|
+
https://<%=Platform::Config.site_base_url %>/platform/oauth/auth_success#access_token=ACCESS_TOKEN_GENERATED_BY_SERVER &expires_in=SECONDS_UNTIL_IT_IS_EXPIRED
|
189
|
+
</div>
|
190
|
+
</div>
|
191
|
+
<%= render :partial => "footer" %>
|