@@ -12,7 +12,7 @@ import (
1212
1313func getNews () (string , error ) {
1414 log .Printf ("User requested news\n " )
15- baseURL := "https://api.currentsapi.services/v1/latest-news "
15+ baseURL := "https://newsapi.org/v2/top-headlines "
1616
1717 // Construct the URL with query parameters
1818 u , err := url .Parse (baseURL )
@@ -22,12 +22,20 @@ func getNews() (string, error) {
2222
2323 // Add query parameters
2424 params := url.Values {}
25- params .Add ("language" , "en" )
26- params .Add ("apiKey" , storage .Setting .NewsAPIToken ) // Use the API key from settings
27- u .RawQuery = params .Encode () // Encode and attach parameters
25+ params .Add ("country" , "us" )
26+ u .RawQuery = params .Encode ()
27+
28+ req , err := http .NewRequest ("GET" , u .String (), nil )
29+ if err != nil {
30+ return "" , fmt .Errorf ("failed to create new request: %w" , err )
31+ }
32+
33+ req .Header .Add ("X-Api-Key" , storage .Setting .NewsAPIToken )
2834
2935 // Make the GET request
30- resp , err := http .Get (u .String ())
36+ client := & http.Client {}
37+ resp , err := client .Do (req )
38+
3139 if err != nil {
3240 return "" , fmt .Errorf ("failed to make GET request: %w" , err )
3341 }
@@ -55,7 +63,7 @@ func getNews() (string, error) {
5563
5664func searchNews (args SearchNewsArgs ) (string , error ) {
5765 log .Printf ("User requested search news\n " )
58- baseURL := "https://api.currentsapi.services/v1/search "
66+ baseURL := "https://newsapi.org/v2/everything "
5967
6068 // Construct the URL with query parameters
6169 u , err := url .Parse (baseURL )
@@ -65,21 +73,36 @@ func searchNews(args SearchNewsArgs) (string, error) {
6573 // Add query parameters
6674 params := url.Values {}
6775 params .Add ("language" , "en" )
68- params .Add ("apiKey" , storage .Setting .NewsAPIToken ) // Use the API key from settings
69- params .Add ("end_date" , args .EndDate )
70- params .Add ("type" , args .NewsType )
71- params .Add ("country" , args .Country )
72- params .Add ("category" , args .Category )
73- params .Add ("page_number" , strconv .Itoa (args .PageNumber ))
74- params .Add ("domain" , args .Domain )
75- params .Add ("domains_not" , args .DomainsNot )
76- params .Add ("keywords" , args .Keywords )
77- params .Add ("page_size" , strconv .Itoa (args .PageSize ))
78- params .Add ("limit" , strconv .Itoa (args .Limit ))
76+ params .Add ("to" , args .EndDate )
77+
78+ if args .PageNumber <= 0 {
79+ args .PageNumber = 1
80+ }
81+
82+ params .Add ("page" , strconv .Itoa (args .PageNumber ))
83+ params .Add ("domains" , args .Domain )
84+ params .Add ("excludeDomains" , args .DomainsNot )
85+ params .Add ("q" , args .Keywords )
86+
87+ if args .PageSize <= 0 {
88+ args .PageSize = 10
89+ }
90+
91+ params .Add ("pageSize" , strconv .Itoa (args .PageSize ))
7992 u .RawQuery = params .Encode ()
8093
8194 // Make the GET request
82- resp , err := http .Get (u .String ())
95+ req , err := http .NewRequest ("GET" , u .String (), nil )
96+ if err != nil {
97+ return "" , fmt .Errorf ("failed to create new request: %w" , err )
98+ }
99+
100+ req .Header .Add ("X-Api-Key" , storage .Setting .NewsAPIToken )
101+
102+ // Make the GET request
103+ client := & http.Client {}
104+ resp , err := client .Do (req )
105+
83106 if err != nil {
84107 return "" , fmt .Errorf ("failed to make GET request: %w" , err )
85108 }
@@ -92,6 +115,12 @@ func searchNews(args SearchNewsArgs) (string, error) {
92115
93116 // Check for successful response status code
94117 if resp .StatusCode != http .StatusOK {
118+ body , err := io .ReadAll (resp .Body )
119+ if err != nil {
120+ return "" , fmt .Errorf ("failed to read response body: %w" , err )
121+ }
122+
123+ log .Println ("News response: " + string (body ))
95124 return "" , fmt .Errorf ("API request failed with status code: %d" , resp .StatusCode )
96125 }
97126
0 commit comments