View Javadoc
1   /**
2    * Copyright (c) 2013-2023, jcabi.com
3    * All rights reserved.
4    *
5    * Redistribution and use in source and binary forms, with or without
6    * modification, are permitted provided that the following conditions
7    * are met: 1) Redistributions of source code must retain the above
8    * copyright notice, this list of conditions and the following
9    * disclaimer. 2) Redistributions in binary form must reproduce the above
10   * copyright notice, this list of conditions and the following
11   * disclaimer in the documentation and/or other materials provided
12   * with the distribution. 3) Neither the name of the jcabi.com nor
13   * the names of its contributors may be used to endorse or promote
14   * products derived from this software without specific prior written
15   * permission.
16   *
17   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18   * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT
19   * NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
20   * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
21   * THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
22   * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
23   * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
24   * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
25   * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
26   * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
27   * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
28   * OF THE POSSIBILITY OF SUCH DAMAGE.
29   */
30  package com.jcabi.github;
31  
32  /**
33   * Reaction for issue / comment.
34   *
35   * @author Paulo Lobo (pauloeduardolobo@gmail.com)
36   * @version $Id: 1a78f719e735d92f58f33bf928b7f6a23b311d51 $
37   * @since 1.0
38   * @see <a href="https://developer.github.com/v3/reactions">Reactions API</a>
39   * @todo #1469:30min Add support to team discussion and team discussion comments
40   *  The API does not supports team discussion and team discussion comments (
41   *  https://developer.github.com/changes/2018-02-07-team-discussions-api/ )
42   *  After this implementation, add reaction support to these elements.
43   */
44  public interface Reaction {
45  
46      /**
47       * Thumbs up reaction constant.
48       */
49      String THUMBSUP = "+1";
50  
51      /**
52       * Thumbs down reaction constant.
53       */
54      String THUMBSDOWN = "-1";
55  
56      /**
57       * Laugh reaction constant.
58       */
59      String LAUGH = "laugh";
60  
61      /**
62       * Confused reaction constant.
63       */
64      String CONFUSED = "confused";
65  
66      /**
67       * Heart reaction constant.
68       */
69      String HEART = "heart";
70  
71      /**
72       * Hooray reaction constant.
73       */
74      String HOORAY = "hooray";
75  
76      /**
77       * The reaction type.
78       * @return The type of the reaction.
79       */
80      String type();
81  
82      /**
83       * Simple reaction.
84       */
85      final class Simple implements Reaction {
86  
87          /**
88           * Reaction type.
89           */
90          private final String type;
91  
92          /**
93           * Constructor.
94           * @param reaction Reaction type.
95           */
96          Simple(final String reaction) {
97              this.type = reaction;
98          }
99  
100         /**
101          * Returns the reaction type.
102          * @return Reaction type.
103          */
104         public String type() {
105             return this.type;
106         }
107 
108     }
109 }