discourse_api 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +20 -0
- data/.travis.yml +4 -0
- data/Gemfile +4 -0
- data/Guardfile +5 -0
- data/LICENSE.txt +22 -0
- data/README.md +55 -0
- data/Rakefile +7 -0
- data/discourse_api.gemspec +31 -0
- data/examples/example.rb +7 -0
- data/examples/invite_users.rb +10 -0
- data/examples/post_topic.rb +16 -0
- data/examples/topic_lists.rb +13 -0
- data/examples/update_user.rb +14 -0
- data/lib/discourse_api.rb +3 -0
- data/lib/discourse_api/api/categories.rb +10 -0
- data/lib/discourse_api/api/search.rb +16 -0
- data/lib/discourse_api/api/topics.rb +35 -0
- data/lib/discourse_api/api/users.rb +30 -0
- data/lib/discourse_api/client.rb +76 -0
- data/lib/discourse_api/error.rb +14 -0
- data/lib/discourse_api/version.rb +3 -0
- data/routes.txt +203 -0
- data/spec/discourse_api/api/categories_spec.rb +22 -0
- data/spec/discourse_api/api/search_spec.rb +22 -0
- data/spec/discourse_api/api/topics_spec.rb +94 -0
- data/spec/discourse_api/api/users_spec.rb +41 -0
- data/spec/discourse_api/client_spec.rb +105 -0
- data/spec/fixtures/categories.json +1 -0
- data/spec/fixtures/hot.json +1 -0
- data/spec/fixtures/latest.json +1 -0
- data/spec/fixtures/new.json +1 -0
- data/spec/fixtures/search.json +1 -0
- data/spec/fixtures/topic.json +1 -0
- data/spec/fixtures/topics_created_by.json +1 -0
- data/spec/fixtures/user.json +1 -0
- data/spec/spec_helper.rb +60 -0
- metadata +238 -0
    
        data/routes.txt
    ADDED
    
    | @@ -0,0 +1,203 @@ | |
| 1 | 
            +
                                           forums GET      /forums(.:format)                                    forums#index
         | 
| 2 | 
            +
                                                  POST     /forums(.:format)                                    forums#create
         | 
| 3 | 
            +
                                        new_forum GET      /forums/new(.:format)                                forums#new
         | 
| 4 | 
            +
                                       edit_forum GET      /forums/:id/edit(.:format)                           forums#edit
         | 
| 5 | 
            +
                                            forum GET      /forums/:id(.:format)                                forums#show
         | 
| 6 | 
            +
                                                  PUT      /forums/:id(.:format)                                forums#update
         | 
| 7 | 
            +
                                                  DELETE   /forums/:id(.:format)                                forums#destroy
         | 
| 8 | 
            +
                                       srv_status GET      /srv/status(.:format)                                forums#status
         | 
| 9 | 
            +
                     generate_key_admin_api_index POST     /admin/api/generate_key(.:format)                    admin/api#generate_key
         | 
| 10 | 
            +
                                  admin_api_index GET      /admin/api(.:format)                                 admin/api#index
         | 
| 11 | 
            +
                       email_preferences_redirect GET      /email_preferences(.:format)                         email#preferences_redirect
         | 
| 12 | 
            +
                                email_unsubscribe GET      /email/unsubscribe/:key(.:format)                    email#unsubscribe
         | 
| 13 | 
            +
                                email_resubscribe POST     /email/resubscribe/:key(.:format)                    email#resubscribe
         | 
| 14 | 
            +
                    forgot_password_session_index POST     /session/forgot_password(.:format)                   session#forgot_password {:id=>/[A-Za-z0-9\_]+/}
         | 
| 15 | 
            +
                                    session_index POST     /session(.:format)                                   session#create {:id=>/[A-Za-z0-9\_]+/}
         | 
| 16 | 
            +
                                          session DELETE   /session/:id(.:format)                               session#destroy {:id=>/[A-Za-z0-9\_]+/}
         | 
| 17 | 
            +
                                     session_csrf GET      /session/csrf(.:format)                              session#csrf
         | 
| 18 | 
            +
                                                  GET      /composer-messages(.:format)                         composer_messages#index
         | 
| 19 | 
            +
                             check_username_users GET      /users/check_username(.:format)                      users#check_username
         | 
| 20 | 
            +
                          is_local_username_users GET      /users/is_local_username(.:format)                   users#is_local_username
         | 
| 21 | 
            +
                                            users GET      /users(.:format)                                     users#index
         | 
| 22 | 
            +
                                                  POST     /users(.:format)                                     users#create
         | 
| 23 | 
            +
                                         new_user GET      /users/new(.:format)                                 users#new
         | 
| 24 | 
            +
                                        edit_user GET      /users/:id/edit(.:format)                            users#edit
         | 
| 25 | 
            +
                                             user DELETE   /users/:id(.:format)                                 users#destroy
         | 
| 26 | 
            +
                                     static_index GET      /static(.:format)                                    static#index
         | 
| 27 | 
            +
                                                  POST     /static(.:format)                                    static#create
         | 
| 28 | 
            +
                                       new_static GET      /static/new(.:format)                                static#new
         | 
| 29 | 
            +
                                      edit_static GET      /static/:id/edit(.:format)                           static#edit
         | 
| 30 | 
            +
                                           static GET      /static/:id(.:format)                                static#show
         | 
| 31 | 
            +
                                                  PUT      /static/:id(.:format)                                static#update
         | 
| 32 | 
            +
                                                  DELETE   /static/:id(.:format)                                static#destroy
         | 
