Changed advertised server technology response header (#258)

was: Server -> dart:io with Self
now: X-Powered-By -> Dart with package:shelf

Will make it easier to detect pkg:shelf when used on cloud providers, etc
diff --git a/pkgs/shelf/CHANGELOG.md b/pkgs/shelf/CHANGELOG.md
index 913f676..a4dac0d 100644
--- a/pkgs/shelf/CHANGELOG.md
+++ b/pkgs/shelf/CHANGELOG.md
@@ -1,3 +1,10 @@
+## 1.3.2
+
+* `shelf_io.dart`
+    * Started setting `X-Powered-By` response header
+      to `Dart with package:shelf`.
+    * Stopped setting `Server` header (with value `dart:io with Shelf`).
+
 ## 1.3.1
 
 * Update the pubspec `repository` field.
diff --git a/pkgs/shelf/lib/shelf_io.dart b/pkgs/shelf/lib/shelf_io.dart
index 7e1cabf..3387b74 100644
--- a/pkgs/shelf/lib/shelf_io.dart
+++ b/pkgs/shelf/lib/shelf_io.dart
@@ -217,8 +217,9 @@
     httpResponse.headers.set(HttpHeaders.transferEncodingHeader, 'chunked');
   }
 
-  if (!response.headers.containsKey(HttpHeaders.serverHeader)) {
-    httpResponse.headers.set(HttpHeaders.serverHeader, 'dart:io with Shelf');
+  if (!response.headers.containsKey(_xPoweredByResponseHeader)) {
+    httpResponse.headers
+        .set(_xPoweredByResponseHeader, 'Dart with package:shelf');
   }
 
   if (!response.headers.containsKey(HttpHeaders.dateHeader)) {
@@ -230,6 +231,11 @@
       .then((_) => httpResponse.close());
 }
 
+/// Common header to advertise the server technology being used.
+///
+/// See https://webtechsurvey.com/response-header/x-powered-by
+const _xPoweredByResponseHeader = 'X-Powered-By';
+
 // TODO(kevmoo) A developer mode is needed to include error info in response
 // TODO(kevmoo) Make error output plugable. stderr, logging, etc
 Response _logError(Request request, String message, StackTrace stackTrace) {
diff --git a/pkgs/shelf/pubspec.yaml b/pkgs/shelf/pubspec.yaml
index a74d810..cdb5473 100644
--- a/pkgs/shelf/pubspec.yaml
+++ b/pkgs/shelf/pubspec.yaml
@@ -1,5 +1,5 @@
 name: shelf
-version: 1.3.1
+version: 1.3.2
 description: >
   A model for web server middleware that encourages composition and easy reuse.
 repository: https://github.com/dart-lang/shelf/tree/master/pkgs/shelf
diff --git a/pkgs/shelf/test/shelf_io_test.dart b/pkgs/shelf/test/shelf_io_test.dart
index 417f8cb..0887585 100644
--- a/pkgs/shelf/test/shelf_io_test.dart
+++ b/pkgs/shelf/test/shelf_io_test.dart
@@ -353,24 +353,25 @@
     });
   });
 
-  group('server header', () {
-    test('defaults to "dart:io with Shelf"', () async {
+  group('X-Powered-By header', () {
+    const poweredBy = 'x-powered-by';
+    test('defaults to "Dart with package:shelf"', () async {
       await _scheduleServer(syncHandler);
 
       var response = await _get();
-      expect(response.headers,
-          containsPair(HttpHeaders.serverHeader, 'dart:io with Shelf'));
+      expect(
+        response.headers,
+        containsPair(poweredBy, 'Dart with package:shelf'),
+      );
     });
 
     test('defers to header in response', () async {
       await _scheduleServer((request) {
-        return Response.ok('test',
-            headers: {HttpHeaders.serverHeader: 'myServer'});
+        return Response.ok('test', headers: {poweredBy: 'myServer'});
       });
 
       var response = await _get();
-      expect(
-          response.headers, containsPair(HttpHeaders.serverHeader, 'myServer'));
+      expect(response.headers, containsPair(poweredBy, 'myServer'));
     });
   });