Нужен API для жалоб на сообщение
От: r0nd  
Дата: 07.02.24 12:30
Оценка: -2 :))) :))
Коллеги,

а сложно будет добавить POST-запрос ws/rs-API для жалоб violationreport/reportviolation/{:messageId} на произвольное сообщение? Чтоб можно было из толстого клиента слать?
Ну и заодно GET-запрос, аналогичный представлению в /account/violationreports?
...<< Dementor 1.5.4 ✪ Lets Play a Game ⚀⚁⚂⚄⚅>>
Re: Нужен API для жалоб на сообщение
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 16.02.24 23:05
Оценка: 9 (1)
Здравствуйте, r0nd, Вы писали:

R>а сложно будет добавить POST-запрос ws/rs-API для жалоб violationreport/reportviolation/{:messageId} на произвольное сообщение? Чтоб можно было из толстого клиента слать?

R>Ну и заодно GET-запрос, аналогичный представлению в /account/violationreports?

Список своих жалоб

GET /rs/violationreports
обязательный параметр int userid
необязательные bool withClosed = false, int? offset = null, int? limit = null

Список стандартных причин

GET /rs/violationreports/reasons

Отправка жалобы

POST /rs/violationreports, в теле Json вида
{
  "messageId": 123,
  "reason": "..."
}


Последний метод не проверял, времени совсем в обрез, ночью вон правки делаю.
AVK Blog
Re[3]: Нужен API для жалоб на сообщение
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 10.03.24 18:26
Оценка: 2 (1)
Здравствуйте, r0nd, Вы писали:

