{"id":13498297,"url":"https://github.com/neopixl/Spitfire","last_synced_at":"2025-03-29T00:34:11.889Z","repository":{"id":145706669,"uuid":"105995602","full_name":"neopixl/Spitfire","owner":"neopixl","description":"Android JSON networking library","archived":false,"fork":false,"pushed_at":"2019-03-28T15:21:14.000Z","size":879,"stargazers_count":12,"open_issues_count":0,"forks_count":2,"subscribers_count":8,"default_branch":"master","last_synced_at":"2024-10-31T15:38:31.502Z","etag":null,"topics":["android","android-library","jackson","jackson-json-processor","network","networking","volley-library","wrapper"],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/neopixl.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-10-06T11:08:17.000Z","updated_at":"2020-10-15T20:38:40.000Z","dependencies_parsed_at":null,"dependency_job_id":"55cccad6-9b18-4b24-b333-2b91155c740f","html_url":"https://github.com/neopixl/Spitfire","commit_stats":null,"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neopixl%2FSpitfire","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neopixl%2FSpitfire/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neopixl%2FSpitfire/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neopixl%2FSpitfire/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/neopixl","download_url":"https://codeload.github.com/neopixl/Spitfire/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246122259,"owners_count":20726822,"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":["android","android-library","jackson","jackson-json-processor","network","networking","volley-library","wrapper"],"created_at":"2024-07-31T21:00:21.602Z","updated_at":"2025-03-29T00:34:11.857Z","avatar_url":"https://github.com/neopixl.png","language":"Java","funding_links":[],"categories":["Uncategorized"],"sub_categories":["Uncategorized"],"readme":"[![Twitter](https://img.shields.io/badge/Twitter-@Neopixl-blue.svg?style=flat)](http://twitter.com/neopixl)\n[![Site](https://img.shields.io/badge/Site-neopixl.com-orange.svg?style=flat)](https://neopixl.com)\n[![Android Arsenal](https://img.shields.io/badge/Android%20Arsenal-Spitfire-orange.svg?style=flat)](https://android-arsenal.com/details/1/6290)\n\n\n[![Travis](https://api.travis-ci.org/neopixl/Spitfire.svg?branch=master)](https://travis-ci.org/neopixl/Spitfire)\n[![Coverage Status](https://coveralls.io/repos/github/neopixl/Spitfire/badge.svg?branch=master)](https://coveralls.io/github/neopixl/Spitfire?branch=master)\n[![Bintray](https://img.shields.io/bintray/v/fdewasmes/Spitfire/Spitfire.svg)]()\n[![API](https://img.shields.io/badge/API-16%2B-green.svg?style=flat)](https://android-arsenal.com/api?level=8)\n\n# Spitfire by @Neopixl\n\n\n![Logo](logo.png)\n\nA simple Android Network library. This library can be used as a wrapper for Google Volley, FasterXML Jackson serializer.\nAll the Volley and Jackson method are fully operational.\n\n\nAll the documentations are available here :\n\n - Volley : [https://developer.android.com/training/volley/index.html](https://developer.android.com/training/volley/index.html)\n - Jackson : [https://github.com/FasterXML/jackson](https://github.com/FasterXML/jackson)\n \nContribution : [CONTRIBUTING.md](CONTRIBUTING.md)\n\n## Usage\nThis library was designed to be as simple to use as possible.  Here are the steps you'll need to follow:\n\n* Include the maven dependencies for this library as well as it's dependencies build.gradle file.  (Note: Event bus is required only if you use it.)\n\n\n\t\tdependencies {\n\t\t\timplementation 'com.neopixl:spitfire:2.0.0'\n\t\t}\n\n* Create the DTO that you would like your request to be parsed as.\n\n\t\tpublic class DummyResponse {\n\t\t\tprivate String message;\n\t\t\tprivate int id;\n\t\t\tprivate List\u003cDummyResponse\u003e childrens;\n\t\t\t\n\t\t\t// TODO : Added getters and setters\n\t\t}\n\n* Create a new Volley RequestQueue, where all requests will be processed.\n\n        RequestQueue requestQueue = Volley.newRequestQueue(this);\n\t\t\n* Add a new BaseRequest to your RequestQueue.  This will kick off the process of accessing the network resource and parsing the response into your DTO. \n\n\t\t\n\t\tBaseRequest\u003cDummyResponse\u003e request = new BaseRequest.Builder\u003cDummyResponse\u003e(Request.Method.GET,\n                \"YOUR URL\", DummyResponse.class).listener(new RequestListener\u003cDummyResponse\u003e() {\n            @Override\n            public void onSuccess(Request request, NetworkResponse response, DummyResponse result) {\n                Log.d(\"YOUR APP\", \"Dummy success\");\n            }\n\n            @Override\n            public void onFailure(Request request, NetworkResponse response, VolleyError volleyError) {\n                Log.d(\"YOUR APP\", \"Dummy error\");\n            }\n        }).build();\n        requestQueue.add(request);\n        \n* That's it! \n\n\n## More Complex Usage\n\n### Get / Post / Put\nTo launch a Get, Post, Put request simply use the BaseRequest as before.\nAll the parameters will be added to the URL for the GET requests and to the body for the others\n\n### Json Body\n\nIf you want to send a full JSON in the body of your request, simply create a new DTO, for example our \"DummyResponse\"\n\t\n\t\tDummyResponse objectToSerializeAndSend = new DummyResponse();\n        objectToSerializeAndSend.setMessage(\"My message\");\n\n        BaseRequest\u003cDummyResponse\u003e request = new BaseRequest.Builder\u003cDummyResponse\u003e(Request.Method.GET, \"YOUR URL\", DummyResponse.class)\n                .json(objectToSerializeAndSend)\n                .listener(new RequestListener\u003cDummyResponse\u003e() {\n                    @Override\n                    public void onSuccess(Request request, NetworkResponse response, DummyResponse dummyResponse) {\n                        Log.d(\"YOUR APP\", \"Dummy success\");\n                    }\n\n                    @Override\n                    public void onFailure(Request request, NetworkResponse response, VolleyError volleyError) {\n                        Log.d(\"YOUR APP\", \"Dummy error\");\n                    }\n                }).build();\n        requestQueue.add(request);\n\n### MultipartData\n\n\t    \n\t\t HashMap\u003cString, RequestData\u003e multipardData = new HashMap\u003c\u003e();\n        RequestData data = new RequestData(\"image1\", new byte[] {1,1,1,1,0,0,1}, \"image/jpeg\");\n        multipardData.put(\"image1\", data);\n        data = new RequestData(\"image1\", new byte[] {1,1,1,1,0,0,1}, \"image/jpeg\");\n        multipardData.put(\"image1\", data);\n\n        MultipartRequest\u003cVoid\u003e multipartRequest = new MultipartRequest.Builder\u003cVoid\u003e(Request.Method.PUT, \"YOUR URL\", Void.class)\n                .listener(new RequestListener\u003cVoid\u003e() {\n                    @Override\n                    public void onSuccess(Request request, NetworkResponse response, Void v) {\n                        Log.d(\"YOUR APP\", \"Dummy success\");\n                    }\n\n                    @Override\n                    public void onFailure(Request request, NetworkResponse response, VolleyError volleyError) {\n                        Log.d(\"YOUR APP\", \"Dummy error\");\n                    }\n                })\n                .multiPartData(multipardData)\n                .build();\n        requestQueue.add(multipartRequest);\n        \n### Unique File Upload\n\n\tUploadFileRequest\u003cString[]\u003e uploadFileRequest = new UploadFileRequest.Builder\u003cString[]\u003e(Request.Method.PUT, \"YOUR URL\", String[].class)\n                .listener(new RequestListener\u003cString[]\u003e() {\n                    @Override\n                    public void onSuccess(Request request, NetworkResponse response, String[] v) {\n                        Log.d(\"YOUR APP\", \"Dummy sucess\");\n                    }\n\n                    @Override\n                    public void onFailure(Request request, NetworkResponse response, VolleyError volleyError) {\n                        Log.d(\"YOUR APP\", \"Dummy error\");\n                    }\n                })\n                .partData(data)\n                .build();\n\trequestQueue.add(uploadFileRequest);\n\n### SpitfireManager\n\nSpitfireManager is a global class used to set settings for all the requests.\n\nYou can change :\n\n* default request timeout\n                \n\t\t//Change the default timeout for the default retry policy used for all requests.\n   \t\tSpitfireManager.setRequestTimeout(10000);\n\n\n* default retry policy\n\n\t\tDefaultRetryPolicy retryPolicy = new DefaultRetryPolicy(\n                10000,      // 10 seconds\n                DefaultRetryPolicy.DEFAULT_MAX_RETRIES,\n                DefaultRetryPolicy.DEFAULT_BACKOFF_MULT);\n\n\t\t//Change the default retry policy used for all requests. \n\t\tSpitfireManager.setDefaultRetryPolicy(retryPolicy);\n\n# Proguard\n\n\t# Jackson 2.x\n\t-keep class com.fasterxml.jackson.databind.ObjectMapper {\n\t    public \u003cmethods\u003e;\n\t    protected \u003cmethods\u003e;\n\t}\n\t-keep class com.fasterxml.jackson.databind.ObjectWriter {\n\t    public ** writeValueAsString(**);\n\t}\n\t-keep @com.fasterxml.jackson.annotation.JsonIgnoreProperties class * { *; }\n\t-keep class com.fasterxml.** { *; }\n\t-keep class org.codehaus.** { *; }\n\t-keepnames class com.fasterxml.jackson.** { *; }\n\t-keepclassmembers public final enum com.fasterxml.jackson.annotation.JsonAutoDetect$Visibility {\n\t    public static final com.fasterxml.jackson.annotation.JsonAutoDetect$Visibility *;\n\t}\n\t-keep class com.fasterxml.jackson.databind.ObjectMapper {\n\t    public \u003cmethods\u003e;\n\t    protected \u003cmethods\u003e;\n\t}\n\t-keep class com.fasterxml.jackson.databind.ObjectWriter {\n\t    public ** writeValueAsString(**);\n\t}\n\t-keepnames class com.fasterxml.jackson.** { *; }\n\t-dontwarn com.fasterxml.jackson.databind.**\n\n\n\n# They use it\n\n - Cerbaliance\n\n# License\nSpitfire is released under the Apache 2.0 licence. See LICENSE for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fneopixl%2FSpitfire","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fneopixl%2FSpitfire","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fneopixl%2FSpitfire/lists"}