Thank you so much for the congratulations! I’m excited, Looking forward to working with everyone!
Hearty Congratulations @rajkumardongre !!! Well deserved!
Thank you so much @Ubaid-Shaikh
Hello everyone,
I have been working on creating a High-level HTTP Client Library, and I would like to share its description with you.
The objective of this project is to develop a high-level library for making HTTP requests in Fortran, inspired by the widely used Python requests library. This library aims to empower Fortran programmers by providing them with the capability to perform standard HTTP request methods such as GET, HEAD, POST, PUT, DELETE, CONNECT, OPTIONS, TRACE, and PATCH. By offering this functionality, the library facilitates efficient communication with web services and APIs, eliminating the need for low-level network programming.
One possible implementation approach for this library is to utilize fortran-curl, which offers Fortran bindings to libcurl. By leveraging the power and flexibility of libcurl, we can create a more user-friendly interface in Fortran.
The primary advantage of this library is its ability to simplify the consumption of HTTP web services from Fortran applications. Instead of writing intricate low-level network code, Fortran programmers can utilize the library’s high-level API to effortlessly make HTTP requests and receive responses. This significantly saves time and effort, allowing programmers to focus on the higher-level aspects of their applications.
Now, I would like to choose a suitable name for this library. Here are some options I have come up with:
- FortReq
- FortCurl
- FortConnect
- FortWebReq
- FortRest
- WebFort
- FortCurlClient
- FortRequest
- FortAPIConnect
- FortranWebClient
I would appreciate your input in selecting the best name from these options, and I am also open to any other suggestions or discussions regarding the naming of this library.
click here for full project information.
I think the name should clearly evoke the Web, so my preferred ones are WebFort and FortranWebClient.
Other suggestions:
- ForWeb,
- ForWWW,
- ForHTTP
Here, the prefix “For” also simply stands for the English word for (a library for the Web).
Thanks, @rajkumardongre, a few comments:
- See fortran-lang project names, all are short and kebab-case for those that use multiple words, so we should follow the same principle;
- Should include “http” in the name since that most precisely describes the functionality;
- On second thought, we should create the repo under fortran-lang Org for better visibility to everyone here (as opposed to under your account). In that case, we don’t need to mention the word fortran in the name.
All that said, I suggest we create a repo fortran-lang/http-client.
Thankyou @vmagnin @milancurcic for your suggestions
Weekly Progress Reports
Community Bonding Period
Week 1 (11 May - 18 May)
- Setup FPM to Local Machine
- resources : Documentation, Youtube
- Run Fortran-curl Examples
- Go through Curl Documentation
- Go through Python Request Library(our Inspiration)
- Setup http-client github repo
Thanks @rajkumardongre. All, we have also created the http-client repo (GitHub - fortran-lang/http-client: HTTP client library for Fortran) that we’ll be working on.
Thank you
Hello, everyone. We’re currently discussing the API for making GET Requests for the http-client project. We welcome any suggestions you may have.
Weekly Progress Reports
Community Bonding Period
Week 2 (18 May - 25 May)
- Discuss the API to make a GET request.
- Add fortran-curl as dependency and a minimal GET request example.
- Explore the fhash fpm package.
Weekly Progress Reports
Community Bonding Period
Week 3 (26 May - 2 May)
- Go through Packaging with fpm
- Review other fpm packages code base for good practices (fhash, jsonff, neural-fortran, stdlib, and many more)
- Read Reclaiming .f file extension for modern Fortran (free form)
- Migrated code into different files
- Added Response header
- Added test for GET Request
- Added github workflow
Weekly Progress Reports
Post-Community Bonding Period
Week 5 (9 May - 16 May)
- Revise the API used for sending and receiving request and response headers.
- Allow access to header values based on their respective names.
- Modify the tests to reflect the changes made to the API.
- Include an example demonstrating how to download a file.
- Discussion regarding the API to be used for making a POST request.
Weekly Progress Reports
Post-Community Bonding Period
Week 7 (24 May - 30 May)
- Implement functionality to support sending form data in HTTP requests.
- Explore the topic of including files in an HTTP request. (resource 1, resource 2, resource 3)
- Explore how to send multipart data form using libcurl.
- PR: Demonstrating sending files via HTTP
POST
request
Weekly Progress Reports
Post-Community Bonding Period
Week 8 ( 30 May - 7 July)
- Added Functionality to support sending form data in HTTP requests.
- Replace
form_type
,header_type
andfile_type
withpair_type
derived type. - Add Tests for all HTTP Methods.
Weekly Progress Reports
Post-Community Bonding Period
Week 9 ( 7 July - 14 July)
- Testing Package on Intel Compiler.
- Added Support for HTTP Authentication.
- Added Support for setting request timeout.
- Working on Real-world example programs using the
http_client
package
Weekly Progress Reports
Post-Community Bonding Period
Week 10 ( 14 July - 21 July)
- Discussion about defining the version number for the package.
- Work on writing a tutorial project using the
http_client
package- Project : github-org-analyzer
- This Fortran package provides procedures to analyze GitHub organizations and retrieve valuable information about their repositories. By leveraging the power of the
http_client
package, this analyzer fetches data from the GitHub API to generate insightful reports.
Weekly Progress Reports
Post-Community Bonding Period
Week 11 ( 21 July - 28 July)
- Work on Real-world projects, using
http_client
link - Work on creating a full tutorial page for
http_client
. (any suggestion welcome) - Work on FORD documentation for the
http_client
package.
My apologies for the delayed updates.