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 }