{"id":23927124,"url":"https://github.com/rolemodel/idempotent_post","last_synced_at":"2025-06-23T02:08:24.303Z","repository":{"id":32714279,"uuid":"36303921","full_name":"RoleModel/idempotent_post","owner":"RoleModel","description":"This intercepts requests at the rack level to recognize repeat posts and ignore them.This is extracted from one of our projects.  The original had a dependency on Redis, but we will create one that is not.","archived":false,"fork":false,"pushed_at":"2015-05-26T15:36:26.000Z","size":116,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-05-25T08:02:58.956Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/RoleModel.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-05-26T15:07:21.000Z","updated_at":"2015-05-26T15:36:27.000Z","dependencies_parsed_at":"2022-09-23T14:15:59.133Z","dependency_job_id":null,"html_url":"https://github.com/RoleModel/idempotent_post","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/RoleModel/idempotent_post","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RoleModel%2Fidempotent_post","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RoleModel%2Fidempotent_post/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RoleModel%2Fidempotent_post/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RoleModel%2Fidempotent_post/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RoleModel","download_url":"https://codeload.github.com/RoleModel/idempotent_post/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RoleModel%2Fidempotent_post/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261397372,"owners_count":23152491,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-01-05T22:14:23.531Z","updated_at":"2025-06-23T02:08:19.272Z","avatar_url":"https://github.com/RoleModel.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"# idempotent_post\n\nIntercept duplicate posts at the rack level, so clicking a button twice or anything\nthat would cause a post happening more than once won't create the object twice.\nThe basic idea is that the response was either lost or not waited for long enough,\ntherefore cache the response and return it whenever a duplicate post is sent.\n\nThis was extracted from another project and was dependent on Redis.\n\nThe plan is to extract the dependency on Redis and turn this into a gem.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frolemodel%2Fidempotent_post","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frolemodel%2Fidempotent_post","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frolemodel%2Fidempotent_post/lists"}