| /* |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| */ |
| |
| package plugin |
| |
| type Reviewer interface { |
| Base |
| Review(content *ReviewContent) (result *ReviewResult) |
| } |
| |
| // ReviewContent is a struct that contains the content of a review |
| type ReviewContent struct { |
| // The type of the content, e.g. question, answer |
| ObjectType string |
| // The title of the content, only available for the question |
| Title string |
| // The content of the review, always available |
| Content string |
| // The tags of the content, only available for the question |
| Tags []string |
| // The author of the content |
| Author ReviewContentAuthor |
| // Review Language, the site language. e.g. en_US |
| // The plugin may reply the review result according to the language |
| Language string |
| // The user agent of the request web browser |
| UserAgent string |
| // The IP address of the request |
| IP string |
| } |
| |
| type ReviewContentAuthor struct { |
| // The user's reputation |
| Rank int |
| // The amount of questions that has approved |
| ApprovedQuestionAmount int64 |
| // The amount of answers that has approved |
| ApprovedAnswerAmount int64 |
| // 1:User 2:Admin 3:Moderator |
| Role int |
| } |
| |
| type ReviewStatus string |
| |
| const ( |
| ReviewStatusApproved ReviewStatus = "approved" |
| ReviewStatusDeleteDirectly ReviewStatus = "delete_directly" |
| ReviewStatusNeedReview ReviewStatus = "need_review" |
| ) |
| |
| // ReviewResult is a struct that contains the result of a review |
| type ReviewResult struct { |
| // If the review is approved |
| Approved bool |
| // The status of the review |
| ReviewStatus ReviewStatus |
| // The reason for the result |
| Reason string |
| } |
| |
| var ( |
| // CallReviewer is a function that calls all registered parsers |
| CallReviewer, |
| registerReviewer = MakePlugin[Reviewer](false) |
| ) |