Feeds: Meetup is a set of parsers that build on Feeds to import data from Meetup.com API calls.
Currently, the project supports XML feeds for events, groups, and venues. Support is planned for more API methods, as well as JSON, RSS, and Atom formats. I modeled my code after the Feeds: YouTube module.
I have already run through automated testing and have had several peers review my code.
Project Sandbox
https://drupal.org/sandbox/joshsimmons/2070677
Git Repo
git clone --branch 7.x-1.x http://git.drupal.org/sandbox/joshsimmons/2070677.git feeds_meetup
Sample API call & key for testers
For test imports with my parsers, Meetup API calls are formed like so: https://api.meetup.com/2/groups.xml/?key=[KEY]&sign=true&category_id=34
... and with a key (testers can use mine): 377c682266112e355a7a435d4dd2021
Reviews of other projects
Comments
Comment #0.0
bluesomewhere CreditAttribution: bluesomewhere commentedAdded a screenshot!
Comment #0.1
bluesomewhere CreditAttribution: bluesomewhere commentedD.O complaining about non-local image, even tho it is local. converted screenshot to a relative URL
Comment #1
PA robot CreditAttribution: PA robot commentedWe are currently quite busy with all the project applications and we prefer projects with a review bonus. Please help reviewing and put yourself on the high priority list, then we will take a look at your project right away :-)
Also, you should get your friends, colleagues or other community members involved to review this application. Let them go through the review checklist and post a comment that sets this issue to "needs work" (they found some problems with the project) or "reviewed & tested by the community" (they found no major flaws).
I'm a robot and this is an automated message from Project Applications Scraper.
Comment #1.0
PA robot CreditAttribution: PA robot commentedderp. D.O really has trouble knowing what is local and not. converted screenshot IMG tag to a link.
Comment #1.1
bluesomewhere CreditAttribution: bluesomewhere commentedswitch to non-maintainer git clone command
Comment #2
bluesomewhere CreditAttribution: bluesomewhere commentedReview bonus, hooray :D
Comment #2.0
bluesomewhere CreditAttribution: bluesomewhere commentedreview bonus! huray
Comment #3
alexmoreno CreditAttribution: alexmoreno commentedHi bluesomewhere. Thanks for your effort with this module.
It's a minor thing, but your README file does not include all the requirements (job scheduller and ctools):
Requires: Feeds (disabled), Ctools (missing), Job_scheduler (missing), Feeds XPath Parser (disabled)
but I think it is all right as they are dependencies from the other two modules, feeds and feeds xpath.
Once installed you have this issue in some pages like when listing modules:
Notice: Undefined variable: ret_val in feeds_meetup_help() (line 46 of /var/www/drupal7/sites/all/modules/feeds_meetup/feeds_meetup.module).
If the switch does not enter in the admin/help#feeds_meetup case the variable will never have a value, and will be returning an uninitialized variable.
This is more a question. In line 186, if $entry->venue is not set, can it happen that the $entry->fee is set? If not, maybe you should include this condition inside the other if. Even more, to simplify the code and improve readability I would create a function with this group of ifs. Let me know what you think.
Apart from that, the code is simple, maybe short and inside the limits of the minimal requirements, but looks good from my side.
Thanks again.
Comment #4
alexmoreno CreditAttribution: alexmoreno commentedin fact, the code in the .inc file looks like a third part library, doesn't it? In that case the module would be not be long enough to be approved, you'd probably need to extend it a bit.
Comment #5
bluesomewhere CreditAttribution: bluesomewhere commentedThank you for the review, urwen!
Only issue I'm not sure how to address is the amount and/complexity of the code, as I definitely want to get full project access, rather than a one time project promotion. For now, I'll try to address the issue by adding a parser for Groups, Venues, and Members (other entities available via Meetup API).
Comment #6
alexmoreno CreditAttribution: alexmoreno commentedHave also in mind that if your code includes a third party library, it may not be allowed to be into drupal. There are ways to add them, just having all settled to work in a folder and giving the user instructions about how and where installing it (like sites/libraries)
Thank you
Comment #7
bluesomewhere CreditAttribution: bluesomewhere commentedTo address complexity and length, I've continued down my planned roadmap and added a Groups and Venues parser, and taken the helper function out of the Events parser and moved it into the module. Photos and Members are forthcoming.
And no worries re: third party code, this is all GPL'd Drupal code :)
Thanks again, urwen!
Comment #7.0
bluesomewhere CreditAttribution: bluesomewhere commentedreviewed another project application, just because
Comment #8
alexmoreno CreditAttribution: alexmoreno commentedHi bluesomewhere,
If I am right, the manual reviews should be a bit deeper than the ones you have done here, and you cannot include just an automated review. A manual review implies that you have installed the module, and most important you have read througfully the code, understood what coder did and which part would be wrong. I know it is difficult, but believe me, my first review was january this year, and I am still learning good practices, so this work is really important, not just one thing to get approved your module.
Also, if you review a module that is nearly receiving the approval, obviously this is not going to show a lot about your coding skills. I think I should remove you the bonus review tag, but I will wait for other dev with more experience to confirm that.
Thank you for your time.
Comment #9
bluesomewhere CreditAttribution: bluesomewhere commentedHi urwen,
I can appreciate that the nature of Bonus Review is more nuanced than I initially thought – I understood it primarily as a way to accelerate the rate at which project applications get reviewed. I was aware that my reviews were shallow and more focused on process than code, thus the +1. In any case, I will voluntarily remove the tag and get in line.
Also, I'm not sure this module offers an opportunity for me to demonstrate my coding ability, even after I add support for additional formats and API calls.
Perhaps this project is a good candidate for one time promotion, though I aspire to more. I'll leave that to you and the community to decide :)
Thanks for walking me through this.
Comment #9.0
bluesomewhere CreditAttribution: bluesomewhere commenteddropped needless dependency on Feeds XPath Parser, updated current feature list, as well as planned features
Comment #10
klausiSorry for the delay. Make sure to review more project applications and get a new review bonus and this will get finished faster.
manual review:
Otherwise looks RTBC to me. I think the code in the repository is quite simple but still enough to approve you as git vetted user.
Assigning to mlncn as he might have time to take a final look at this.
Comment #11
bluesomewhere CreditAttribution: bluesomewhere commentedAwesome, thank you for the review! I took your advice and created a base class with the parse() method.
Comment #12
klausino objections for more than a week, so ...
Thanks for your contribution, bluesomewhere!
I updated your account so you can promote this to a full project and also create new projects as either a sandbox or a "full" project.
Here are some recommended readings to help with excellent maintainership:
You can find lots more contributors chatting on IRC in #drupal-contribute. So, come hang out and stay involved!
Thanks, also, for your patience with the review process. Anyone is welcome to participate in the review process. Please consider reviewing other projects that are pending review. I encourage you to learn more about that process and join the group of reviewers.
Thanks to the dedicated reviewer(s) as well.
Comment #13.0
(not verified) CreditAttribution: commentedadded a sample meetup API call and key to make testing easier