GHContentSearchBuilder.java

  1. package org.kohsuke.github;

  2. // TODO: Auto-generated Javadoc
  3. /**
  4.  * Search code for {@link GHContent}.
  5.  *
  6.  * @author Kohsuke Kawaguchi
  7.  * @see GitHub#searchContent() GitHub#searchContent()
  8.  */
  9. public class GHContentSearchBuilder extends GHSearchBuilder<GHContent> {

  10.     /**
  11.      * Instantiates a new GH content search builder.
  12.      *
  13.      * @param root
  14.      *            the root
  15.      */
  16.     GHContentSearchBuilder(GitHub root) {
  17.         super(root, ContentSearchResult.class);
  18.     }

  19.     /**
  20.      * {@inheritDoc}
  21.      */
  22.     @Override
  23.     public GHContentSearchBuilder q(String term) {
  24.         super.q(term);
  25.         return this;
  26.     }

  27.     /**
  28.      * {@inheritDoc}
  29.      */
  30.     @Override
  31.     GHContentSearchBuilder q(String qualifier, String value) {
  32.         super.q(qualifier, value);
  33.         return this;
  34.     }

  35.     /**
  36.      * In gh content search builder.
  37.      *
  38.      * @param v
  39.      *            the v
  40.      * @return the gh content search builder
  41.      */
  42.     public GHContentSearchBuilder in(String v) {
  43.         return q("in:" + v);
  44.     }

  45.     /**
  46.      * Language gh content search builder.
  47.      *
  48.      * @param v
  49.      *            the v
  50.      * @return the gh content search builder
  51.      */
  52.     public GHContentSearchBuilder language(String v) {
  53.         return q("language:" + v);
  54.     }

  55.     /**
  56.      * Fork gh content search builder.
  57.      *
  58.      * @param fork
  59.      *            search mode for forks
  60.      *
  61.      * @return the gh content search builder
  62.      *
  63.      * @see <a href=
  64.      *      "https://docs.github.com/en/github/searching-for-information-on-github/searching-on-github/searching-in-forks">Searching
  65.      *      in forks</a>
  66.      */
  67.     public GHContentSearchBuilder fork(GHFork fork) {
  68.         return q("fork", fork.toString());
  69.     }

  70.     /**
  71.      * Size gh content search builder.
  72.      *
  73.      * @param v
  74.      *            the v
  75.      * @return the gh content search builder
  76.      */
  77.     public GHContentSearchBuilder size(String v) {
  78.         return q("size:" + v);
  79.     }

  80.     /**
  81.      * Path gh content search builder.
  82.      *
  83.      * @param v
  84.      *            the v
  85.      * @return the gh content search builder
  86.      */
  87.     public GHContentSearchBuilder path(String v) {
  88.         return q("path:" + v);
  89.     }

  90.     /**
  91.      * Filename gh content search builder.
  92.      *
  93.      * @param v
  94.      *            the v
  95.      * @return the gh content search builder
  96.      */
  97.     public GHContentSearchBuilder filename(String v) {
  98.         return q("filename:" + v);
  99.     }

  100.     /**
  101.      * Extension gh content search builder.
  102.      *
  103.      * @param v
  104.      *            the v
  105.      * @return the gh content search builder
  106.      */
  107.     public GHContentSearchBuilder extension(String v) {
  108.         return q("extension:" + v);
  109.     }

  110.     /**
  111.      * User gh content search builder.
  112.      *
  113.      * @param v
  114.      *            the v
  115.      * @return the gh content search builder
  116.      */
  117.     public GHContentSearchBuilder user(String v) {
  118.         return q("user:" + v);
  119.     }

  120.     /**
  121.      * Repo gh content search builder.
  122.      *
  123.      * @param v
  124.      *            the v
  125.      * @return the gh content search builder
  126.      */
  127.     public GHContentSearchBuilder repo(String v) {
  128.         return q("repo:" + v);
  129.     }

  130.     /**
  131.      * Order gh content search builder.
  132.      *
  133.      * @param v
  134.      *            the v
  135.      * @return the gh content search builder
  136.      */
  137.     public GHContentSearchBuilder order(GHDirection v) {
  138.         req.with("order", v);
  139.         return this;
  140.     }

  141.     /**
  142.      * Sort gh content search builder.
  143.      *
  144.      * @param sort
  145.      *            the sort
  146.      * @return the gh content search builder
  147.      */
  148.     public GHContentSearchBuilder sort(GHContentSearchBuilder.Sort sort) {
  149.         if (Sort.BEST_MATCH.equals(sort)) {
  150.             req.remove("sort");
  151.         } else {
  152.             req.with("sort", sort);
  153.         }
  154.         return this;
  155.     }

  156.     /**
  157.      * The enum Sort.
  158.      */
  159.     public enum Sort {

  160.         /** The best match. */
  161.         BEST_MATCH,
  162.         /** The indexed. */
  163.         INDEXED
  164.     }

  165.     private static class ContentSearchResult extends SearchResult<GHContent> {
  166.         private GHContent[] items;

  167.         @Override
  168.         GHContent[] getItems(GitHub root) {
  169.             return items;
  170.         }
  171.     }

  172.     /**
  173.      * Gets the api url.
  174.      *
  175.      * @return the api url
  176.      */
  177.     @Override
  178.     protected String getApiUrl() {
  179.         return "/search/code";
  180.     }
  181. }