11package ore .discourse
22
3- import scala .language .higherKinds
4-
53import scala .concurrent .duration ._
64
75import ore .discourse .AkkaDiscourseApi .AkkaDiscourseSettings
@@ -13,9 +11,9 @@ import akka.stream.Materializer
1311import cats .data .EitherT
1412import cats .effect .Concurrent
1513import cats .effect .concurrent .Ref
16- import cats .instances .either ._
1714import cats .syntax .all ._
1815import com .typesafe .scalalogging
16+ import com .typesafe .scalalogging .Logger
1917import io .circe ._
2018
2119class AkkaDiscourseApi [F [_]] private (
@@ -28,16 +26,13 @@ class AkkaDiscourseApi[F[_]] private (
2826) extends AkkaClientApi [F , cats.Id , DiscourseError ](" Discourse" , counter, settings)
2927 with DiscourseApi [F ] {
3028
31- protected val Logger = scalalogging.Logger (" DiscourseApi" )
29+ protected val Logger : Logger = scalalogging.Logger (" DiscourseApi" )
3230
33- private def startParams (poster : Option [String ]) = Seq (
34- " api_key " -> settings.apiKey,
35- " api_username " -> poster.getOrElse(settings.adminUser)
31+ private def authHeaders (poster : Option [String ]) = Seq (
32+ `Api-Key`( settings.apiKey) ,
33+ `Api-Username`( poster.getOrElse(settings.adminUser) )
3634 )
3735
38- private def apiQuery (poster : Option [String ]) =
39- Uri .Query (" api_key" -> settings.apiKey, " api_username" -> poster.getOrElse(settings.adminUser))
40-
4136 override def createStatusError (statusCode : StatusCode , message : Option [String ]): DiscourseError = statusCode match {
4237 case StatusCodes .TooManyRequests =>
4338 message match {
@@ -89,7 +84,7 @@ class AkkaDiscourseApi[F[_]] private (
8984 content : String ,
9085 categoryId : Option [Int ]
9186 ): F [Either [DiscourseError , DiscoursePost ]] = {
92- val base = startParams( Some (poster)) ++ Seq (
87+ val base = Seq (
9388 " title" -> title,
9489 " raw" -> content
9590 )
@@ -100,13 +95,14 @@ class AkkaDiscourseApi[F[_]] private (
10095 HttpRequest (
10196 HttpMethods .POST ,
10297 apiUri(_ / " posts.json" ),
98+ headers = authHeaders(Some (poster)),
10399 entity = FormData (withCat : _* ).toEntity
104100 )
105101 )
106102 }
107103
108104 override def createPost (poster : String , topicId : Int , content : String ): F [Either [DiscourseError , DiscoursePost ]] = {
109- val params = startParams( Some (poster)) ++ Seq (
105+ val params = Seq (
110106 " topic_id" -> topicId.toString,
111107 " raw" -> content
112108 )
@@ -115,6 +111,7 @@ class AkkaDiscourseApi[F[_]] private (
115111 HttpRequest (
116112 HttpMethods .POST ,
117113 apiUri(_ / " posts.json" ),
114+ headers = authHeaders(Some (poster)),
118115 entity = FormData (params : _* ).toEntity
119116 )
120117 )
@@ -128,7 +125,7 @@ class AkkaDiscourseApi[F[_]] private (
128125 ): F [Either [DiscourseError , Unit ]] = {
129126 if (title.isEmpty && categoryId.isEmpty) F .pure(Right (()))
130127 else {
131- val base = startParams( Some (poster)) :+ (" topic_id" -> topicId.toString)
128+ val base = Seq (" topic_id" -> topicId.toString)
132129
133130 val withTitle = title.fold(base)(t => base :+ (" title" -> t))
134131 val withCat = categoryId.fold(withTitle)(c => withTitle :+ (" category_id" -> c.toString))
@@ -137,20 +134,20 @@ class AkkaDiscourseApi[F[_]] private (
137134 HttpRequest (
138135 HttpMethods .PUT ,
139136 apiUri(_ / " t" / " -" / s " $topicId.json " ),
137+ headers = authHeaders(Some (poster)),
140138 entity = FormData (withCat : _* ).toEntity
141139 )
142140 ).map(_.void)
143141 }
144142 }
145143
146144 override def updatePost (poster : String , postId : Int , content : String ): F [Either [DiscourseError , Unit ]] = {
147- val params = startParams(Some (poster)) :+ (" post[raw]" -> content)
148-
149145 makeUnmarshallRequestEither[Json ](
150146 HttpRequest (
151147 HttpMethods .PUT ,
152148 apiUri(_ / " posts" / s " $postId.json " ),
153- entity = FormData (params : _* ).toEntity
149+ headers = authHeaders(Some (poster)),
150+ entity = FormData (" post[raw]" -> content).toEntity
154151 )
155152 ).map(_.void)
156153 }
@@ -161,7 +158,8 @@ class AkkaDiscourseApi[F[_]] private (
161158 makeRequest(
162159 HttpRequest (
163160 HttpMethods .DELETE ,
164- apiUri(_ / " t" / s " $topicId.json " ).withQuery(apiQuery(Some (poster)))
161+ apiUri(_ / " t" / s " $topicId.json " ),
162+ headers = authHeaders(Some (poster))
165163 )
166164 )
167165 )
0 commit comments