GSoC phase 1

Vishal Desai
2 min readJun 23, 2019

--

Project Details:
At HydraEcosystem we are working on hydrus a server which uses Hydra(http://www.hydra-cg.com) Specification for creation and documentation of its APIs.

The primary goal of my GSoC project is to make hydrus compatible with new developments made at Hydra.

Community Bonding Period:

During community bonding period I was having my end semester exams so there was not much scope for designing or coding. It didn’t cost me much as I had written a detailed design/implementation guideline document in my proposal. During the final days of the community bonding period we finalized that we would prioritize implementation of features documented at Hydra. So following that I decided I will work on pagination and searching feature in the first phase.

Week 1:

As mentioned above I started my coding period with implementation of pagination functionality. It involved understanding Hydra:PartialCollectionView and how it can be utilized to provide views over a single collection to implement pagination. You can find my work here:

https://github.com/HTTP-APIs/hydrus/pull/391

Week 2:

In week 2 I decide to work on some old pending issues.

For that I made two PRs closing two old tests related issues, which basically improved testing. They are listed below.

Adding tests for nested objects: https://github.com/HTTP-APIs/hydrus/pull/399

Extending collection test to validate member item: https://github.com/HTTP-APIs/hydrus/pull/398

Besides that we had some discussion about changing response message structure : https://github.com/HTTP-APIs/hydrus/issues/392

Week 3:

I was supposed to start working on the searching feature by the third week but following what we had discussed about the response structure issue, I made first adjustment to my proposal timeline and started working on implementation of Hydra:Status and Hydra:Error. To do so I had to add two new classes at hydra_python_core for Hydra:Status and Hydra:Error(1). Then I used them at hydrus to create response body(2).

  1. https://github.com/HTTP-APIs/hydra-python-core/pull/19
  2. https://github.com/HTTP-APIs/hydrus/pull/402

Besides this I stated working on the searching feature and added IriTemplate related classes to hydra_python_core.

Week 4:

I started week 4 by writing some code for creating IriTemplate for collections. Then it was time to write code for actual searching, I wrote a helper function to assist that and it worked like charm until I tested pagination over search results. I realized a hard way that I had not considered this important scenario while sketching my proposal. I resolved this and started working on providing searching over properties of nested objects. You can find the PR involving this all changes here: https://github.com/HTTP-APIs/hydrus/pull/403

Way ahead:

Now I am looking forward to get searching feature reviewed and merged. Finishing my work on Hydra:IriTemplate will also involve resolving a couple of issues which directly depend on it. Then I will be ready to start working on creation of dynamic endpoints. More about that in the next post.

Good bye till then.

--

--