How to acccess urls defined in a plugin publicly?

AI-generated summary

The discussion revolves around accessing URLs defined in a Discourse plugin publicly. Siddhu_Dhangar initially faced an issue where defined URLs were not accessible publicly, receiving a “page doesn’t exist” error. After some guidance from fzngagan to look into Rails routes and engines, Siddhu_Dhangar discovered the solution by defining GET URLs in the routes.rb file and creating corresponding methods in the controller. For example, defining get "/getbadges" => "categories#getBadges" and creating a getBadges method in the categories_controller.rb file. After implementing this solution, Siddhu_Dhangar was able to access all defined GET URLs in the plugin publicly, resolving the issue.

I added below code in plugin.rb file.

  DiscourseRatings::Engine.routes.draw do
    post "/rate" => "rating#rate"
    post "/remove" => "rating#remove"
    get '/getratings' => 'rating#getRatings'
  end

I am able to use get “ratings” url which is /rating/getratings in AJAX Call. but when i use this url with t2.metastudio.org domain name e.g https://t2.metastudio.org/rating/getratings. discourse says

Oops! That page doesn’t exist or you may have to login to see it!

For example i can access categories data in using following url which is https://t2.metastudio.org/categories.json
likewise i want to access plugins get urls.

Could you tell me how to define urls in a plugin which are accessible publicly ?

Basically, you need to look up how the rails routes and engines work. Routes map the urls with rails controllers’ actions. Also do refer to this guide. Its my favourite discoursd tutorial. How to create a Discourse plugin – kleinfreund.de

I am able to access newly defined get url which is get “/getbadges” => “categories#getBadges”

I defined GET url which is get “/getbadges” => “categories#getBadges” in routes.rb file.

and below getBadges method in categories_controller.rb file

def getBadges
	json_data = {"name":"siddhu"}
	render json: json_data
end

I ran local disocurse instance and try to access defined get url http://localhost:9292/getbadges.
I am able to acess this get url but same thing i did in GitHub - siddhudhangar/discourse-ratings · GitHub plugin. here it is not working, Can you help me out for solving this issue ?

Below i gave my github url, here you can check my code and let me know if i have made any mistakes.
https://github.com/siddhudhangar/discourse-ratings

I am able to access all GET url which i defined into the plugin. Issue is resolved now. thanks.