| 33 | 
            +
                                            login POST     /login(.:format)                                     static#enter
         | 
| 34 | 
            +
                                                  GET      /login(.:format)                                     static#show {:id=>"login"}
         | 
| 35 | 
            +
                                              faq GET      /faq(.:format)                                       static#show {:id=>"faq"}
         | 
| 36 | 
            +
                                              tos GET      /tos(.:format)                                       static#show {:id=>"tos"}
         | 
| 37 | 
            +
                                          privacy GET      /privacy(.:format)                                   static#show {:id=>"privacy"}
         | 
| 38 | 
            +
                               users_search_users GET      /users/search/users(.:format)                        users#search_users
         | 
| 39 | 
            +
                                                  GET      /users/password-reset/:token(.:format)               users#password_reset
         | 
| 40 | 
            +
                                                  PUT      /users/password-reset/:token(.:format)               users#password_reset
         | 
| 41 | 
            +
                                                  GET      /users/activate-account/:token(.:format)             users#activate_account
         | 
| 42 | 
            +
                                                  GET      /users/authorize-email/:token(.:format)              users#authorize_email
         | 
| 43 | 
            +
                                         users_hp GET      /users/hp(.:format)                                  users#get_honeypot_value
         | 
| 44 | 
            +
                                 user_preferences GET      /user_preferences(.:format)                          users#user_preferences_redirect
         | 
| 45 | 
            +
                                                  GET      /users/:username/private-messages(.:format)          user_actions#private_messages {:username=>/[A-Za-z0-9\_]+/}
         | 
| 46 | 
            +
                                                  GET      /users/:username/private-messages/:filter(.:format)  user_actions#private_messages {:username=>/[A-Za-z0-9\_]+/}
         | 
| 47 | 
            +
                                                  GET      /users/:username(.:format)                           users#show {:username=>/[A-Za-z0-9\_]+/}
         | 
| 48 | 
            +
                                                  PUT      /users/:username(.:format)                           users#update {:username=>/[A-Za-z0-9\_]+/}
         | 
| 49 | 
            +
                                email_preferences GET      /users/:username/preferences(.:format)               users#preferences {:username=>/[A-Za-z0-9\_]+/}
         | 
| 50 | 
            +
                                                  GET      /users/:username/preferences/email(.:format)         users#preferences {:username=>/[A-Za-z0-9\_]+/}
         | 
| 51 | 
            +
                                                  PUT      /users/:username/preferences/email(.:format)         users#change_email {:username=>/[A-Za-z0-9\_]+/}
         | 
| 52 | 
            +
                                                  GET      /users/:username/preferences/about-me(.:format)      users#preferences {:username=>/[A-Za-z0-9\_]+/}
         | 
| 53 | 
            +
                                                  GET      /users/:username/preferences/username(.:format)      users#preferences {:username=>/[A-Za-z0-9\_]+/}
         | 
| 54 | 
            +
                                                  PUT      /users/:username/preferences/username(.:format)      users#username {:username=>/[A-Za-z0-9\_]+/}
         | 
| 55 | 
            +
                                                  GET      /users/:username/avatar(/:size)(.:format)            users#avatar {:username=>/[A-Za-z0-9\_]+/}
         | 
| 56 | 
            +
                                                  POST     /users/:username/preferences/avatar(.:format)        users#upload_avatar {:username=>/[A-Za-z0-9\_]+/}
         | 
| 57 | 
            +
                                                  PUT      /users/:username/preferences/avatar/toggle(.:format) users#toggle_avatar {:username=>/[A-Za-z0-9\_]+/}
         | 
| 58 | 
            +
                                                  GET      /users/:username/invited(.:format)                   users#invited {:username=>/[A-Za-z0-9\_]+/}
         | 
| 59 | 
            +
                                                  POST     /users/:username/send_activation_email(.:format)     users#send_activation_email {:username=>/[A-Za-z0-9\_]+/}
         | 
| 60 | 
            +
                                                  GET      /users/:username/activity(.:format)                  users#show {:username=>/[A-Za-z0-9\_]+/}
         | 
| 61 | 
            +
                                                  GET      /users/:username/activity/:filter(.:format)          users#show {:username=>/[A-Za-z0-9\_]+/}
         | 
| 62 | 
            +
                                                  GET      /uploads/:site/:id/:sha.:extension(.:format)         uploads#show {:site=>/\w+/, :id=>/\d+/, :sha=>/[a-z0-9]{15,16}/i, :extension=>/\w{2,}/}
         | 
| 63 | 
            +
                                          uploads POST     /uploads(.:format)                                   uploads#create
         | 
| 64 | 
            +
                                                  GET      /posts/by_number/:topic_id/:post_number(.:format)    posts#by_number
         | 
| 65 | 
            +
                                                  GET      /posts/:id/reply-history(.:format)                   posts#reply_history
         | 
| 66 | 
            +
                                    post_versions GET      /posts/:post_id/versions(.:format)                   posts#versions
         | 
| 67 | 
            +
                                    post_bookmark PUT      /posts/:post_id/bookmark(.:format)                   posts#bookmark
         | 
| 68 | 
            +
                                     post_replies GET      /posts/:post_id/replies(.:format)                    posts#replies
         | 
| 69 | 
            +
                                     post_recover PUT      /posts/:post_id/recover(.:format)                    posts#recover
         | 
| 70 | 
            +
                               destroy_many_posts DELETE   /posts/destroy_many(.:format)                        posts#destroy_many
         | 
