Add authentication
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
package top.fatweb.api.util
|
||||
|
||||
import org.springframework.web.bind.annotation.RequestMapping
|
||||
import org.springframework.web.servlet.mvc.condition.RequestCondition
|
||||
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping
|
||||
import top.fatweb.api.annotation.ApiVersion
|
||||
import java.lang.reflect.Method
|
||||
|
||||
class ApiResponseMappingHandlerMapping : RequestMappingHandlerMapping() {
|
||||
private val versionFlag = "{apiVersion}"
|
||||
|
||||
private fun createCondition(clazz: Class<*>): RequestCondition<ApiVersionCondition>? {
|
||||
val classRequestMapping = clazz.getAnnotation(RequestMapping::class.java)
|
||||
classRequestMapping ?: let { return null }
|
||||
val mappingUrlBuilder = StringBuilder()
|
||||
if (classRequestMapping.value.isNotEmpty()) {
|
||||
mappingUrlBuilder.append(classRequestMapping.value[0])
|
||||
}
|
||||
val mappingUrl = mappingUrlBuilder.toString()
|
||||
if (!mappingUrl.contains(versionFlag)) {
|
||||
return null
|
||||
}
|
||||
val apiVersion = clazz.getAnnotation(ApiVersion::class.java)
|
||||
|
||||
return if (apiVersion == null) ApiVersionCondition(1) else ApiVersionCondition(apiVersion.version)
|
||||
}
|
||||
|
||||
override fun getCustomMethodCondition(method: Method): RequestCondition<*>? = createCondition(method.javaClass)
|
||||
|
||||
override fun getCustomTypeCondition(handlerType: Class<*>): RequestCondition<*>? = createCondition(handlerType)
|
||||
}
|
||||
Reference in New Issue
Block a user