<?xml version="1.0"?>
<puzzles xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.0pdd.com/puzzles.xsd" date="2021-10-26T11:17:19+00:00" version="0.30.23">
  <puzzle alive="false">
    <issue href="https://github.com/artipie/gem-adapter/issues/9" closed="2020-05-08T17:15:06+00:00">9</issue>
    <ticket>32</ticket>
    <estimate>120</estimate>
    <role>DEV</role>
    <id>32-7ef023e4</id>
    <lines>39-41</lines>
    <body>Gem submission implementation. The implementation must receive the .gem file, unzip it, and update specs files. As a result, files become available for downloading.</body>
    <file>src/main/java/com/artipie/gem/SubmitGem.java</file>
    <author>@Sammers21</author>
    <email>titantins@gmail.com</email>
    <time>2020-03-27T14:33:12Z</time>
    <children>
      <puzzle alive="false">
        <issue href="https://github.com/artipie/gem-adapter/issues/24" closed="2020-04-22T11:05:19+00:00">24</issue>
        <ticket>9</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>9-d34d2491</id>
        <lines>33-35</lines>
        <body>Random gem name generation. Currently, when gem is uploaded, it has a name 'upd.gem'. The approach does not allow us to upload concurrently. Names should chosen randomly.</body>
        <file>src/main/ruby/SubmitGem.rb</file>
        <author>@g4s8</author>
        <email>g4s8.public@gmail.com</email>
        <time>2020-04-22T06:38:04Z</time>
        <children/>
      </puzzle>
      <puzzle alive="false">
        <issue href="https://github.com/artipie/gem-adapter/issues/25" closed="2020-05-08T17:15:11+00:00">25</issue>
        <ticket>9</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>9-d0d317ad</id>
        <lines>38-40</lines>
        <body>Sync generated indexes with Storage. For now, generated indexes are stored locally in temp-gem-index directory. Those should also be syncronized with storage.</body>
        <file>src/main/ruby/SubmitGem.rb</file>
        <author>@g4s8</author>
        <email>g4s8.public@gmail.com</email>
        <time>2020-04-22T06:38:04Z</time>
        <children>
          <puzzle alive="false">
            <issue href="https://github.com/artipie/gem-adapter/issues/30" closed="2020-05-08T17:15:17+00:00">30</issue>
            <ticket>25</ticket>
            <estimate>30</estimate>
            <role>DEV</role>
            <id>25-b18eefce</id>
            <lines>99-102</lines>
            <body>Use underlying storage. Currency, local directory 'temp-gem-index' is used as a storage for serving metadata files. This approaches has a significant amount of drawbacks, that is why we should change it.</body>
            <file>src/main/java/com/artipie/gem/GemSlice.java</file>
            <author>@Sammers21</author>
            <email>titantins@gmail.com</email>
            <time>2020-04-29T11:53:24Z</time>
            <children/>
          </puzzle>
        </children>
      </puzzle>
      <puzzle alive="false">
        <issue href="https://github.com/artipie/gem-adapter/issues/42" closed="2021-05-24T08:31:33+00:00">42</issue>
        <ticket>9</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>9-59a54dc4</id>
        <lines>22-24</lines>
        <body>Adapt AstoIndexer to generate files in storage. For now, generated indexes are stored locally in temp-gem-index directory. Files should be generated in storage instead.</body>
        <file>src/main/ruby/AstoIndexer.rb</file>
        <author>@Sammers21</author>
        <email>titantins@gmail.com</email>
        <time>2020-05-08T16:51:13Z</time>
        <children/>
      </puzzle>
    </children>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/artipie/gem-adapter/issues/11" closed="2021-06-09T08:28:06+00:00">11</issue>
    <ticket>32</ticket>
    <estimate>120</estimate>
    <role>DEV</role>
    <id>32-d2ff0e89</id>
    <lines>40-42</lines>
    <body>Gem Information implementation. The implementation must be able to response with either json or yaml format. An example response can be obtained via {@code curl https://rubygems.org/api/v1/gems/rails.json}</body>
    <file>src/main/java/com/artipie/gem/GemInfo.java</file>
    <author>@Sammers21</author>
    <email>titantins@gmail.com</email>
    <time>2020-04-06T14:37:25Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/artipie/gem-adapter/issues/15" closed="2021-05-24T08:31:37+00:00">15</issue>
    <ticket>13</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>13-4aa56782</id>
    <lines>46-49</lines>
    <body>Initialize on first request. Currently, Ruby runtime initialization and Slice evaluation is happening during the GemSlice construction. Instead, the Ruby runtime initialization and Slice evaluation should happen on first request.</body>
    <file>src/main/java/com/artipie/gem/GemSlice.java</file>
    <author>@Sammers21</author>
    <email>titantins@gmail.com</email>
    <time>2020-04-10T15:34:11Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/artipie/gem-adapter/issues/101" closed="2021-10-18T13:49:03+00:00">101</issue>
    <ticket>85</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>85-3d638df9</id>
    <lines>35-37</lines>
    <body>Move this class to artipie/asto repo This class was created due to lack of unchecked supplier implementation in asto project. Let's move it to asto repo.</body>
    <file>src/main/java/com/artipie/gem/UncheckedSupplier.java</file>
    <author>@g4s8</author>
    <email>g4s8.public@gmail.com</email>
    <time>2021-07-16T06:33:28Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/artipie/gem-adapter/issues/124" closed="2021-10-04T09:44:13+00:00">124</issue>
    <ticket>122</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>122-d55ec42f</id>
    <lines>34-36</lines>
    <body>Add tests for this class. Check if it can add plain string values to JSON, and check it can support nested tree structures formatting.</body>
    <file>src/main/java/com/artipie/gem/JsonMetaFormat.java</file>
    <author>@g4s8</author>
    <email>g4s8.public@gmail.com</email>
    <time>2021-09-06T08:50:13Z</time>
    <children/>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/artipie/gem-adapter/issues/134">134</issue>
    <ticket>103</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>103-34f1c84f</id>
    <lines>18-23</lines>
    <body>Inspect rubygems API response to add more fields. Check responses for different Gem requests for origin rubygems.org or reverse-engineer Gem repository Ruby code to understand all fields that should be added to gems API response. Now all mandatory fields are present in this metadata genrator but different gem responses may have optional fields. E.g. https://rubygems.org/api/v1/gems/builder.json</body>
    <file>src/main/java/com/artipie/gem/ruby/RubyGemMeta.java</file>
    <author>@g4s8</author>
    <email>g4s8.public@gmail.com</email>
    <time>2021-10-01T14:34:03Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/artipie/gem-adapter/issues/137" closed="2021-10-19T10:30:36+00:00">137</issue>
    <ticket>122</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>122-e8ad5314</id>
    <lines>20-25</lines>
    <body>Add tests for this class and ApiGetSlice. Check that this class produces valid YAMLs as for JsonMetaFormat. Also, check that ApiGetSlice returns valid response for `.yaml` suffix in response path. Test for `ApiGetSlice` could be quite primitive just to check that slice is working fine with yaml. On the other hand `YamlMetaFormatTest` must cover all methods of YamlMetaFormat (same as JsonMetaFormatTest).</body>
    <file>src/main/java/com/artipie/gem/YamlMetaFormat.java</file>
    <author>@g4s8</author>
    <email>g4s8.public@gmail.com</email>
    <time>2021-10-04T12:08:10Z</time>
    <children>
      <puzzle alive="false">
        <issue href="https://github.com/artipie/gem-adapter/issues/140" closed="2021-10-26T11:17:19+00:00">140</issue>
        <ticket>137</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>137-c2b83a35</id>
        <lines>31-34</lines>
        <body>Add tests for ApiGetSlice. Check that ApiGetSlice returns valid response for `.yaml` suffix in response path. Test for `ApiGetSlice` could be quite primitive just to check that slice is working fine with yaml.</body>
        <file>src/main/java/com/artipie/gem/http/ApiGetSlice.java</file>
        <author>@LightPro-Inc</author>
        <email>baudolivier.oura@gmail.com</email>
        <time>2021-10-19T10:30:27Z</time>
        <children/>
      </puzzle>
    </children>
  </puzzle>
</puzzles>