| 71 | 
            +
                                            posts GET      /posts(.:format)                                     posts#index
         | 
| 72 | 
            +
                                                  POST     /posts(.:format)                                     posts#create
         | 
| 73 | 
            +
                                         new_post GET      /posts/new(.:format)                                 posts#new
         | 
| 74 | 
            +
                                        edit_post GET      /posts/:id/edit(.:format)                            posts#edit
         | 
| 75 | 
            +
                                             post GET      /posts/:id(.:format)                                 posts#show
         | 
| 76 | 
            +
                                                  PUT      /posts/:id(.:format)                                 posts#update
         | 
| 77 | 
            +
                                                  DELETE   /posts/:id(.:format)                                 posts#destroy
         | 
| 78 | 
            +
                                                  GET      /p/:post_id/:user_id(.:format)                       posts#short_link
         | 
| 79 | 
            +
                                    notifications GET      /notifications(.:format)                             notifications#index
         | 
| 80 | 
            +
                                                  POST     /notifications(.:format)                             notifications#create
         | 
| 81 | 
            +
                                 new_notification GET      /notifications/new(.:format)                         notifications#new
         | 
| 82 | 
            +
                                edit_notification GET      /notifications/:id/edit(.:format)                    notifications#edit
         | 
| 83 | 
            +
                                     notification GET      /notifications/:id(.:format)                         notifications#show
         | 
| 84 | 
            +
                                                  PUT      /notifications/:id(.:format)                         notifications#update
         | 
| 85 | 
            +
                                                  DELETE   /notifications/:id(.:format)                         notifications#destroy
         | 
| 86 | 
            +
                                                  GET|POST /auth/:provider/callback(.:format)                   users/omniauth_callbacks#complete
         | 
| 87 | 
            +
                                     auth_failure GET|POST /auth/failure(.:format)                              users/omniauth_callbacks#failure
         | 
| 88 | 
            +
                                     track_clicks GET      /clicks/track(.:format)                              clicks#track
         | 
| 89 | 
            +
                                           clicks GET      /clicks(.:format)                                    clicks#index
         | 
| 90 | 
            +
                                                  POST     /clicks(.:format)                                    clicks#create
         | 
| 91 | 
            +
                                        new_click GET      /clicks/new(.:format)                                clicks#new
         | 
| 92 | 
            +
                                       edit_click GET      /clicks/:id/edit(.:format)                           clicks#edit
         | 
| 93 | 
            +
                                            click GET      /clicks/:id(.:format)                                clicks#show
         | 
| 94 | 
            +
                                                  PUT      /clicks/:id(.:format)                                clicks#update
         | 
| 95 | 
            +
                                                  DELETE   /clicks/:id(.:format)                                clicks#destroy
         | 
| 96 | 
            +
                                          excerpt GET      /excerpt(.:format)                                   excerpt#show
         | 
| 97 | 
            +
                               users_post_actions GET      /post_actions/users(.:format)                        post_actions#users
         | 
| 98 | 
            +
                         clear_flags_post_actions POST     /post_actions/clear_flags(.:format)                  post_actions#clear_flags
         | 
| 99 | 
            +
                                     post_actions GET      /post_actions(.:format)                              post_actions#index
         | 
| 100 | 
            +
                                                  POST     /post_actions(.:format)                              post_actions#create
         | 
| 101 | 
            +
                                  new_post_action GET      /post_actions/new(.:format)                          post_actions#new
         | 
| 102 | 
            +
                                 edit_post_action GET      /post_actions/:id/edit(.:format)                     post_actions#edit
         | 
| 103 | 
            +
                                      post_action GET      /post_actions/:id(.:format)                          post_actions#show
         | 
| 104 | 
            +
                                                  PUT      /post_actions/:id(.:format)                          post_actions#update
         | 
| 105 | 
            +
                                                  DELETE   /post_actions/:id(.:format)                          post_actions#destroy
         | 
| 106 | 
            +
                                     user_actions GET      /user_actions(.:format)                              user_actions#index
         | 
| 107 | 
            +
                                                  POST     /user_actions(.:format)                              user_actions#create
         | 
| 108 | 
            +
                                  new_user_action GET      /user_actions/new(.:format)                          user_actions#new
         | 
| 109 | 
            +
                                 edit_user_action GET      /user_actions/:id/edit(.:format)                     user_actions#edit
         | 
| 110 | 
            +
                                      user_action GET      /user_actions/:id(.:format)                          user_actions#show
         | 
| 111 | 
            +
                                                  PUT      /user_actions/:id(.:format)                          user_actions#update
         | 
| 112 | 
            +
                                                  DELETE   /user_actions/:id(.:format)                          user_actions#destroy
         | 
| 113 | 
            +
                                       categories GET      /categories(.:format)                                categories#index
         | 
| 114 | 
            +
                                                  POST     /categories(.:format)                                categories#create
         | 
| 115 | 
            +
                                     new_category GET      /categories/new(.:format)                            categories#new
         | 
| 116 | 
            +
                                    edit_category GET      /categories/:id/edit(.:format)                       categories#edit
         | 
| 117 | 
            +
                                         category PUT      /categories/:id(.:format)                            categories#update
         | 
| 118 | 
            +
                                                  DELETE   /categories/:id(.:format)                            categories#destroy
         | 
| 119 | 
            +
                                                  GET      /category/:id/show(.:format)                         categories#show
         | 
| 120 | 
            +
                                    category_feed GET      /category/:category.rss(.:format)                    list#category_feed {:format=>:rss}
         | 
