I would greatly appreciate any help.
Here it is the latest evolution of this piece of code :


"""
class TwitpicOAuthRequest(OAuthRequest):
    def to_header(self, realm='http://api.twitter.com/'):
        headers = super(TwitpicOAuthRequest,
self).to_header(realm=realm)
        return {'X-Verify-Credentials-Authorization':
headers['Authorization']}

def post_photo(request):
    if request.method == 'POST':
        form = PhotoForm(request.POST, request.FILES)
        if not request.session.get('twitter_access_token'):
            return HttpResponse("Not authenticated")
        if form.is_valid():
            access_token = request.session['twitter_access_token']

            params = {
                'oauth_consumer_key': settings.TWITTER_CONSUMER_KEY,
                'oauth_signature_method':"HMAC-SHA1",
                'oauth_token':access_token.key,
                'oauth_timestamp':oauth.generate_timestamp(),
                'oauth_nonce':oauth.generate_nonce(),
                'oauth_version':'1.0'
            }

            consumer =
oauth.OAuthConsumer(key=settings.TWITTER_CONSUMER_KEY,
 
secret=settings.TWITTER_CONSUMER_SECRET)
            token = oauth.OAuthToken(key=access_token.key,
                                     secret=access_token.secret)
            oauth_request = TwitpicOAuthRequest(http_method="GET",
 
#http_url=settings.TWITPIC_API_URL,
 
http_url=settings.TWITTER_VERIFY_CREDENTIALS,
                                          parameters=params)
 
signature=oauth_request.sign_request(OAuthSignatureMethod_HMAC_SHA1(),
consumer,
                                    access_token)

            headers = oauth_request.to_header()
            headers['X-Auth-Service-Provider'] =
settings.TWITTER_VERIFY_CREDENTIALS


            #with multipart_encode
            values = [
                MultipartParam('key',value=settings.TWITPIC_API_KEY),
 
MultipartParam('message',value=form.cleaned_data['message']),
                MultipartParam('media',
                               filename='copine_moi.jpg',
                               filetype='image/jpeg',
                               fileobj=open("/home/yml/Desktop/
copine_moi.jpg","rb"))
            ]

            register_openers()
            datagen, heads = multipart_encode(values)
            headers.update(heads)
            req = urllib2.Request(settings.TWITPIC_API_URL, datagen,
headers)
            # Post to netcat -l -p 9000
            #req = urllib2.Request("http://127.0.0.1:9000";, datagen,
headers)

            #with urlencode
            #values = {}
            #values['key'] = MultipartParam(settings.TWITPIC_API_KEY)
            #values['message'] =
MultipartParam(form.cleaned_data['message'])
            #values['media'] = open("/home/yml/Desktop/
copine_moi.jpg", "rb").read()
            #data = urllib.urlencode(values)
            #req = urllib2.Request(settings.TWITPIC_API_URL, data,
headers)

            response = urllib2.urlopen(req)
            return HttpResponse("the photo is posted")
    else:
        form = PhotoForm(initial={"created_at":datetime.now()})

    return render_to_response("twitter_integration/photo_form.html",
                              {"form":form,},
 
context_instance=RequestContext(request))
"""


On Jun 3, 11:20 am, yml <yann.ma...@gmail.com> wrote:
> Hello,
> I am in the process of writing a python web app that should enable the
> user to post picture to twitpic using the Oauth Echo authorization
> mechanism.
>
> The application is already able to post tweet using the Oauth
> authentication so the access_token is available to us in the session.
>
> So my question to you guys is that it would be great if someone could
> point what is the issue in the code below or paste some sample code
> that upload a picture in python to twitpic.
>
> """"
> # OauthRequest is from the python-oauth lib
> # I overide the to_header method to return a dict with the right key.
>
> class TwitpicOAuthRequest(OAuthRequest):
>     def to_header(self, realm='http://api.twitter.com/'):
>         headers = super(TwitpicOAuthRequest,
> self).to_header(realm=realm)
>         return {'X-Verify-Credentials-Authorization':
> headers['Authorization']}
>
> def post_photo(request):
>     if request.method == 'POST':
>         form = PhotoForm(request.POST, request.FILES)
>         if not request.session.get('twitter_access_token'):
>             return HttpResponse("Not authenticated")
>         if form.is_valid():
>             access_token = request.session['twitter_access_token']
>
>             params = {
>                 'oauth_consumer_key': settings.TWITTER_CONSUMER_KEY,
>                 'oauth_signature_method':"HMAC-SHA1",
>                 'oauth_token':access_token.key,
>                 'oauth_timestamp':oauth.generate_timestamp(),
>                 'oauth_nonce':oauth.generate_nonce(),
>                 'oauth_version':'1.0'
>             }
>
>             consumer =
> oauth.OAuthConsumer(key=settings.TWITTER_CONSUMER_KEY,
>
> secret=settings.TWITTER_CONSUMER_SECRET)
>             token = oauth.OAuthToken(key=access_token.key,
>                                      secret=access_token.secret)
>             oauth_request = TwitpicOAuthRequest(http_method="POST",
>
> http_url=settings.TWITPIC_API_URL,
>                                           parameters=params)
>
> signature=oauth_request.build_signature(OAuthSignatureMethod_HMAC_SHA1(),
> consumer,
>                                     access_token)
>
>             headers = oauth_request.to_header()
>             headers['X-Auth-Service-Provider'] = 'https://
> api.twitter.com/1/account/verify_credentials.json'
>             headers['X-Verify-Credentials-Authorization'] += ',
> oauth_signature="%s"' %signature
>
>             values = {}
>             values['key'] = settings.TWITPIC_API_KEY
>             values['message'] = form.cleaned_data['message']
>             # the path to the file is hardcoded here in the future it
> will be taken from the from
>             values['media'] = open("/home/yml/Desktop/copine_moi.jpg",
> "rb")
>             register_openers()
>             datagen, heads = multipart_encode(values)
>             headers.update(heads)
>
>             req = urllib2.Request(settings.TWITPIC_API_URL, datagen,
> headers)
>             response = urllib2.urlopen(req)
>
>             return HttpResponse("the photo is posted")
>     else:
>         form = PhotoForm(initial={"created_at":datetime.now()})
>
>     return render_to_response("twitter_integration/photo_form.html",
>                               {"form":form,},
>
> context_instance=RequestContext(request))
> """"

Reply via email to