New update to current build, fixed more issues with the size optimizations for upload.
December 26th, 2011
admin
New version of tiny uploader available.
Been getting a lot of emails asking for the source code for the demo application TwitMee that uses my delphi twitter library, so finally uploaded it, you can get it here:
https://eden.fm/twitmee/
2.7:
– Added a 64 bit version. Context menu works with this one. (note: aero thumbnails capture doesn’t yet work in this version for x64)
– Cropped capture now displays a live view while you select the area.
– Added a “current session” log area, which is deleted after you restart.
Download: https://eden.fm/tinypic-uploader/
Published a new version of my SolusVM client application.
New version supports multiple servers, displays warnings upon an error and there is also a 64-bit version available.

New release of my popular trimmer for DS, grab it here https://eden.fm/ndstoykotrim/
Updated my delphi twitter library and the little twitme tool.
There was a problem with the unix timestamp related to daylight savings time which just recently started here.
[download#7#format=2]
[download#7#format=1]
Little desktop client to monitor the status of your server if you have a SolusVM control panel, for both VPS and Dedicated.

[download#10#format=2]
[download#10#format=1]
Next version will have multiple servers and tray notifications/warnings.
2.52:
* added a caption in the status bar indicating the amount of pictures you can upload to Imgur and the time the limit will reset (50 per hour as per their API).
* changed dropbox for a couple buttons for the upload/capture options for a little more convenience.
Grab it at https://eden.fm/tinypic-uploader/

New version of my Twitter library for Delphi.
– xAuth/SSL support.
There are several changes in the login process, please read the usage.pas and changelog.
[download#7#format=2]
[download#7#format=1]
New version of my popular nds rom trimmer available after more than ~2 years. New:
– Unicode support (filenames in japanese etc)
– Trimming of DSi enhanced roms
Grab it here: https://eden.fm/ndstoykotrim/

February 28th, 2011
admin
[download#7#format=2]
[download#7#format=1]
February 27th, 2011
admin
v0.3:
– Added a method: RetrievePIN(user,pass), with this you can avoid the user having to login and return with an access PIN, the app will retrieve it on its own by simulating a login etc. Use with care, since this method is prone to errors whenever Twitter changes something in their login and auth process. Check usage.pas for details on when to use this.
Note: reposted with a small modification to fix an error in the preauth process, redownload if you got 0.3 before.
[download#7#format=2]
[download#7#format=1]
Here’s the magic:
001 | procedure TwitterCli . RetrievePIN(user,pass: ansistring ); |
003 | pvars,token,oatoken: ansistring ; |
009 | LastReq := trRequestRawAccess; |
012 | ts := TStringList . Create; |
013 | h := THttpCli . Create( nil ); |
016 | url := 'http://twitter.com/oauth/authorize?oauth_token=' +OAuthToken; |
017 | RcvdStream := TMemoryStream . Create; |
018 | OnDocEnd := HTTPClientDocEnd; |
019 | OnHeaderEnd := HTTPClientHeaderEnd; |
020 | OnBeforeHeaderSend := HTTPClientBeforeHeaderSend; |
021 | OnCookie := GrabCookie; |
027 | if DebugMode then if Assigned(DebugMemo) then TMemo(DebugMemo).Lines . Add(e . Message); |
028 | ResultStrings . Text := 'Error: ' +e . Message; |
033 | h . RcvdStream . WriteBuffer(# 0 ' ' , 1 ); |
034 | h . RcvdStream . Position := 0 ; |
035 | ts . LoadFromStream(h . RcvdStream); |
040 | if h . StatusCode <> 200 then |
042 | LastHttpStatus := h . StatusCode; |
043 | ResultStrings . Text := 'Error in raw authentication on 1st step' ; |
044 | h . RcvdStream . Free; h . RcvdStream := nil ; |
052 | if DebugMode then if Assigned(DebugMemo) then with TMemo(DebugMemo) do |
053 | TMemo(DebugMemo).Lines . Add(h . Cookie); |
055 | h . RcvdStream . Free; h . RcvdStream := nil ; |
057 | if FCookie[length(FCookie)] = ';' then Delete(FCookie,length(FCookie), 1 ); |
059 | if DebugMode then if Assigned(DebugMemo) then with TMemo(DebugMemo) do |
061 | TMemo(DebugMemo).Lines . Add( '----------------------------------------' ); |
062 | TMemo(DebugMemo).Lines . Add( '----------------------------------------' ); |
066 | if Pos( 'twttr.form_authenticity_token' , s) > 0 then |
068 | Delete(s, 1 ,Pos( 'twttr.form_authenticity_token' ,s)+ 32 ); |
069 | s := Copy(s, 1 ,Pos( '' '' ,s)- 1 ); |
074 | ResultStrings . Text := 'Error in raw authentication prelogin' ; |
075 | h . RcvdStream . Free; h . RcvdStream := nil ; |
085 | url := 'http://twitter.com/oauth/authorize' ; |
086 | RcvdStream := TMemoryStream . Create; |
087 | SendStream := TMemoryStream . Create; |
088 | pvars := ( 'authenticity_token=' + s + |
089 | '&oauth_token=' + OAuthToken + |
090 | '&session%5Busername_or_email%5D=' + user + |
091 | '&session%5Bpassword%5D=' + pass); |
092 | SendStream . Write (pvars[ 1 ], Length(pvars)); |
093 | SendStream . Seek( 0 , soFromBeginning); |
094 | OnDocEnd := HTTPClientDocEnd; |
095 | OnHeaderEnd := HTTPClientHeaderEnd; |
096 | OnBeforeHeaderSend := HTTPClientBeforeHeaderSend; |
098 | if DebugMode then if Assigned(DebugMemo) then with TMemo(DebugMemo) do |
099 | TMemo(DebugMemo).Lines . Add( 'Cookie before post=' +FCookie); |
100 | ExtraHeader := 'Origin:https://twitter.com' + # 13 # 10 + |
101 | 'Referer:http://twitter.com/oauth/authorize?oauth_token=' + OAuthToken; |
107 | if DebugMode then if Assigned(DebugMemo) then TMemo(DebugMemo).Lines . Add(e . Message); |
108 | ResultStrings . Text := 'Error: ' +e . Message; |
113 | h . RcvdStream . WriteBuffer(# 0 ' ' , 1 ); |
114 | h . RcvdStream . Position := 0 ; |
115 | ts . LoadFromStream(h . RcvdStream); |
121 | if Pos( '<div id="oauth_pin">' ,s) > 0 then |
123 | Delete(s, 1 ,Pos( '<div id="oauth_pin">' ,s)+ 19 ); |
124 | s := Copy(s, 1 ,Pos( '<' ,s)); |
125 | for a := 1 to length(s) do |
126 | if (Ord(s&# 91 ;a&# 93 ;) > 47 ) and (Ord(s[a]) < 58 ) then |
127 | x := x + s&# 91 ;a&# 93 ;; |
130 | LastHttpStatus := h . StatusCode; |
132 | if x = '' then LastHttpStatus := 0 |
135 | if DebugMode then if Assigned(DebugMemo) then TMemo(DebugMemo).Lines . Add( 'PIN=' +x); |
137 | if DebugMode then if Assigned(DebugMemo) then with TMemo(DebugMemo) do |
139 | TMemo(DebugMemo).Lines . Add(ts . Text); |
140 | TMemo(DebugMemo).Lines . Add(h . Cookie); |
143 | if h . StatusCode <> 200 then ResultStrings . Text := 'Error in raw authentication on 2nd step' ; |
146 | h . RcvdStream . Free; h . RcvdStream := nil ; |
147 | h . SendStream . Free; h . SendStream := nil ; |
155 | procedure TwitterCli . GrabCookie(Sender: TObject; const Data: string ; var Accept: Boolean ); |
157 | FCookie := FCookie + Data + ';' ; |
Recent Comments