| 121 | 
            +
                                    category_list GET      /category/:category(.:format)                        list#category
         | 
| 122 | 
            +
                               category_list_more GET      /category/:category/more(.:format)                   list#category
         | 
| 123 | 
            +
                                          popular GET      /popular(.:format)                                   list#popular_redirect
         | 
| 124 | 
            +
                                     popular_more GET      /popular/more(.:format)                              list#popular_redirect
         | 
| 125 | 
            +
                                      latest_feed GET      /latest.rss(.:format)                                list#latest_feed {:format=>:rss, :filter=>:latest}
         | 
| 126 | 
            +
                                         hot_feed GET      /hot.rss(.:format)                                   list#hot_feed {:format=>:rss, :filter=>:hot}
         | 
| 127 | 
            +
                                           latest GET      /latest(.:format)                                    list#latest
         | 
| 128 | 
            +
                                      latest_more GET      /latest/more(.:format)                               list#latest
         | 
| 129 | 
            +
                                              hot GET      /hot(.:format)                                       list#hot
         | 
| 130 | 
            +
                                         hot_more GET      /hot/more(.:format)                                  list#hot
         | 
| 131 | 
            +
                                        favorited GET      /favorited(.:format)                                 list#favorited
         | 
| 132 | 
            +
                                   favorited_more GET      /favorited/more(.:format)                            list#favorited
         | 
| 133 | 
            +
                                             read GET      /read(.:format)                                      list#read
         | 
| 134 | 
            +
                                        read_more GET      /read/more(.:format)                                 list#read
         | 
| 135 | 
            +
                                           posted GET      /posted(.:format)                                    list#posted
         | 
| 136 | 
            +
                                      posted_more GET      /posted/more(.:format)                               list#posted
         | 
| 137 | 
            +
                                           unread GET      /unread(.:format)                                    list#unread
         | 
| 138 | 
            +
                                      unread_more GET      /unread/more(.:format)                               list#unread
         | 
| 139 | 
            +
                                              new GET      /new(.:format)                                       list#new
         | 
| 140 | 
            +
                                         new_more GET      /new/more(.:format)                                  list#new
         | 
| 141 | 
            +
                                           search GET      /search(.:format)                                    search#query
         | 
| 142 | 
            +
                                                  GET      /t/:id(.:format)                                     topics#show
         | 
| 143 | 
            +
                                                  DELETE   /t/:id(.:format)                                     topics#destroy
         | 
| 144 | 
            +
                                                  PUT      /t/:id(.:format)                                     topics#update
         | 
| 145 | 
            +
                                                t POST     /t(.:format)                                         topics#create
         | 
| 146 | 
            +
                                   topics_timings POST     /topics/timings(.:format)                            topics#timings
         | 
| 147 | 
            +
                                topics_similar_to GET      /topics/similar_to(.:format)                         topics#similar_to
         | 
| 148 | 
            +
                                        topics_by GET      /topics/created-by/:username(.:format)               list#topics_by {:username=>/[A-Za-z0-9\_]+/}
         | 
| 149 | 
            +
                          topics_private_messages GET      /topics/private-messages/:username(.:format)         list#private_messages {:username=>/[A-Za-z0-9\_]+/}
         | 
| 150 | 
            +
                     topics_private_messages_sent GET      /topics/private-messages-sent/:username(.:format)    list#private_messages_sent {:username=>/[A-Za-z0-9\_]+/}
         | 
| 151 | 
            +
                   topics_private_messages_unread GET      /topics/private-messages-unread/:username(.:format)  list#private_messages_unread {:username=>/[A-Za-z0-9\_]+/}
         | 
| 152 | 
            +
                                                  GET      /t/:slug/:topic_id/wordpress(.:format)               topics#wordpress {:topic_id=>/\d+/}
         | 
| 153 | 
            +
                                                  GET      /t/:slug/:topic_id/moderator-liked(.:format)         topics#moderator_liked {:topic_id=>/\d+/}
         | 
| 154 | 
            +
                                                  GET      /t/:topic_id/wordpress(.:format)                     topics#wordpress {:topic_id=>/\d+/}
         | 
| 155 | 
            +
                                                  GET      /t/:slug/:topic_id/best_of(.:format)                 topics#show {:topic_id=>/\d+/, :post_number=>/\d+/, :best_of=>true}
         | 
| 156 | 
            +
                                                  GET      /t/:topic_id/best_of(.:format)                       topics#show {:topic_id=>/\d+/, :post_number=>/\d+/}
         | 
| 157 | 
            +
                                                  PUT      /t/:slug/:topic_id(.:format)                         topics#update {:topic_id=>/\d+/}
         | 
| 158 | 
            +
                                                  PUT      /t/:slug/:topic_id/star(.:format)                    topics#star {:topic_id=>/\d+/}
         | 
| 159 | 
            +
                                                  PUT      /t/:topic_id/star(.:format)                          topics#star {:topic_id=>/\d+/}
         | 
| 160 | 
            +
                                                  PUT      /t/:slug/:topic_id/status(.:format)                  topics#status {:topic_id=>/\d+/}
         | 
| 161 | 
            +
                                                  PUT      /t/:topic_id/status(.:format)                        topics#status {:topic_id=>/\d+/}
         | 
| 162 | 
            +
                                                  PUT      /t/:topic_id/clear-pin(.:format)                     topics#clear_pin {:topic_id=>/\d+/}
         | 