R>
  • Параметр limit в запросе какое максимальное значение может иметь?

    1000

    R>
  • Почему многие обработанные запросы с вердиктом (они еще отображаются в таблице профиля, например) не отображаются в методе WS GetNewViolations?

    Не замечал такого.
  • AVK Blog
    Re[5]: Нужен API для жалоб на сообщение
    От: AndrewVK Россия http://blogs.rsdn.org/avk
    Дата: 11.03.24 11:46
    Оценка: 2 (1)
    Здравствуйте, r0nd, Вы писали:

    R>Нужно выбирать старшее из списка значений, который мне пришел?


    Младшее. И не из тех что пришли, а из тех что обработаны и сохранены в локальную БД.
    Логика методов WS не такая как в REST, там, по сути, тебе отдаются change feeds, которые ты должен самостоятельно на клиенте трекать. А rowversion это монотонно возрастающий таймстамп, чтобы понять на какой точке фида ты остановился и с какой тебе при следующем запросе нужно продолжать.

    R> Это все еще аналог "rowId" или это "id" из нового REST /rs/violationreports?


    Первое.
    AVK Blog
    Re[3]: Нужен API для жалоб на сообщение
    От: AndrewVK Россия http://blogs.rsdn.org/avk
    Дата: 14.03.24 12:32
    Оценка: 1 (1)
    Здравствуйте, r0nd, Вы писали:

    R>С этим методом возникли проблемы на стороне сервера:


    Теперь должно работать
    AVK Blog
    Re[3]: Нужен API для жалоб на сообщение
    От: AndrewVK Россия http://blogs.rsdn.org/avk
    Дата: 17.02.24 08:59
    Оценка: +1
    Здравствуйте, r0nd, Вы писали:

    R>Супер, вот это вещь! Первые два метода проверил — работают отлично. По последнему есть вопрос, а куда reasonId вставлять (если POST для стандартного «reason» из списка)?


    Никуда. ID нужен только для редактирования самого списка админами. В репорте это текстовое поле, стандартные причины — просто подсказка.
    AVK Blog
    Re[3]: Нужен API для жалоб на сообщение
    От: AndrewVK Россия http://blogs.rsdn.org/avk
    Дата: 27.03.24 12:55
    Оценка: :)
    Здравствуйте, r0nd, Вы писали:

    R>Сложно будет сделать API для удаления (либо самостоятельного закрытия) ошибочной жалобы по ID? По причине висят «глухарем», либо ошибочные


    Наверное нет, не сложно.
    AVK Blog
    Re[2]: Нужен API для жалоб на сообщение
    От: r0nd  
    Дата: 16.02.24 23:48
    Оценка:
    On Feb 17, 2024, 2:05 AM, AndrewVK <5161@users.rsdn.org> wrote:

    AVK>POST /rs/violationreports, в теле Json вида

    AVK>
    AVK>{
    AVK>  "messageId": 123,
    AVK>  "reason": "..."
    AVK>}
    AVK>


    Супер, вот это вещь! Первые два метода проверил — работают отлично. По последнему есть вопрос, а куда reasonId вставлять (если POST для стандартного «reason» из списка)?

    Например для стандартного reason («Хамское поведение, грубость, неуважительное отношение к участникам форума»), какой будет?
    {
      "messageId": 123,
      "reasonId": 2
    }
    {
      "messageId": 123,
      "reason": "Хамское поведение, грубость, неуважительное отношение к участникам форума"
    }
    ...<< Dementor 1.6.1 ✪ Lets Play a Game ⚀⚀⚂⚃⚅>>
    Re[2]: Нужен API для жалоб на сообщение
    От: r0nd  
    Дата: 10.03.24 15:35
    Оценка:
    On Feb 17, 2024, 2:05 AM, AndrewVK <5161@users.rsdn.org> wrote:

    AVK> необязательные bool withClosed = false, int? offset = null, int? limit = null


    Пару вопросов по этому вызову:

    ❧ “Do not wait for the perfect time and place to enter, for you are already onstage.”
    Re[2]: Нужен API для жалоб на сообщение
    От: Osaka  
    Дата: 10.03.24 17:58
    Оценка:
    AVK>Список своих жалоб
    Пользуясь случаем, спрошу: Можно ли в статистике юзера показывать кол-во жалоб юзера, и кол-во жалоб на юзера, в разрезе причин? (Включая значения не из стандартного списка)
    Отредактировано 10.03.2024 18:28 AndrewVK . Предыдущая версия . Еще …
    Отредактировано 10.03.2024 18:27 AndrewVK . Предыдущая версия .
    Re[3]: Нужен API для жалоб на сообщение
    От: AndrewVK Россия http://blogs.rsdn.org/avk
    Дата: 10.03.24 18:29
    Оценка:
    Здравствуйте, Osaka, Вы писали:

    AVK>>Список своих жалоб

    O>Пользуясь случаем, спрошу: Можно ли в статистике юзера показывать кол-во жалоб юзера, и кол-во жалоб на юзера, в разрезе причин? (Включая значения не из стандартного списка)

    Нет. Это создаст лишнюю нагрузку без серьезных причин на то.
    AVK Blog
    Re[4]: Нужен API для жалоб на сообщение
    От: r0nd  
    Дата: 10.03.24 19:41
    Оценка:
    On Mar 10, 2024, 9:26 PM, AndrewVK <5161@users.rsdn.org> wrote:

    AVK>Не замечал такого.


    Хорошо, буду тогда проверять, тогда вопрос — в ответе метода SOAP GetNewViolations мы шлем RowVersion внутри каждого элемента массива Violations (см. ниже), тогда как в запросе мы шлем RowVersion один раз (один раз на список форумов), почему шлем в каждом элементе массива в ответе, как это значение потом использовать? Нужно выбирать старшее из списка значений, который мне пришел? Это все еще аналог "rowId" или это "id" из нового REST /rs/violationreports?

    <?xml version="1.0" encoding="utf-8"?>
    <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
      <soap:Body>
        <GetNewViolationsResponse xmlns="http://rsdn.ru/Janus/">
          <GetNewViolationsResult>
            <Violations>
              <JanusViolationInfo>
                <MessageID>100</MessageID>
                <Reason>string</Reason>
                <CreatedOn>2022-10-17T16:50:35.729Z</CreatedOn>
                <PenaltyType>Ban</PenaltyType>
                <RowVersion>Y29udGVudA==</RowVersion>
              </JanusViolationInfo>
            </Violations>
          </GetNewViolationsResult>
        </GetNewViolationsResponse>
      </soap:Body>
    </soap:Envelope>

    ❧ “If you change the way you look at things, the things you look at change.” — Wayne Dyer
    Re[2]: Нужен API для жалоб на сообщение
    От: r0nd  
    Дата: 14.03.24 00:31
    Оценка:
    On Feb 17, 2024, 2:05 AM, AndrewVK <5161@users.rsdn.org> wrote:

    AVK>Отправка жалобы

    AVK>Последний метод не проверял, времени совсем в обрез, ночью вон правки делаю.

    Шлю POST https://rsdn.org/rs/violationreports
    {
        "messageId": 8*******,
        "reason": "Link dropping"
    }


    С этим методом возникли проблемы на стороне сервера:
      Response/500

    Object reference not set to an instance of an object.

    Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

    Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.

    Source Error:

    An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

    Stack Trace:

    [NullReferenceException: Object reference not set to an instance of an object.]
       Rsdn.Web.Controllers.<AddNewReport>d__3.MoveNext() +439
       System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() +32
       System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +62
       System.Web.Mvc.Async.TaskAsyncActionDescriptor.EndExecute(IAsyncResult asyncResult) +92
       System.Web.Mvc.Async.<>c__DisplayClass8_0.<BeginInvokeAsynchronousActionMethod>b__1(IAsyncResult asyncResult) +22
       System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult) +42
       System.Web.Mvc.Async.<>c__DisplayClass11_0.<InvokeActionMethodFilterAsynchronouslyRecursive>b__0() +80
       System.Web.Mvc.Async.<>c__DisplayClass11_2.<InvokeActionMethodFilterAsynchronouslyRecursive>b__2() +396
       System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethodWithFilters(IAsyncResult asyncResult) +42
       System.Web.Mvc.Async.<>c__DisplayClass3_6.<BeginInvokeAction>b__4() +50
       System.Web.Mvc.Async.<>c__DisplayClass3_1.<BeginInvokeAction>b__1(IAsyncResult asyncResult) +188
       System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult) +38
       System.Web.Mvc.<>c.<BeginExecuteCore>b__152_1(IAsyncResult asyncResult, ExecuteCoreState innerState) +29
       System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +73
       System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) +52
       System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +39
       System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) +38
       System.Web.Mvc.<>c.<BeginProcessRequest>b__20_1(IAsyncResult asyncResult, ProcessRequestState innerState) +43
       System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +73
       System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +38
       System.Web.CallHandlerExecutionStep.InvokeEndHandler(IAsyncResult ar) +241
       System.Web.CallHandlerExecutionStep.OnAsyncHandlerCompletion(IAsyncResult ar) +172


    ❧ “Learn as if you will live forever, live like you will die tomorrow.” — Mahatma Gandhi
    Re[2]: Нужен API для жалоб на сообщение
    От: r0nd  
    Дата: 27.03.24 09:22
    Оценка:
    On Feb 17, 2024, 2:05 AM, AndrewVK <5161@users.rsdn.org> wrote:

    AVK>Последний метод не проверял, времени совсем в обрез, ночью вон правки делаю.


    Сложно будет сделать API для удаления (либо самостоятельного закрытия) ошибочной жалобы по ID? По причине висят «глухарем», либо ошибочные

    ❧ “You can never leave footprints that last if you are always walking on tiptoe.” — Leymah Gbowee
     
    Подождите ...
    Wait...
    Пока на собственное сообщение не было ответов, его можно удалить.