Hi Dimitris,

Nice work.

I played with the API for a while, and I have a few comments from API user perspective:

1. Fields which contain multiple entries (e.g. "files", "md5sum" or "download") could be JSON arrays instead of long strings where entries are separated by whitespace.

2. Instead of an empty string (e.g. in "requires" field) it might be better to return an empty array.

3. The magic value "UNSUPPORTED" in "download" or "download_x86_64" fields seems unnecessary. I think having an empty array would be sufficient for API user to notice that, or to test against it. The value could be a JSON null if we wanted to be really expressive.

4. Leading "./" in "location" field is not needed. But I think it would be better to have a "category" instead of "location". There already is a "name" in API response, and "location" is just "category/name".

5. "short_description" field can be renamed to just "description" (it's the only description present in API response).

6. If we ever have a package name conflict across categories, what would the API endpoint /api/packages/<package_name> return? We don't seem to have such problem now, but we could potentially have one or more name clashes in the future. Having an endpoint /api/packages/<category>/<package_name> would be future-proof.


Taking into account suggestions 1-5, current API result:

{
  "4397": {
    "download": "UNSUPPORTED",
"download_x86_64": "https://www.slsknet.org/SoulseekQt/Linux/SoulseekQt-2018-1-30-64bit-appimage.tgz";, "files": "README SoulseekQt.SlackBuild SoulseekQt.desktop SoulseekQt.info doinst.sh selinux-stub.c slack-desc",
    "location": "./network/SoulseekQt",
    "md5sum": "",
    "md5sum_x86_64": "1d98331893bc9b9d45ba34f6523353ab",
    "name": "SoulseekQt",
    "requires": "",
    "short_description": "SoulseekQt (Soulseek P2P network client)",
    "version": "20180130"
  }
}

would become:

{
  "4397": {
    "category": "network",
    "download": [],
    "download_x86_64": [

"https://www.slsknet.org/SoulseekQt/Linux/SoulseekQt-2018-1-30-64bit-appimage.tgz";
    ],
    "files": [
      "README",
      "SoulseekQt.SlackBuild",
      "SoulseekQt.desktop",
      "SoulseekQt.info",
      "doinst.sh",
      "selinux-stub.c",
      "slack-desc"
    ],
    "md5sum": [],
    "md5sum_x86_64": [
      "1d98331893bc9b9d45ba34f6523353ab"
    ],
    "name": "SoulseekQt",
    "requires": [],
    "short_description": "SoulseekQt (Soulseek P2P network client)",
    "version": "20180130"
  }
}


Regards,
Dominik
_______________________________________________
SlackBuilds-users mailing list
SlackBuilds-users@slackbuilds.org
https://lists.slackbuilds.org/mailman/listinfo/slackbuilds-users
Archives - https://lists.slackbuilds.org/pipermail/slackbuilds-users/
FAQ - https://slackbuilds.org/faq/

Reply via email to