| 163 | 
            +
                                                  PUT      /t/:topic_id/mute(.:format)                          topics#mute {:topic_id=>/\d+/}
         | 
| 164 | 
            +
                                                  PUT      /t/:topic_id/unmute(.:format)                        topics#unmute {:topic_id=>/\d+/}
         | 
| 165 | 
            +
                                                  PUT      /t/:topic_id/autoclose(.:format)                     topics#autoclose {:topic_id=>/\d+/}
         | 
| 166 | 
            +
                                                  PUT      /t/:topic_id/remove-allowed-user(.:format)           topics#remove_allowed_user {:topic_id=>/\d+/}
         | 
| 167 | 
            +
                                                  PUT      /t/:topic_id/recover(.:format)                       topics#recover {:topic_id=>/\d+/}
         | 
| 168 | 
            +
                                                  GET      /t/:topic_id/:post_number(.:format)                  topics#show {:topic_id=>/\d+/, :post_number=>/\d+/}
         | 
| 169 | 
            +
                                                  GET      /t/:slug/:topic_id.rss(.:format)                     topics#feed {:topic_id=>/\d+/, :format=>:rss}
         | 
| 170 | 
            +
                                                  GET      /t/:slug/:topic_id(.:format)                         topics#show {:topic_id=>/\d+/}
         | 
| 171 | 
            +
                                                  GET      /t/:slug/:topic_id/:post_number(.:format)            topics#show {:topic_id=>/\d+/, :post_number=>/\d+/}
         | 
| 172 | 
            +
                                                  GET      /t/:topic_id/posts(.:format)                         topics#posts {:topic_id=>/\d+/}
         | 
| 173 | 
            +
                                                  POST     /t/:topic_id/timings(.:format)                       topics#timings {:topic_id=>/\d+/}
         | 
| 174 | 
            +
                                                  POST     /t/:topic_id/invite(.:format)                        topics#invite {:topic_id=>/\d+/}
         | 
| 175 | 
            +
                                                  POST     /t/:topic_id/move-posts(.:format)                    topics#move_posts {:topic_id=>/\d+/}
         | 
| 176 | 
            +
                                                  POST     /t/:topic_id/merge-topic(.:format)                   topics#merge_topic {:topic_id=>/\d+/}
         | 
| 177 | 
            +
                                                  DELETE   /t/:topic_id/timings(.:format)                       topics#destroy_timings {:topic_id=>/\d+/}
         | 
| 178 | 
            +
                                                  POST     /t/:topic_id/notifications(.:format)                 topics#set_notifications {:topic_id=>/\d+/}
         | 
| 179 | 
            +
                                                  GET      /raw/:topic_id(/:post_number)(.:format)              posts#markdown
         | 
| 180 | 
            +
                                          invites GET      /invites(.:format)                                   invites#index
         | 
| 181 | 
            +
                                                  POST     /invites(.:format)                                   invites#create
         | 
| 182 | 
            +
                                       new_invite GET      /invites/new(.:format)                               invites#new
         | 
| 183 | 
            +
                                      edit_invite GET      /invites/:id/edit(.:format)                          invites#edit
         | 
| 184 | 
            +
                                           invite GET      /invites/:id(.:format)                               invites#show
         | 
| 185 | 
            +
                                                  PUT      /invites/:id(.:format)                               invites#update
         | 
| 186 | 
            +
                                                  DELETE   /invites/:id(.:format)                               invites#destroy
         | 
| 187 | 
            +
                                                  DELETE   /invites(.:format)                                   invites#destroy
         | 
| 188 | 
            +
                                           onebox GET      /onebox(.:format)                                    onebox#show
         | 
| 189 | 
            +
                                            error GET      /error(.:format)                                     forums#error
         | 
| 190 | 
            +
                                                  GET      /message-bus/poll(.:format)                          message_bus#poll
         | 
| 191 | 
            +
                                            draft GET      /draft(.:format)                                     draft#show
         | 
| 192 | 
            +
                                                  POST     /draft(.:format)                                     draft#update
         | 
| 193 | 
            +
                                                  DELETE   /draft(.:format)                                     draft#destroy
         | 
| 194 | 
            +
                                                  GET      /robots.txt(.:format)                                robots_txt#index
         | 
| 195 | 
            +
                                      list_latest          /                                                    list#latest
         | 
| 196 | 
            +
                                         list_hot          /                                                    list#hot
         | 
| 197 | 
            +
                                      list_unread          /                                                    list#unread
         | 
| 198 | 
            +
                                         list_new          /                                                    list#new
         | 
| 199 | 
            +
                                   list_favorited          /                                                    list#favorited
         | 
| 200 | 
            +
                                        list_read          /                                                    list#read
         | 
| 201 | 
            +
                                      list_posted          /                                                    list#posted
         | 
| 202 | 
            +
                                 categories_index          /                                                    categories#index
         | 
| 203 | 
            +
             | 
| @@ -0,0 +1,22 @@ | |
| 1 | 
            +
            require 'spec_helper'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            describe DiscourseApi::API::Categories do
         | 
| 4 | 
            +
              subject { DiscourseApi::Client.new("http://localhost") }
         | 
| 5 | 
            +
             | 
| 6 | 
            +
              describe "#categories" do
         | 
| 7 | 
            +
                before do
         | 
| 8 | 
            +
                  stub_get("http://localhost/categories.json").to_return(body: fixture("categories.json"), headers: { content_type: "application/json" })
         | 
| 9 | 
            +
                end
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                it "requests the correct resource" do
         | 
| 12 | 
            +
                  subject.categories
         | 
