Check-in [4f3cbf49bf]
Not logged in
Overview
Comment:Add support for using multiple API keys in one server request.
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: 4f3cbf49bf89e4bc628453a6b909538f5d77cdc8
User & Date: mistachkin on 2016-10-17 21:28:33
Other Links: manifest | tags
Context
2016-10-17
22:48
Add more (optional) verbosity to the URI downloading procedure. check-in: dbe5f9fb75 user: mistachkin tags: trunk
21:28
Add support for using multiple API keys in one server request. check-in: 4f3cbf49bf user: mistachkin tags: trunk
2016-10-16
08:33
Add 'manifest' Fossil settings file. check-in: df6fd4a8eb user: mistachkin tags: trunk
Changes

Modified client/1.0/pkgr.eagle from [d8bb8d2052] to [34c15c37b8].

441
442
443
444
445
446
447
448
449
450
451
452
453
454








455
456

457
458
459
460
461
462
463
464
465
466
467


468

469
470
471
472










473
474
475

476
477
478










479
480
481
482
483
484
485
441
442
443
444
445
446
447







448
449
450
451
452
453
454
455
456

457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472




473
474
475
476
477
478
479
480
481
482
483
484
485
486



487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503







-
-
-
-
-
-
-
+
+
+
+
+
+
+
+

-
+











+
+

+
-
-
-
-
+
+
+
+
+
+
+
+
+
+



+
-
-
-
+
+
+
+
+
+
+
+
+
+







    }

    return https://urn.to/r/pkg; # NOTE: System default.
  }

  #
  # NOTE: This procedure returns the full URI to use when looking up a
  #       specific package via the package repository server.  The apiKey
  #       argument is the API key to use -OR- an empty string if a public
  #       package is being looked up.  The package argument is the name
  #       of the package being looked up, it cannot be an empty string.
  #       The version argument is the specific version being looked up
  #       -OR- an empty string for any available version.  No HTTP request
  #       is issued by this procedure; it just returns the URI to use.
  #       specific package via the package repository server.  The apiKeys
  #       argument is the list of API keys to use -OR- an empty list if a
  #       public package is being looked up.  The package argument is the
  #       name of the package being looked up, it cannot be an empty
  #       string.  The version argument is the specific version being
  #       looked up -OR- an empty string for any available version.  There
  #       are no HTTP requests issued by this procedure; it simply returns
  #       the URI to use.
  #
  proc getLookupUri { apiKey package version } {
  proc getLookupUri { apiKeys package version } {
    set baseUri [getLookupBaseUri]

    if {[string length $baseUri] == 0} then {
      return ""
    }

    #
    # NOTE: Build the HTTP request URI using the specified query parameter
    #       values, escaping them as necessary.  Also, include the standard
    #       query parameters with constant values for this request type.
    #
    set anonymousApiKey ""

    if {[isEagle]} then {
      if {[llength $apiKeys] > 0} then {
      return [appendArgs \
          $baseUri ?raw=1&method=lookup&apiKey= [uri escape uri $apiKey] \
          &package= [uri escape uri $package] &version= [uri escape uri \
          $version]]
        return [appendArgs \
            $baseUri ?raw=1&method=lookup&apiKeys= [uri escape uri \
            [join $apiKeys ,]] &package= [uri escape uri $package] \
            &version= [uri escape uri $version]]
      } else {
        return [appendArgs \
            $baseUri ?raw=1&method=lookup&apiKey= [uri escape uri \
            $anonymousApiKey] &package= [uri escape uri $package] \
            &version= [uri escape uri $version]]
      }
    } else {
      package require http 2.0

      if {[llength $apiKeys] > 0} then {
      return [appendArgs \
          $baseUri ? [::http::formatQuery raw 1 method lookup \
          apiKey $apiKey package $package version $version]]
        return [appendArgs \
            $baseUri ? [::http::formatQuery raw 1 method lookup \
            apiKeys [join $apiKeys ,] package $package version \
            $version]]
      } else {
        return [appendArgs \
            $baseUri ? [::http::formatQuery raw 1 method lookup \
            apiKey $anonymousApiKey package $package version \
            $version]]
      }
    }
  }

  #
  # NOTE: This procedure returns the version of the package that should be
  #       used to lookup the associated [package ifneeded] script -OR- an
  #       empty string if no such version exists.  The package argument is
522
523
524
525
526
527
528
529
530
531
532
533
534
535







536
537

538
539
540

541
542
543
544
545
546
547
540
541
542
543
544
545
546







547
548
549
550
551
552
553
554

555
556
557

558
559
560
561
562
563
564
565







-
-
-
-
-
-
-
+
+
+
+
+
+
+

-
+


-
+








    return $result
  }

  #
  # NOTE: This procedure issues an HTTP request that should return metadata
  #       that can be used to load and/or provide the specified package.
  #       The apiKey argument is the API key to use -OR- an empty string if
  #       a public package is being looked up.  The package argument is the
  #       name of the package, it cannot be an empty string.  The version
  #       argument is the specific version being looked up -OR- an empty
  #       string for any available version.  This procedure may raise script
  #       errors.  All line-endings are normalized to Unix-style; therefore,
  #       all script signatures must assume this.
  #       The apiKeys argument is the list of API keys to use -OR- an empty
  #       list if a public package is being looked up.  The package argument
  #       is the name of the package, it cannot be an empty string.  The
  #       version argument is the specific version being looked up -OR- an
  #       empty string for any available version.  This procedure may raise
  #       script errors.  All line-endings are normalized to Unix-style;
  #       therefore, all script signatures must assume this.
  #
  proc getLookupData { apiKey package version } {
  proc getLookupData { apiKeys package version } {
    variable verboseUriDownload

    set uri [getLookupUri $apiKey $package $version]
    set uri [getLookupUri $apiKeys $package $version]

    if {[string length $uri] == 0} then {
      return ""
    }

    if {$verboseUriDownload} then {
      pkgLog [appendArgs \
1634
1635
1636
1637
1638
1639
1640
1641

1642
1643
1644
1645
1646
1647





1648
1649
1650
1651
1652





1653
1654
1655


1656
1657
1658
1659
1660













1661
1662
1663
1664
1665
1666
1667
1652
1653
1654
1655
1656
1657
1658

1659
1660





1661
1662
1663
1664
1665
1666




1667
1668
1669
1670
1671
1672


1673
1674





1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694







-
+

-
-
-
-
-
+
+
+
+
+

-
-
-
-
+
+
+
+
+

-
-
+
+
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+







  #
  # <public>
  proc getPackageFromRepository { package version caller } {
    #
    # NOTE: Get the list of API keys and try each one, in order, until
    #       the package is found.
    #
    set apiKeys [getApiKeys]; lappend apiKeys ""
    set apiKeys [getApiKeys]

    foreach apiKey $apiKeys {
      #
      # NOTE: Issue the lookup request to the remote package repository.
      #
      set data [getLookupData $apiKey $package $version]
    #
    # NOTE: Issue the non-anonymous lookup request to the remote
    #       package repository.
    #
    set data [getLookupData $apiKeys $package $version]

      #
      # NOTE: Attempt to grab the lookup code from the response data.
      #
      set code [getLookupCodeFromData $data]
    #
    # NOTE: Attempt to grab the lookup code from the non-anonymous
    #       response data.
    #
    set code [getLookupCodeFromData $data]

      #
      # NOTE: Did the lookup operation succeed?  If so, stop trying
    #
    # NOTE: If necessary, fallback with to an anonymous request.
      #       other API keys.
      #
      if {[isLookupCodeOk $code]} then {
        break
      }
    #
    if {![isLookupCodeOk $code]} then {
      #
      # NOTE: Issue the anonymous lookup request to the remote
      #       package repository.
      #
      set data [getLookupData [list] $package $version]

      #
      # NOTE: Attempt to grab the lookup code from the anonymous
      #       response data.
      #
      set code [getLookupCodeFromData $data]
    }

    #
    # NOTE: Attempt to grab the lookup data from the response data.
    #       Upon failure, this should contain the error message.
    #
    set result [getLookupResultFromData $data]

Modified client/1.0/pkgr.eagle.asc from [2908426844] to [878b5c2c87].

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17













18
1
2
3
4













5
6
7
8
9
10
11
12
13
14
15
16
17
18




-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2
Comment: Eagle Package Repository

iQIcBAABCAAGBQJX7A78AAoJEFAslq9JXcLZk3kP/3kmLvp+dcnZSqskyXduQAGo
ZCpzS6W2wM/xaweqUppHWaYvkhvDM6wmKSLFG5W0bWNnTDqaqXTnonQQnTq9dOHg
2GW5Xlhekvl1S+nHT5ymF8saQSLuyoTuhR2qmPFwgSdYVfiTTaf+KmlwmEgEUxTC
1nT8m0fDtcaizTnYExddMUizu8xwf0i2g6l8VTOkabGdekdXSM6YaFPI+uj8MxI2
ZtgE6FEFDGK1JaFcRhGnmnj5qQ8/eitGROoLHd5IIYOkoT9C/QmWg4Slenp0a48x
sIPh7kH82f2DDR0h6uSjLnT92ivxQtkN4ypI8vbLhoY8t/AqzUIXJHvJwg24wpCK
1JticeHO5ai3+ELHToDOBmP3VUXv9wzdmyJT5cxngYsbMddH2H+wVH8oEYsemrsA
a4Bjv1nOkDPTkndDWvwmlSjyV8eQwv+1uxLFxD6mzTm0XVfEZjPo03Vr0XsnplKR
5XK/HeoR/idDN0hytogN1c+Y0UwHU1LBY6WgiYVOy7Qtmk8XRg8kqUlscERjrlUN
y28UiMk2feZDWcufdeW0zFomCZUg66yYE+8p+s0k/0ZhUY/dhbr+szdt9zmpH900
mShLyLfMECKknK+maUYcy99CZx44UO3rU2Xw1FaXrBn4bf6+MSWMX4n3aTI42k2J
iRQmgtxXiHWTGdZ1Lm37
=uaXk
iQIcBAABCAAGBQJYBT/8AAoJEFAslq9JXcLZWGoQAIA/IPYRK0t30qWVe2eQIR1M
vbXGy5XyQaQQHmTHDY61y5kFbnlJoSrwJRX46uTttkp3u0FnfxtLEYQSvIVBWkYx
IonkPHcgRQpfJXSDqV/z6bdMApTwkoU9iOAtK9rH4qq1CfYoi4WGpG2n/KPqfXtm
4Cs6WUVywhNu4ZKZABDqpIDezxWsR6SujBGRKZwfbTLGdnpXJKT5BZS+GGKwp7ep
noWRpOctG2PBhs4YWnD9awcsb8+QYI8GvAbQNVL4NqFqtOUMGLcJof6Lp+/F+KQc
J4gMnrbN+u/k/Sy4oOHryz19m9+Qrnc3WzYh+NpYQeDUmmP1bSUNNZ/x5UAKjpyb
45ndI/Jjtq6VcQt/j16VmBN89ybVe3SE5xuyFoLi6tgpjdO2DO59WxU3lIQ1NQoT
CKz5H/RrYX1is2BqcB1NY2D3XvPI5tuf2bylOufCsuad9B7WQOt4hwyJmLqG+57+
eoX2nZVFfdiZEAvQv0x644C96pC3pTAdeHq3YS+M1JpOKoi1vVx2Vxj+XJMo9dR7
IW+K1Q1fM9RBJOiw7M5k9ZSQ6JCJaWXb76EY4FA4YKb8VqwapvoUpu5+ff67O0px
66qbVL5oUxLW2hU9SkYPN0eM/wBj8+aFWPcc2QgoUUP/M2TlXPJgdT6kv4WRcrL3
vO6v4yswIT4zc1eq4Tvx
=crRO
-----END PGP SIGNATURE-----

Modified client/1.0/pkgr.eagle.harpy from [0f6a5160ce] to [6f9feb1467].

17
18
19
20
21
22
23
24

25
26
27

28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66




































67
68
17
18
19
20
21
22
23

24
25
26

27
28
29
30




































31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68







-
+


-
+



-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+


    THE ASSOCIATED SOFTWARE MAY NOT WORK PROPERLY IF THIS FILE IS ALTERED.
-->
<Certificate xmlns="https://eagle.to/2011/harpy"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Protocol>None</Protocol>
  <Vendor>Mistachkin Systems</Vendor>
  <Id>538013fa-7c77-40b5-bf50-6fd1db454a75</Id>
  <Id>30bda9cc-69bd-4688-8b96-96e4e82a982b</Id>
  <HashAlgorithm>SHA512</HashAlgorithm>
  <EntityType>Script</EntityType>
  <TimeStamp>2016-09-28T18:41:13.4453125Z</TimeStamp>
  <TimeStamp>2016-10-17T21:17:25.9542266Z</TimeStamp>
  <Duration>-1.00:00:00</Duration>
  <Key>0x9559f6017247e3e2</Key>
  <Signature>
    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
  </Signature>
</Certificate>

Modified client/1.0/pkgr.eagle.harpy.asc from [4f4f352cb7] to [bbbdef1e6e].

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17













18
1
2
3
4













5
6
7
8
9
10
11
12
13
14
15
16
17
18




-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2
Comment: Eagle Package Repository

iQIcBAABCAAGBQJX7A79AAoJEFAslq9JXcLZ+aMQAI+yYLpA/0pRKbZHOCAWAShb
dlJrNcMOoI9+OWXYP86SPLzx5LzW/XGiq0JclR0jiZOVSsLEr3utW+9LWg15erC9
2DUf8mmlwEm7nUjc6pteJtg1DzliIn2+L44xZpxSqmPkCb27Lnw7hZ9c3bvnbp9M
ygMvyHdy70suepuxJIgnwaGGC2GYPCxFOAqiCf8xWxcMUbNsHVkS79PBnRGvNQvl
ybJoHLQGBGVB7zahSDItqgwt8wsqiB0W1WJQtjQ8wJQgKajgO6G3f56fo1YBB8zD
1DoFJT+cWp5uyCEeGubb952ZYgBNypkzrTLYPrtm4WpWjXdOJFhDih4MmEWypEDM
3Gye8TOSMlQ5ecjuy/NQcQiyTeTw61OYVt8cvaeYng5FB7Xl0pUdxYyNYWvZPJzw
IKpvX7gWPg42H6iZegKRALfKLeSuwTcudi0AYylELEdwIvbhOdri5ShOyJrzlRvy
uAnSn+iUHDVxUkkB+3NukRu6/IZRRdXDeZM4/LFTPfQMwCGgCmlDpMqDrqiV8fcJ
CzjruOjsUxmKynT7bR4SGWiYGardcrNcmnHueBh5mx7w8P+EUGlvmQS9DLf5kfhK
+NVgjEJ7DkVVc5Ymmo8d9+55tfKPx6QN4fykj5IHBk/z3fj1yup3GnG/W1T89AcD
erf7/lONa+FNcXte7E/c
=nhxk
iQIcBAABCAAGBQJYBT/+AAoJEFAslq9JXcLZr3EQAK21y4o0OA6UEZNVnkE0lMRH
HIycdG/mXLuL8ulshgP7U7nKHBu3kbglDvd9+uQDyzryVBIBKxXoeNZJ15jB0lPi
ZjTLuMtKk7nnwwMu280Kmo2d7iVNl2GX1BhjloGvsNelb/Hzcc6YEt4aqlGU0qVB
dQAeI5KKnDKGbT/aede4qO80kcY1MPGWeE0sc6m/pJNWzPgt4bhlKqqhE/FxjgQ+
Ius/Bc1OM2NFFFoBQ3Xb6zg48UtOCJfqBvTG18p73Q0mUlfwLZBv3PW56jYa6c7/
PViAPUddridOrs4D5iR4CpnUtGgNxiXLiH91ucfhC+Cc3IIduXn8I2Kuwd7DZ8R5
M6QzwrPxpHs7eBfL3Nw4a3hQKnNQX2ljXCdOyQTYu5Ijcx9tua/HgAn/bwuYpfJc
EJAUYYs42u71AYdRl+99CG++OQ2730vauQUwpQxHwymKssQOz5IawTKa2L06O1dh
QQAc+3YM8j5HD5x3BjoQa0mMq2AJzR6AmgHoWEOWWiks4DS4DM8Hb6wEulGX5Sba
H4f2LJuNVIrYOllUd0TZDIoDPyTpzsvOnkwkTsX4X7JApXp9p8tiSfYjl+1hqNfH
fXMEvBdnBxSwn0/d6tOejK7n/NiqCcLz1Wpny2QFqJ4IlEs10p+5xAJm/9h1Hm76
Ao/TX4b8851HTKKS7n7d
=MsgF
-----END PGP SIGNATURE-----