[cc-devel] Having a problem with call to API "details"

Nathan Kinkade nkinkade at creativecommons.org
Mon Sep 20 11:20:59 EDT 2010


Hi Lisa,

Nathan was right, the caching we set up wasn't working for POST
requests, a product of the way that Varnish Cache handles POST data
for caching (basically, it doesn't).  I have corrected the issue and
your requests should be functioning as normal again.  Sorry about the
service interruption, and that's for reporting it!

Best,

Nathan

On Sun, Sep 19, 2010 at 8:18 PM, Lisa Brooks <lisa at issuelab.org> wrote:
> Thank you! Explanation much appreciated.
>
> On Sun, Sep 19, 2010 at 3:02 PM, Nathan Yergler
> <nathan at creativecommons.org> wrote:
>> Hi Lisa,
>>
>> First, egads, sorry that you're having trouble. It appears from the
>> code snippet and what you describe that the main difference between
>> the calls that work and don't (from the browser and from your code)
>> are GET vs. POST.  This leads me to believe that this is a bug we
>> introduced on our end.
>>
>> We recently were facing some performance issues, so enabled caching
>> for calls where that makes sense. I'm sure details was one of those
>> (since when doing a GET, the result is the same no matter what). I
>> suspect that for some reason the POST payload isn't making it through.
>> Sigh.
>>
>> Nathan Kinkade (cc'd), can you look at the Varnish configuration and
>> make sure POST calls to the API are getting passed through directly to
>> the API?
>>
>> Thanks,
>>
>> Nathan
>>
>>
>> On Fri, Sep 17, 2010 at 2:43 PM, Lisa Brooks <lisa at issuelab.org> wrote:
>>> Hi there -
>>>
>>> We have been using the CC API with no problems for several months.
>>> About a week ago we started having a problem with a call to "details".
>>>
>>> We save the URI of the CC license to our database and then use PHP and
>>> cURL to do a post request to retrieve the appropriate text as needed.
>>> Here's the code we've been using without a hitch for months:
>>>
>>> [code]
>>> function getLicenseByURI($uri) // $uri eg.
>>> http://creativecommons.org/licenses/by-nc-nd/3.0/us/
>>> {
>>>   $ch = curl_init('http://api.creativecommons.org/rest/1.5/details');
>>>   curl_setopt($ch, CURLOPT_POST, TRUE);
>>>   curl_setopt($ch, CURLOPT_POSTFIELDS, 'license-uri=' . $uri);
>>>   curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
>>>   $result = curl_exec($ch);
>>>   curl_close($ch);
>>>   return $result;
>>> }
>>> [/code]
>>>
>>> Now, rather than returning the license text, this code returns this
>>> error message:
>>>
>>> <error>
>>>   <id>missingparam</id>
>>>   <message>A value for license-uri must be supplied.</message>
>>> </error>
>>>
>>> I read in the instructions that "Errors occuring from either invalid
>>> input or server-side problems are returned as an XML block, with an
>>> <error> top level element."
>>>
>>> If I do a get by calling up
>>> http://api.creativecommons.org/rest/1.5/details?license-uri=http://creativecommons.org/licenses/by-nc-nd/3.0/us/
>>> in my browser, all works fine.
>>>
>>> I've tried changing the call to use 1.0, dev, staging -- nothing seems
>>> to get the job done anymore.
>>>
>>> Appreciate any help anyone can offer! Thanks!
>>> ~Lisa
>>>
>>> Lisa M. Brooks
>>> Co-director
>>> IssueLab: bringing nonprofit research into focus - http://www.issuelab.org
>>> lisa at issuelab.org
>>> 773-649-1790
>>> _______________________________________________
>>> cc-devel mailing list
>>> cc-devel at lists.ibiblio.org
>>> http://lists.ibiblio.org/mailman/listinfo/cc-devel
>>>
>>
>



More information about the cc-devel mailing list