| 13 | 
            +
                  expect(a_get("http://localhost/categories.json")).to have_been_made
         | 
| 14 | 
            +
                end
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                it "returns the requested categories" do
         | 
| 17 | 
            +
                  categories = subject.categories
         | 
| 18 | 
            +
                  expect(categories).to be_an Array
         | 
| 19 | 
            +
                  expect(categories.first).to be_a Hash
         | 
| 20 | 
            +
                end
         | 
| 21 | 
            +
              end
         | 
| 22 | 
            +
            end
         | 
| @@ -0,0 +1,22 @@ | |
| 1 | 
            +
            require 'spec_helper'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            describe DiscourseApi::API::Search do
         | 
| 4 | 
            +
              subject { DiscourseApi::Client.new("http://localhost") }
         | 
| 5 | 
            +
             | 
| 6 | 
            +
              describe "#search" do
         | 
| 7 | 
            +
                before do
         | 
| 8 | 
            +
                  stub_get("http://localhost/search.json").with(query: { term: "test"} ).to_return(body: fixture("search.json"), headers: { content_type: "application/json" })
         | 
| 9 | 
            +
                end
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                it "requests the correct resource" do
         | 
| 12 | 
            +
                  subject.search("test")
         | 
| 13 | 
            +
                  expect(a_get("http://localhost/search.json").with(query: { term: "test"} )).to have_been_made
         | 
| 14 | 
            +
                end
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                it "returns the requested search" do
         | 
| 17 | 
            +
                  results = subject.search("test")
         | 
| 18 | 
            +
                  expect(results).to be_an Array
         | 
| 19 | 
            +
                  expect(results.first).to be_a Hash
         | 
| 20 | 
            +
                end
         | 
| 21 | 
            +
              end
         | 
| 22 | 
            +
            end
         | 
| @@ -0,0 +1,94 @@ | |
| 1 | 
            +
            require 'spec_helper'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            describe DiscourseApi::API::Topics do
         | 
| 4 | 
            +
              subject { DiscourseApi::Client.new("http://localhost") }
         | 
| 5 | 
            +
             | 
| 6 | 
            +
              describe "#hot_topics" do
         | 
| 7 | 
            +
                before do
         | 
| 8 | 
            +
                  stub_get("http://localhost/hot.json").to_return(body: fixture("hot.json"), headers: { content_type: "application/json" })
         | 
| 9 | 
            +
                end
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                it "requests the correct resource" do
         | 
| 12 | 
            +
                  subject.hot_topics
         | 
| 13 | 
            +
                  expect(a_get("http://localhost/hot.json")).to have_been_made
         | 
| 14 | 
            +
                end
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                it "returns the requested topics" do
         | 
| 17 | 
            +
                  topics = subject.hot_topics
         | 
| 18 | 
            +
                  expect(topics).to be_an Array
         | 
| 19 | 
            +
                  expect(topics.first).to be_a Hash
         | 
| 20 | 
            +
                end
         | 
| 21 | 
            +
              end
         | 
| 22 | 
            +
             | 
| 23 | 
            +
              describe "#invite_user_to_topic" do
         | 
| 24 | 
            +
                it "needs to have a test written for it"
         | 
| 25 | 
            +
              end
         | 
| 26 | 
            +
             | 
| 27 | 
            +
              describe "#latest_topics" do
         | 
| 28 | 
            +
                before do
         | 
| 29 | 
            +
                  stub_get("http://localhost/latest.json").to_return(body: fixture("latest.json"), headers: { content_type: "application/json" })
         | 
| 30 | 
            +
                end
         | 
| 31 | 
            +
             | 
| 32 | 
            +
                it "requests the correct resource" do
         | 
| 33 | 
            +
                  subject.latest_topics
         | 
| 34 | 
            +
                  expect(a_get("http://localhost/latest.json")).to have_been_made
         | 
| 35 | 
            +
                end
         | 
| 36 | 
            +
             | 
| 37 | 
            +
                it "returns the requested topics" do
         | 
| 38 | 
            +
                  topics = subject.latest_topics
         | 
| 39 | 
            +
                  expect(topics).to be_an Array
         | 
| 40 | 
            +
                  expect(topics.first).to be_a Hash
         | 
| 41 | 
            +
                end
         | 
| 42 | 
            +
              end
         | 
| 43 | 
            +
             | 
| 44 | 
            +
              describe "#new_topics" do
         | 
| 45 | 
            +
                before do
         | 
| 46 | 
            +
                  stub_get("http://localhost/new.json").to_return(body: fixture("new.json"), headers: { content_type: "application/json" })
         | 
| 47 | 
            +
                end
         | 
| 48 | 
            +
             | 
| 49 | 
            +
                it "requests the correct resource" do
         | 
| 50 | 
            +
                  subject.new_topics
         | 
| 51 | 
            +
                  expect(a_get("http://localhost/new.json")).to have_been_made
         | 
| 52 | 
            +
                end
         | 
| 53 | 
            +
             | 
| 54 | 
            +
                it "returns the requested topics" do
         | 
| 55 | 
            +
                  topics = subject.new_topics
         | 
| 56 | 
            +
                  expect(topics).to be_an Array
         | 
| 57 | 
            +
                  expect(topics.first).to be_a Hash
         | 
| 58 | 
            +
                end
         | 
| 59 | 
            +
              end
         | 
| 60 | 
            +
             | 
| 61 | 
            +
              describe "#topic" do
         | 
| 62 | 
            +
                before do
         | 
