Simple Eiffel - QUICK APIs

6 views
Skip to first unread message

Liberty Lover

unread,
Dec 16, 2025, 2:07:03 PM (11 hours ago) Dec 16
to Eiffel Users
Hey All,

Thank you to Ulrich for inspiring this push. He made me realize that the simple_* ecosystem is being populated by libs that are generally for folks who are subject matter experts. There are plenty of us who are not. For the rest of us, we need higher-level API access that does a lot of the generalized boilerplate coding under the hood. We just want to get a job done and move on. We're not interested in becoming subject matter experts. So, to this end and goal, I now introduce to you all: QUICK API fleet of classes.

See the announcement here.



● Complete QUICK API Reference

  Batch 1: Service Libraries (8)

  | Library           | QUICK Class             | Purpose             | Key Features                                                         |
  |-------------------|-------------------------|---------------------|----------------------------------------------------------------------|
  | simple_sql        | SIMPLE_SQL_QUICK        | Database operations | query(), execute(), scalar(), exists(), insert(), update(), delete() |
  | simple_http       | SIMPLE_HTTP_QUICK       | HTTP client         | get(), post(), put(), delete(), download(), json_get(), json_post()  |
  | simple_smtp       | SIMPLE_SMTP_QUICK       | Email sending       | send(), send_html(), send_with_attachment(), send_to_many()          |
  | simple_jwt        | SIMPLE_JWT_QUICK        | JWT tokens          | create_token(), verify(), decode(), is_valid(), is_expired()         |
  | simple_encryption | SIMPLE_ENCRYPTION_QUICK | Crypto operations   | encrypt(), decrypt(), hash(), verify_hash(), random_key()            |
  | simple_mq         | SIMPLE_MQ_QUICK         | Message queues      | publish(), subscribe(), consume(), ack(), queue_size()               |
  | simple_ai_client  | SIMPLE_AI_CLIENT_QUICK  | AI/LLM access       | ask(), chat(), complete(), embed(), streaming support                |
  | simple_web        | SIMPLE_WEB_QUICK        | Web framework       | get(), post(), json(), html(), redirect(), static()                  |

  Batch 2: Data Format Libraries (8)

  | Library           | QUICK Class             | Purpose               | Key Features                                                                         |
  |-------------------|-------------------------|-----------------------|--------------------------------------------------------------------------------------|
  | simple_json       | SIMPLE_JSON_QUICK       | JSON parsing/building | parse(), get_string(json, "$.path"), object.put().to_json, is_valid()                |
  | simple_cache      | SIMPLE_CACHE_QUICK      | In-memory caching     | get(), set(), remember(key, agent) ⭐, increment(), stats                            |
  | simple_validation | SIMPLE_VALIDATION_QUICK | Input validation      | email(), url(), required(), length_ok(), in_range(), one_of()                        |
  | simple_template   | SIMPLE_TEMPLATE_QUICK   | Mustache templates    | render(tpl, vars), file(), render_if(), render_list(), substitute()                  |
  | simple_csv        | SIMPLE_CSV_QUICK        | CSV read/write        | read(), write(), parse(), read_with_headers(), use_tabs, use_semicolons              |
  | simple_xml        | SIMPLE_XML_QUICK        | XML parsing/XPath     | xpath(), first(), attr(), text(), texts(), count(), exists()                         |
  | simple_yaml       | SIMPLE_YAML_QUICK       | YAML config files     | load(), get_string(cfg, "db.host"), get_integer(), string_from_file()                |
  | simple_regex      | SIMPLE_REGEX_QUICK      | Pattern matching      | matches(), find(), find_all(), replace_all(), is_email(), is_url(), extract_emails() |

  Other Libraries with QUICK APIs

  | Library       | QUICK Class         | Purpose              | Key Features                                |
  |---------------|---------------------|----------------------|---------------------------------------------|
  | simple_docker | SIMPLE_DOCKER_QUICK | Container management | run(), stop(), logs(), ps(), pull(), exec() |

  ---
  QUICK API Design Pattern

  Every QUICK class follows the same structure:

  class SIMPLE_*_QUICK

  create
      make

  feature {NONE} -- Initialization
      make
          do
              create underlying.make      -- Full API instance
              create logger.make ("*_quick")  -- Debug logging
          end

  feature -- One-liner Operations
      -- Returns BOOLEAN, STRING, or collections
      -- Sensible defaults, no configuration needed

  feature -- Status
      last_error: STRING
      has_error: BOOLEAN

  feature -- Advanced Access
      underlying: SIMPLE_*
          -- Access full API when needed

  feature {NONE} -- Implementation
      logger: SIMPLE_LOGGER

  invariant
      underlying_exists: underlying /= Void
      logger_exists: logger /= Void
  end

  ---
  Killer Features by Library

  | Library           | Standout Feature    | Example                                                      |
  |-------------------|---------------------|--------------------------------------------------------------|
  | simple_cache      | remember pattern    | cache.remember("key", agent compute) - auto cache-or-compute |
  | simple_yaml       | Dot-path config     | yaml.get_string(cfg, "database.host")                        |
  | simple_regex      | Built-in validators | rx.is_email(), rx.extract_urls()                             |
  | simple_json       | JSONPath + builder  | json.get_string(j, "$.users[0].name")                        |
  | simple_csv        | Format variants     | csv.use_tabs, csv.use_semicolons                             |
  | simple_validation | Error messages      | v.last_error after failed validation                         |

  ---
  Total: 17 QUICK APIs across the ecosystem



Cheers,

Larry

Liberty Lover

unread,
Dec 16, 2025, 2:24:55 PM (11 hours ago) Dec 16
to eiffel...@googlegroups.com
And there is an updated README.md for the entire Simple Eiffel site.




--
You received this message because you are subscribed to the Google Groups "Eiffel Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to eiffel-users...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/eiffel-users/cc4d50cc-bd8d-444a-9fcf-483ddb888632n%40googlegroups.com.
Reply all
Reply to author
Forward
0 new messages