GSOC23 : Guidance for project "High-level HTTP client library"

Thank you so much for the congratulations! I’m excited, Looking forward to working with everyone!

Hearty Congratulations @rajkumardongre !!! Well deserved!

1 Like

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:

  1. FortReq
  2. FortCurl
  3. FortConnect
  4. FortWebReq
  5. FortRest
  6. WebFort
  7. FortCurlClient
  8. FortRequest
  9. FortAPIConnect
  10. 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.

4 Likes

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).

3 Likes

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.

3 Likes

Thankyou @vmagnin @milancurcic for your suggestions

1 Like

Weekly Progress Reports

Community Bonding Period

Week 1 (11 May - 18 May)

  • Setup FPM to Local Machine
  • Go through Curl Documentation
  • Go through Python Request Library(our Inspiration)
  • Setup http-client github repo
4 Likes

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.

2 Likes

Thank you

1 Like

Hello, everyone. We’re currently discussing the API for making GET Requests for the http-client project. We welcome any suggestions you may have.

1 Like

Weekly Progress Reports

Community Bonding Period

Week 2 (18 May - 25 May)

2 Likes

Weekly Progress Reports

Community Bonding Period

Week 3 (26 May - 2 May)

4 Likes

Weekly Progress Reports

Post-Community Bonding Period

Week 4 (2 May - 9 May)

Weekly Progress Reports

Post-Community Bonding Period

Week 5 (9 May - 16 May)

5 Likes

Weekly Progress Reports

Post-Community Bonding Period

Week 6 (16 May - 23 May)

4 Likes

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
6 Likes

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 and file_type with pair_type derived type.
  • Add Tests for all HTTP Methods.
2 Likes

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
6 Likes

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.

2 Likes