-
Notifications
You must be signed in to change notification settings - Fork 8
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
High level api #14
base: master
Are you sure you want to change the base?
High level api #14
Conversation
@heliocastro, as you already contributed some valuable refactoring code, perhaps you're interested in reviewing my proposal for an OO API extension here? I would love to hear your opinion... |
312e2e9
to
cdf57f0
Compare
cdf57f0
to
d6b0e77
Compare
3fd439a
to
9be7e16
Compare
Start a high level API with classes for Release and Component.
Refactor the from_json() methods to one common version.
This allows to directly get data from SW360 using the high-level API - and especially to retrieve complete data from embedded objects like releases in a component or downloading an attachment.
We can only set component_id if releases are embedded in components, but not for releases in projects. As this was a somehow tricky bug, let's add first testcases for it.
This allows for easy copy'n'pasting of an object in interactive sessions plus nicer print output.
Completely overlooked that this is still licensed as Inner Source. This is completely my own work, so let's adapt to CaPyCli main license.
9be7e16
to
2bb8394
Compare
Agreed with @tngraf to proceed with the MR, open topics before merge:
|
Just FIY, we're in full mode towards next SW360 release, where we we kicked away liferay and whole authentication methods changed and extended API calls will exist, so some refactoring will be needed on sw360python as well. |
@tngraf, we discussed about this proposal already Siemens-internal a while ago. I still use and love it in a number of places, especially for interactive API usage, so here's the public PR. :)
Several times, I found myself writing project-specific JSON parsing code (especially to parse
['_embedded']['sw360:releases']
and friends). So I started with first basic classes and made some important attributes and especially relations available in an OO fashion.My code tries to be a thin and maintenable extension to the mostly direct API access we have now, only adding OO abstractions where they provide real benefit. To avoid the need to closely follow each SW360 api change, I only make important attributes available, the rest is available as the usual JSON data in the
details
attribute.Example session:
Main open points: