Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Changes In Branch tkt-8fd2561785-ak Excluding Merge-Ins
This is equivalent to a diff from 0e381eadd7 to a0ec57b1bd
2018-01-24
| ||
20:40 | Tkt [8fd2561785] oauth/oauth <B,D> Merged fix of query default to GET, was POST, into release. check-in: 52bd859b74 user: aku tags: tcllib-1-19-rc | |
20:36 | Tkt [8fd2561785] oauth/oauth <B,D> Merged fix of query default to GET, was POST. check-in: 738baecbc3 user: aku tags: trunk | |
2017-05-29
| ||
22:24 | Merged json fixes check-in: dbdaf3dff4 user: aku tags: trunk | |
22:23 | Extended the token regexp with special cases for partial numbers (no leading cardinal, no fraction), with other parts becoming mandatory. This fixes mismatching and misconversion of numbers like "1." and ".1". Added tests for these cases. Closed-Leaf check-in: b27e9f8077 user: aku tags: tkt-c974e352d2-ak | |
20:56 | Manually applied the patch from the ticket. Further some cleanup and simplification (Use 8.5 features (lassign, {*})) Closed-Leaf check-in: a0ec57b1bd user: aku tags: tkt-8fd2561785-ak | |
19:34 | Added "Jacobi symbol" to numtheory package and corrected the minimum Tcl version for the geometry package. (Still need to check what the failures with Tcl 8.5 are all about) check-in: 0e381eadd7 user: arjenmarkus tags: trunk | |
19:05 | Ticket 214986cedd: Reworked documentation of splitx to describe the handling of capture groups better. check-in: 0512fb6a9e user: aku tags: trunk | |
Changes to modules/oauth/oauth.man.
1 | [comment {-*- tcl -*- doctools manpage}] | | | 1 2 3 4 5 6 7 8 9 | [comment {-*- tcl -*- doctools manpage}] [vset PACKAGE_VERSION 1.0.1] [manpage_begin oauth n [vset PACKAGE_VERSION]] [keywords {oauth}] [keywords {RFC 5849}] [keywords {RFC 2718}] [keywords twitter] [copyright {2014 Javi P. <[email protected]>}] [moddesc {oauth}] |
︙ | ︙ |
Changes to modules/oauth/oauth.tcl.
|
| | | 1 2 3 4 5 6 7 8 | #!/bin/sh # the next line will restart with tclsh wherever it is \ exec tclsh "$0" "$@" # oauth.tcl -*- tcl -*- # This module pretend give full support to API version 1.1 of Twitter # according to API v1.1’s Authentication Model # |
︙ | ︙ | |||
21 22 23 24 25 26 27 | # 1.5 Timestamp (oauth_timestamp) time in unix format of the request # 1.6 Token (oauth_token) a parameter you can obtain in your account settings # 1.7 Version (oauth_version) the OAuth version, actually 1.0 # TODO: create online documentation package require Tcl 8.5 | | | 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | # 1.5 Timestamp (oauth_timestamp) time in unix format of the request # 1.6 Token (oauth_token) a parameter you can obtain in your account settings # 1.7 Version (oauth_version) the OAuth version, actually 1.0 # TODO: create online documentation package require Tcl 8.5 package provide oauth 1.0.1 package require http package require tls package require base64 package require sha1 http::register https 443 ::tls::socket |
︙ | ︙ | |||
121 122 123 124 125 126 127 | # OAuth oauth_consumer_key="xvz1evFS4wEEPTGEFPHBog", # oauth_nonce="kYjzVBB8Y0ZFabxSWbWovY3uYSQ2pTgmZeNu2VS4cg", # oauth_signature="tnnArxj06cWHq44gCs1OSKk%2FjLY%3D", # oauth_signature_method="HMAC-SHA1", # oauth_timestamp="1318622958", # oauth_token="370773112-GmHxMAgYyLbNEtIKZeRNFsMKPR9EyMZeS9weJAEb", # oauth_version="1.0" | | | 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 | # OAuth oauth_consumer_key="xvz1evFS4wEEPTGEFPHBog", # oauth_nonce="kYjzVBB8Y0ZFabxSWbWovY3uYSQ2pTgmZeNu2VS4cg", # oauth_signature="tnnArxj06cWHq44gCs1OSKk%2FjLY%3D", # oauth_signature_method="HMAC-SHA1", # oauth_timestamp="1318622958", # oauth_token="370773112-GmHxMAgYyLbNEtIKZeRNFsMKPR9EyMZeS9weJAEb", # oauth_version="1.0" proc ::oauth::header {baseURL {postQuery {}}} { variable oauth if {$oauth(-signmethod) eq ""} { Error "ERROR: invalid argument for -signmethod." BAD SIGN-METHOD } if {[package vcompare $oauth(-oauthversion) 1.0] != 0} { Error "ERROR: this script only supports oauth_version 1.0" \ |
︙ | ︙ | |||
151 152 153 154 155 156 157 | lappend paramList "oauth_consumer_key=$oauth(-consumerkey)" lappend paramList "oauth_nonce=$randomKey" lappend paramList "oauth_signature_method=$oauth(-signmethod)" lappend paramList "oauth_timestamp=$timestamp" lappend paramList "oauth_token=$oauth(-accesstoken)" lappend paramList "oauth_version=$oauth(-oauthversion)" | | < < < < | | > > | | > | | < < < < | > | | | | | | | 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 | lappend paramList "oauth_consumer_key=$oauth(-consumerkey)" lappend paramList "oauth_nonce=$randomKey" lappend paramList "oauth_signature_method=$oauth(-signmethod)" lappend paramList "oauth_timestamp=$timestamp" lappend paramList "oauth_token=$oauth(-accesstoken)" lappend paramList "oauth_version=$oauth(-oauthversion)" set header $paramList if {$postQuery eq {}} { lassign [Split $baseURL ?] url queryString set httpMethod GET } else { set url $baseURL set queryString $postQuery set httpMethod POST } lappend paramList {*}[split $queryString &] set headerQ [QuoteValues $header] set paramString [join [lsort -dictionary $paramList] &] lappend baseList $httpMethod lappend baseList [PercentEncode $url] lappend baseList [PercentEncode $paramString] set signString [join $baseList &] set signKey "[PercentEncode $oauth(-consumersecret)]&[PercentEncode $oauth(-accesstokensecret)]" set signature [base64::encode [sha1::hmac -bin -key $signKey $signString]] lappend headerQ "oauth_signature=\"[PercentEncode $signature]\"" if {$oauth(-debug) == 1} { puts {oauth::header: Authorization Oauth} foreach line $header { puts "\t$line" } puts "\nBaseString: $signString" } return "Authorization [list [concat OAuth [join [lsort -dictionary $headerQ] {, }]]]" } # query -- # Sends to oauth API url the proper oauth header and querybody # returning the raw data from Twitter for your parse. # Arguments: # baseURL api host URL with ?arguments if it's a GET request # postQuery POST query if it's a POST query # Result: # The result will be list with 2 arguments. # The first argument is an array with the http's header # and the second one is JSON data received from the server. The header is # very important because it reports your rest API limit and will # inform you if you can get your account suspended. proc ::oauth::query {baseURL {postQuery {}}} { variable oauth if {$oauth(-consumerkey) eq ""} { Error "ERROR: please define your consumer key.\ [namespace current]::config -consumerkey <...>" \ BAD CONSUMER-KEY } if {$oauth(-consumersecret) eq ""} { |
︙ | ︙ | |||
225 226 227 228 229 230 231 | } if {$oauth(-accesstokensecret) eq ""} { Error "ERROR: please define your app's access token secret.\ [namespace current]::config -accesstokensecret <...>" \ BAD ACCESS-TOKEN-SECRET } if {$postQuery eq ""} { | | < | > | | | | < < > > > > > > > > > > > > > > > > > > > | 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 | } if {$oauth(-accesstokensecret) eq ""} { Error "ERROR: please define your app's access token secret.\ [namespace current]::config -accesstokensecret <...>" \ BAD ACCESS-TOKEN-SECRET } if {$postQuery eq ""} { lassign [Split $baseURL ?] url queryString set httpMethod GET } else { set url $baseURL set queryString $postQuery set httpMethod POST } if {$httpMethod eq "GET"} { if {$queryString ne {}} { append url ? $queryString } set requestBody {} } else { set requestBody $queryString } if {$queryString ne {}} { set header [header $url $queryString] } else { set header [header $url] } http::config \ -proxyhost $oauth(-proxyhost) \ -proxyport $oauth(-proxyport) \ -useragent $oauth(-useragent) set token [http::geturl $baseURL \ -headers $header \ -query $requestBody \ -method $httpMethod \ -timeout $oauth(-timeout)] set ncode [http::ncode $token] set data [http::data $token] upvar #0 $token state lappend result [array names state] lappend result $data http::cleanup $token return $result } # QuoteValues -- # Add double-quotes around all values in the parameter string # and return a list of modified parameter assignments. proc ::oauth::QuoteValues {params} { set tmp {} foreach parameter $header { lassign [Split $parameter =] key value lappend tmp "${key}=\"${value}\"" } return $tmp } # Split - # Split the string on the first separator # and return both parts as a list. proc ::oauth::Split {string sep} { regexp "{^(\[^${sep}\]+)${sep}(.*)\$" $string -> key value list $key $value } # PercentEncode -- # Encoding process in http://tools.ietf.org/html/rfc3986#section-2.1 # for Twitter authentication. (http::formatQuery is lowcase) proc ::oauth::PercentEncode {string} { set utf8String [encoding convertto utf-8 $string] return [string map {"\n" "%0A"} \ |
︙ | ︙ |
Changes to modules/oauth/pkgIndex.tcl.
1 | if {![package vsatisfies [package provide Tcl] 8.5]} {return} | | | 1 2 | if {![package vsatisfies [package provide Tcl] 8.5]} {return} package ifneeded oauth 1.0.1 [list source [file join $dir oauth.tcl]] |