Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Contributing #2

Open
lakesol opened this issue Feb 1, 2022 · 9 comments
Open

Contributing #2

lakesol opened this issue Feb 1, 2022 · 9 comments
Assignees
Labels
enhancement New feature or request

Comments

@lakesol
Copy link

lakesol commented Feb 1, 2022

Hi @cdmdotnet, I am working on a project at the moment which will need considerable interaction with HubSpot. We have evaluated this library (both the original hubspot-net/HubSpot.NET and your fork) and think this project has the best platform starting point to do the activities
we need.

We have noticed that some features do not currently exist and I am looking contribute some PRs adding features such as contact lists management etc.

Can you please let me know if you are actively maintaining this fork or if you would recommend an alternate "source" repo?

If you are now taking up the task of maintaining this project, if I was to submit PRs to you, do you have any idea what timelines would look like to get the changes approved, merged on your side and pushed into nuget?

Many thanks

Ian

@cdmdotnet cdmdotnet self-assigned this Feb 1, 2022
@cdmdotnet
Copy link
Collaborator

Hi Ian

We're actively utilising this library across a number of client projects, hence the fork and submission to nuget for simplicity of deployment - so yes, this is active maintained as we need it.

That said, we've not yet setup CI/CD for testing, which we'd probably look to do if you anticipated an active engagement in contributing. If you see this more as a matter of solving a few specific needs you have - that's fine as well.

If we don't have CI/CD our turnaround can be a few hours depending on timezones to get packaged and into nuget. If contribution is likely to be more active, then CI/CD would bring that down pretty heavily.

@cdmdotnet
Copy link
Collaborator

Oh, and thanks for reaching out. Always good to know our efforts can create mutual benefits for others.

@cdmdotnet
Copy link
Collaborator

It's also worth noting most of our work has been done on branch 0.6.19 to date.
We've got an action to merge the upstream master in this month.

@cdmdotnet cdmdotnet added the enhancement New feature or request label Feb 1, 2022
@lakesol
Copy link
Author

lakesol commented Feb 1, 2022

Thanks for the feedback. I think our contribution will be to add a few key areas of support we need for our project. At the moment these focus in 2 areas;

  1. Allowing the system to return the list membership details of a contact as part of getcontact operations. FYI the list membership is already included in the json payload from Hubspot by default, but as the details are not a child of the properties collection but a sibling of it its not deserialised.

  2. Adding a ContactList api and associated models to support actions such as getlists, getstaticlists, addcontactstolist, removecontactsfromlist etc

As we work through our full suite of use cases against the library there may be more we will add over time too.

For the work I have in progress at the moment I have made my fork and then branch from 0.6.19 as I assumed that was the latest work.

I see some work has taken place to remove the dependency on Flurl, do you know what the status of that is?

Thanks

@cdmdotnet
Copy link
Collaborator

Hi Ian.

Thanks for the clarification. Sounds all good for us.

From what I can see from upstream, the work we have in master to merge in is the removal of Flurl. I think it's pretty close to done, but I've not fully reviewed upstream yet.

You raise an interesting point about extra information in payloads... just be careful in what a null value represents... is it unset or just not queried for... easy to determine when considering collections (null means not queried for and empty collection means no values set) but harder for many/one-to-one relationships. Just something to keep in mind please.

I've also taken the pattern of object enrichment into a few new areas on the project. Looking at how associations are loaded, loading the contact/company of a deal as an example, I'm passing in the root object, doing the queries and enriching it (setting values on the root object) rather than returning separated collections/objects.

As a pattern that is available to you as well.

@lakesol
Copy link
Author

lakesol commented Feb 1, 2022

Thanks for the info. The odd thing about the contact "list-memberships" collection within the payload is that its there by default and its also read only (I think) when performing create/update operations. It can be turned off so I will make sure the I differentiate not requested to empty collection upon result deserialisation.

@lakesol
Copy link
Author

lakesol commented Feb 1, 2022

Once I have some extra functionality for you I will create a PR and be back in contact

@cdmdotnet
Copy link
Collaborator

HubSpot can do some weird things when you provide extra information in a post/put/patch operation. We found that out the hard way... objects in queries become numbers in actions amongst other things.
If you can create some tests that verify the behaviour if you send a queried object back with a simple change (e.g. update the name/title) and make sure the results are normal that would ensure you don't end up with that annoying situation where you think a change is small (it's just another query) but now turns into the other crud operations are broken.

Cheers, good luck and thanks.

@lakesol
Copy link
Author

lakesol commented Feb 17, 2022

Hi, FYI I have created two PRs for your review. These address areas around contact lists and email subscriptions. Let let me know your thoughts.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants