-----------------------------------------------------------------------------
-- |
-- License     :  BSD-3-Clause
-- Maintainer  :  Oleg Grenrus <oleg.grenrus@iki.fi>
--
-- The Github Search API, as described at
-- <http://developer.github.com/v3/search/>.
module GitHub.Endpoints.Search(
    searchReposR,
    searchCodeR,
    searchIssuesR,
    searchUsersR,
    module GitHub.Data,
    ) where

import GitHub.Data
import GitHub.Internal.Prelude
import Prelude ()

import qualified Data.Text.Encoding as TE

-- | Search repositories.
-- See <https://developer.github.com/v3/search/#search-repositories>
searchReposR :: Text -> Request k (SearchResult Repo)
searchReposR :: Text -> Request k (SearchResult Repo)
searchReposR Text
searchString =
    Paths -> QueryString -> Request k (SearchResult Repo)
forall (mt :: RW) a. Paths -> QueryString -> Request mt a
query [Text
"search", Text
"repositories"] [(ByteString
"q", ByteString -> Maybe ByteString
forall a. a -> Maybe a
Just (ByteString -> Maybe ByteString) -> ByteString -> Maybe ByteString
forall a b. (a -> b) -> a -> b
$ Text -> ByteString
TE.encodeUtf8 Text
searchString)]

-- | Search code.
-- See <https://developer.github.com/v3/search/#search-code>
searchCodeR :: Text -> Request k (SearchResult Code)
searchCodeR :: Text -> Request k (SearchResult Code)
searchCodeR Text
searchString =
    Paths -> QueryString -> Request k (SearchResult Code)
forall (mt :: RW) a. Paths -> QueryString -> Request mt a
query [Text
"search", Text
"code"] [(ByteString
"q", ByteString -> Maybe ByteString
forall a. a -> Maybe a
Just (ByteString -> Maybe ByteString) -> ByteString -> Maybe ByteString
forall a b. (a -> b) -> a -> b
$ Text -> ByteString
TE.encodeUtf8 Text
searchString)]

-- | Search issues.
-- See <https://developer.github.com/v3/search/#search-issues>
searchIssuesR :: Text -> Request k (SearchResult Issue)
searchIssuesR :: Text -> Request k (SearchResult Issue)
searchIssuesR Text
searchString =
    Paths -> QueryString -> Request k (SearchResult Issue)
forall (mt :: RW) a. Paths -> QueryString -> Request mt a
query [Text
"search", Text
"issues"] [(ByteString
"q", ByteString -> Maybe ByteString
forall a. a -> Maybe a
Just (ByteString -> Maybe ByteString) -> ByteString -> Maybe ByteString
forall a b. (a -> b) -> a -> b
$ Text -> ByteString
TE.encodeUtf8 Text
searchString)]

-- | Search users.
-- See <https://developer.github.com/v3/search/#search-code>
searchUsersR :: Text -> Request k (SearchResult SimpleUser)
searchUsersR :: Text -> Request k (SearchResult SimpleUser)
searchUsersR Text
searchString =
  Paths -> QueryString -> Request k (SearchResult SimpleUser)
forall (mt :: RW) a. Paths -> QueryString -> Request mt a
query [Text
"search", Text
"users"] [(ByteString
"q", ByteString -> Maybe ByteString
forall a. a -> Maybe a
Just (ByteString -> Maybe ByteString) -> ByteString -> Maybe ByteString
forall a b. (a -> b) -> a -> b
$ Text -> ByteString
TE.encodeUtf8 Text
searchString)]