| 63 | 
            +
                  stub_get("http://localhost/t/57.json").to_return(body: fixture("topic.json"), headers: { content_type: "application/json" })
         | 
| 64 | 
            +
                end
         | 
| 65 | 
            +
             | 
| 66 | 
            +
                it "requests the correct resource" do
         | 
| 67 | 
            +
                  subject.topic(57)
         | 
| 68 | 
            +
                  expect(a_get("http://localhost/t/57.json")).to have_been_made
         | 
| 69 | 
            +
                end
         | 
| 70 | 
            +
             | 
| 71 | 
            +
                it "returns the requested topic" do
         | 
| 72 | 
            +
                  topic = subject.topic(57)
         | 
| 73 | 
            +
                  expect(topic).to be_a Hash
         | 
| 74 | 
            +
                  expect(topic["id"]).to eq(57)
         | 
| 75 | 
            +
                end
         | 
| 76 | 
            +
              end
         | 
| 77 | 
            +
             | 
| 78 | 
            +
              describe "#topics_by" do
         | 
| 79 | 
            +
                before do
         | 
| 80 | 
            +
                  stub_get("http://localhost/topics/created-by/test_user.json").to_return(body: fixture("topics_created_by.json"), headers: { content_type: "application/json" })
         | 
| 81 | 
            +
                end
         | 
| 82 | 
            +
             | 
| 83 | 
            +
                it "requests the correct resource" do
         | 
| 84 | 
            +
                  subject.topics_by('test_user')
         | 
| 85 | 
            +
                  expect(a_get("http://localhost/topics/created-by/test_user.json")).to have_been_made
         | 
| 86 | 
            +
                end
         | 
| 87 | 
            +
             | 
| 88 | 
            +
                it "returns the requested topics" do
         | 
| 89 | 
            +
                  topics = subject.topics_by('test_user')
         | 
| 90 | 
            +
                  expect(topics).to be_an Array
         | 
| 91 | 
            +
                  expect(topics.first).to be_a Hash
         | 
| 92 | 
            +
                end
         | 
| 93 | 
            +
              end
         | 
| 94 | 
            +
            end
         | 
| @@ -0,0 +1,41 @@ | |
| 1 | 
            +
            require 'spec_helper'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            describe DiscourseApi::API::Users do
         | 
| 4 | 
            +
              subject { DiscourseApi::Client.new("http://localhost") }
         | 
| 5 | 
            +
             | 
| 6 | 
            +
              describe "#toggle_avatar" do
         | 
| 7 | 
            +
                it "needs to have a test written for it"
         | 
| 8 | 
            +
              end
         | 
| 9 | 
            +
             | 
| 10 | 
            +
              describe "#user" do
         | 
| 11 | 
            +
                before do
         | 
| 12 | 
            +
                  stub_get("http://localhost/user/test_user.json").to_return(body: fixture("user.json"), headers: { content_type: "application/json" })
         | 
| 13 | 
            +
                end
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                it "requests the correct resource" do
         | 
| 16 | 
            +
                  subject.user("test_user")
         | 
| 17 | 
            +
                  expect(a_get("http://localhost/user/test_user.json")).to have_been_made
         | 
| 18 | 
            +
                end
         | 
| 19 | 
            +
             | 
| 20 | 
            +
                it "returns the requested user" do
         | 
| 21 | 
            +
                  user = subject.user("test_user")
         | 
| 22 | 
            +
                  expect(user).to be_a Hash
         | 
| 23 | 
            +
                end
         | 
| 24 | 
            +
              end
         | 
| 25 | 
            +
             | 
| 26 | 
            +
              describe "#update_avatar" do
         | 
| 27 | 
            +
                it "needs to have a test written for it"
         | 
| 28 | 
            +
              end
         | 
| 29 | 
            +
             | 
| 30 | 
            +
              describe "#update_email" do
         | 
| 31 | 
            +
                it "needs to have a test written for it"
         | 
| 32 | 
            +
              end
         | 
| 33 | 
            +
             | 
| 34 | 
            +
              describe "#update_user" do
         | 
| 35 | 
            +
                it "needs to have a test written for it"
         | 
| 36 | 
            +
              end
         | 
| 37 | 
            +
             | 
| 38 | 
            +
              describe "#update_username" do
         | 
| 39 | 
            +
                it "needs to have a test written for it"
         | 
| 40 | 
            +
              end
         | 
| 41 | 
            +
            end
         | 
| @@ -0,0 +1,105 @@ | |
| 1 | 
            +
            require 'spec_helper'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            describe DiscourseApi::Client do
         | 
| 4 | 
            +
              subject { DiscourseApi::Client.new('http://localhost') }
         | 
| 5 | 
            +
             | 
| 6 | 
            +
              describe ".new" do
         | 
| 7 | 
            +
                it "requires a host argument" do
         | 
| 8 | 
            +
                  expect { DiscourseApi::Client.new }.to raise_error ArgumentError
         | 
| 9 | 
            +
                end
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                it "defaults api key to nil" do
         | 
| 12 | 
            +
                  expect(subject.api_key).to be_nil
         | 
| 13 | 
            +
                end
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                it "defaults api username to nil" do
         | 
| 16 | 
            +
                  expect(subject.api_username).to be_nil
         | 
| 17 | 
            +
                end
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                it "accepts an api key argument" do
         | 
| 20 | 
            +
                  client = DiscourseApi::Client.new('http://localhost', 'test')
         | 
| 21 | 
            +
                  expect(client.api_key).to eq('test')
         | 
