Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F12552767
search_operation.ex
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Award Token
Flag For Later
Size
5 KB
Referenced Files
None
Subscribers
None
search_operation.ex
View Options
# Pleroma: A lightweight social networking server
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
# SPDX-License-Identifier: AGPL-3.0-only
defmodule
Pleroma.Web.ApiSpec.SearchOperation
do
alias
OpenApiSpex.Operation
alias
OpenApiSpex.Schema
alias
Pleroma.Web.ApiSpec.AccountOperation
alias
Pleroma.Web.ApiSpec.Schemas.Account
alias
Pleroma.Web.ApiSpec.Schemas.BooleanLike
alias
Pleroma.Web.ApiSpec.Schemas.FlakeID
alias
Pleroma.Web.ApiSpec.Schemas.Status
alias
Pleroma.Web.ApiSpec.Schemas.Tag
import
Pleroma.Web.ApiSpec.Helpers
def
open_api_operation
(
action
)
do
operation
=
String
.
to_existing_atom
(
"
#{
action
}
_operation"
)
apply
(
__MODULE__
,
operation
,
[])
end
# Note: `with_relationships` param is not supported (PleromaFE uses this op for autocomplete)
def
account_search_operation
do
%
Operation
{
tags
:
[
"Search"
],
summary
:
"Search for matching accounts by username or display name"
,
operationId
:
"SearchController.account_search"
,
parameters
:
[
Operation
.
parameter
(
:q
,
:query
,
%
Schema
{
type
:
:string
},
"What to search for"
,
required
:
true
),
Operation
.
parameter
(
:limit
,
:query
,
%
Schema
{
type
:
:integer
,
default
:
40
},
"Maximum number of results"
),
Operation
.
parameter
(
:resolve
,
:query
,
%
Schema
{
allOf
:
[
BooleanLike
],
default
:
false
},
"Attempt WebFinger lookup. Use this when `q` is an exact address."
),
Operation
.
parameter
(
:following
,
:query
,
%
Schema
{
allOf
:
[
BooleanLike
],
default
:
false
},
"Only include accounts that the user is following"
)
],
responses
:
%{
200
=>
Operation
.
response
(
"Array of Account"
,
"application/json"
,
AccountOperation
.
array_of_accounts
()
)
}
}
end
def
search_operation
do
%
Operation
{
tags
:
[
"Search"
],
summary
:
"Search results"
,
security
:
[%{
"oAuth"
=>
[
"read:search"
]}],
operationId
:
"SearchController.search"
,
deprecated
:
true
,
parameters
:
[
Operation
.
parameter
(
:account_id
,
:query
,
FlakeID
.
schema
(),
"If provided, statuses returned will be authored only by this account"
),
Operation
.
parameter
(
:type
,
:query
,
%
Schema
{
type
:
:string
,
enum
:
[
"accounts"
,
"hashtags"
,
"statuses"
]},
"Search type"
),
Operation
.
parameter
(
:q
,
:query
,
%
Schema
{
type
:
:string
},
"The search query"
,
required
:
true
),
Operation
.
parameter
(
:resolve
,
:query
,
%
Schema
{
allOf
:
[
BooleanLike
],
default
:
false
},
"Attempt WebFinger lookup"
),
Operation
.
parameter
(
:following
,
:query
,
%
Schema
{
allOf
:
[
BooleanLike
],
default
:
false
},
"Only include accounts that the user is following"
),
Operation
.
parameter
(
:offset
,
:query
,
%
Schema
{
type
:
:integer
},
"Offset"
),
with_relationships_param
()
|
pagination_params
()
],
responses
:
%{
200
=>
Operation
.
response
(
"Results"
,
"application/json"
,
results
())
}
}
end
def
search2_operation
do
%
Operation
{
tags
:
[
"Search"
],
summary
:
"Search results"
,
security
:
[%{
"oAuth"
=>
[
"read:search"
]}],
operationId
:
"SearchController.search2"
,
parameters
:
[
Operation
.
parameter
(
:account_id
,
:query
,
FlakeID
.
schema
(),
"If provided, statuses returned will be authored only by this account"
),
Operation
.
parameter
(
:type
,
:query
,
%
Schema
{
type
:
:string
,
enum
:
[
"accounts"
,
"hashtags"
,
"statuses"
]},
"Search type"
),
Operation
.
parameter
(
:q
,
:query
,
%
Schema
{
type
:
:string
},
"What to search for"
,
required
:
true
),
Operation
.
parameter
(
:resolve
,
:query
,
%
Schema
{
allOf
:
[
BooleanLike
],
default
:
false
},
"Attempt WebFinger lookup"
),
Operation
.
parameter
(
:following
,
:query
,
%
Schema
{
allOf
:
[
BooleanLike
],
default
:
false
},
"Only include accounts that the user is following"
),
with_relationships_param
()
|
pagination_params
()
],
responses
:
%{
200
=>
Operation
.
response
(
"Results"
,
"application/json"
,
results2
())
}
}
end
defp
results2
do
%
Schema
{
title
:
"SearchResults"
,
type
:
:object
,
properties
:
%{
accounts
:
%
Schema
{
type
:
:array
,
items
:
Account
,
description
:
"Accounts which match the given query"
},
statuses
:
%
Schema
{
type
:
:array
,
items
:
Status
,
description
:
"Statuses which match the given query"
},
hashtags
:
%
Schema
{
type
:
:array
,
items
:
Tag
,
description
:
"Hashtags which match the given query"
}
},
example
:
%{
"accounts"
=>
[
Account
.
schema
()
.
example
],
"statuses"
=>
[
Status
.
schema
()
.
example
],
"hashtags"
=>
[
Tag
.
schema
()
.
example
]
}
}
end
defp
results
do
%
Schema
{
title
:
"SearchResults"
,
type
:
:object
,
properties
:
%{
accounts
:
%
Schema
{
type
:
:array
,
items
:
Account
,
description
:
"Accounts which match the given query"
},
statuses
:
%
Schema
{
type
:
:array
,
items
:
Status
,
description
:
"Statuses which match the given query"
},
hashtags
:
%
Schema
{
type
:
:array
,
items
:
%
Schema
{
type
:
:string
},
description
:
"Hashtags which match the given query"
}
},
example
:
%{
"accounts"
=>
[
Account
.
schema
()
.
example
],
"statuses"
=>
[
Status
.
schema
()
.
example
],
"hashtags"
=>
[
"cofe"
]
}
}
end
end
File Metadata
Details
Attached
Mime Type
text/x-ruby
Expires
Sat, Nov 15, 1:06 AM (1 d, 11 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
632273
Default Alt Text
search_operation.ex (5 KB)
Attached To
Mode
rPUBE pleroma-upstream
Attached
Detach File
Event Timeline
Log In to Comment