| 22 | 
            +
                end
         | 
| 23 | 
            +
             | 
| 24 | 
            +
                it "accepts an api username argument" do
         | 
| 25 | 
            +
                  client = DiscourseApi::Client.new('http://localhost', 'test', 'test_user')
         | 
| 26 | 
            +
                  expect(client.api_username).to eq('test_user')
         | 
| 27 | 
            +
                end
         | 
| 28 | 
            +
              end
         | 
| 29 | 
            +
             | 
| 30 | 
            +
              describe "#api_key" do
         | 
| 31 | 
            +
                it "is publically accessible" do
         | 
| 32 | 
            +
                  subject.api_key = "test_key"
         | 
| 33 | 
            +
                  expect(subject.api_key).to eq("test_key")
         | 
| 34 | 
            +
                end
         | 
| 35 | 
            +
              end
         | 
| 36 | 
            +
             | 
| 37 | 
            +
              describe "#api_username" do
         | 
| 38 | 
            +
                it "is publically accessible" do
         | 
| 39 | 
            +
                  subject.api_username = "test_user"
         | 
| 40 | 
            +
                  expect(subject.api_username).to eq("test_user")
         | 
| 41 | 
            +
                end
         | 
| 42 | 
            +
              end
         | 
| 43 | 
            +
             | 
| 44 | 
            +
              describe "#host" do
         | 
| 45 | 
            +
                it "is publically readable" do
         | 
| 46 | 
            +
                  expect(subject.host).to eq("http://localhost")
         | 
| 47 | 
            +
                end
         | 
| 48 | 
            +
             | 
| 49 | 
            +
                it "is not publically writeable" do
         | 
| 50 | 
            +
                  expect(subject).not_to respond_to(:host=)
         | 
| 51 | 
            +
                end
         | 
| 52 | 
            +
              end
         | 
| 53 | 
            +
             | 
| 54 | 
            +
              describe "#connection" do
         | 
| 55 | 
            +
                it "looks like a Faraday connection" do
         | 
| 56 | 
            +
                  expect(subject.send(:connection)).to respond_to :run_request
         | 
| 57 | 
            +
                end
         | 
| 58 | 
            +
                it "memoizes the connection" do
         | 
| 59 | 
            +
                  c1, c2 = subject.send(:connection), subject.send(:connection)
         | 
| 60 | 
            +
                  expect(c1.object_id).to eq(c2.object_id)
         | 
| 61 | 
            +
                end
         | 
| 62 | 
            +
              end
         | 
| 63 | 
            +
             | 
| 64 | 
            +
              describe "#delete" do
         | 
| 65 | 
            +
                before do
         | 
| 66 | 
            +
                  stub_delete("http://localhost/test/delete").with(query: { deleted: "object" })
         | 
| 67 | 
            +
                end
         | 
| 68 | 
            +
                it "allows custom delete requests" do
         | 
| 69 | 
            +
                  subject.delete("/test/delete", { deleted: "object" })
         | 
| 70 | 
            +
                  expect(a_delete("http://localhost/test/delete").with(query: { deleted: "object" })).to have_been_made
         | 
| 71 | 
            +
                end
         | 
| 72 | 
            +
              end
         | 
| 73 | 
            +
             | 
| 74 | 
            +
              describe "#post" do
         | 
| 75 | 
            +
                before do
         | 
| 76 | 
            +
                  stub_post("http://localhost/test/post").with(body: { created: "object"})
         | 
| 77 | 
            +
                end
         | 
| 78 | 
            +
             | 
| 79 | 
            +
                it "allows custom post requests" do
         | 
| 80 | 
            +
                  subject.post("/test/post", { created: "object" })
         | 
| 81 | 
            +
                  expect(a_post("http://localhost/test/post").with(body: { created: "object"})).to have_been_made
         | 
| 82 | 
            +
                end
         | 
| 83 | 
            +
              end
         | 
| 84 | 
            +
             | 
| 85 | 
            +
              describe "#put" do
         | 
| 86 | 
            +
                before do
         | 
| 87 | 
            +
                  stub_put("http://localhost/test/put").with(body: { updated: "object" })
         | 
| 88 | 
            +
                end
         | 
| 89 | 
            +
                it "allows custom delete requests" do
         | 
| 90 | 
            +
                  subject.put("/test/put", { updated: "object" })
         | 
| 91 | 
            +
                  expect(a_put("http://localhost/test/put").with(body: { updated: "object" })).to have_been_made
         | 
| 92 | 
            +
                end
         | 
| 93 | 
            +
              end
         | 
| 94 | 
            +
             | 
| 95 | 
            +
              describe "#request" do
         | 
| 96 | 
            +
                it "catches Faraday errors" do
         | 
| 97 | 
            +
                  allow(subject).to receive(:connection).and_raise(Faraday::Error::ClientError.new("BOOM!"))
         | 
| 98 | 
            +
                  expect{subject.send(:request, :get, "/test")}.to raise_error DiscourseApi::Error
         | 
| 99 | 
            +
                end
         | 
| 100 | 
            +
                it "catches JSON::ParserError errors" do
         | 
| 101 | 
            +
                  allow(subject).to receive(:connection).and_raise(JSON::ParserError.new("unexpected token"))
         | 
| 102 | 
            +
                  expect{subject.send(:request, :get, "/test")}.to raise_error DiscourseApi::Error
         | 
| 103 | 
            +
                end
         | 
| 104 | 
            +
              end
         | 
| 105 | 
            +
            end
         |