├── .gitattributes
├── .gitignore
├── AndroidJavaClient
├── .gitignore
├── app
│ ├── .gitignore
│ ├── build.gradle
│ ├── proguard-rules.pro
│ └── src
│ │ └── main
│ │ ├── AndroidManifest.xml
│ │ ├── java
│ │ └── com
│ │ │ └── microsoft
│ │ │ └── aspnet
│ │ │ └── signalr
│ │ │ └── samples
│ │ │ └── androidjavaclient
│ │ │ └── MainActivity.java
│ │ └── res
│ │ ├── drawable-v24
│ │ └── ic_launcher_foreground.xml
│ │ ├── drawable
│ │ └── ic_launcher_background.xml
│ │ ├── layout
│ │ └── activity_main.xml
│ │ ├── mipmap-anydpi-v26
│ │ ├── ic_launcher.xml
│ │ └── ic_launcher_round.xml
│ │ ├── mipmap-hdpi
│ │ ├── ic_launcher.png
│ │ └── ic_launcher_round.png
│ │ ├── mipmap-mdpi
│ │ ├── ic_launcher.png
│ │ └── ic_launcher_round.png
│ │ ├── mipmap-xhdpi
│ │ ├── ic_launcher.png
│ │ └── ic_launcher_round.png
│ │ ├── mipmap-xxhdpi
│ │ ├── ic_launcher.png
│ │ └── ic_launcher_round.png
│ │ ├── mipmap-xxxhdpi
│ │ ├── ic_launcher.png
│ │ └── ic_launcher_round.png
│ │ └── values
│ │ ├── colors.xml
│ │ ├── strings.xml
│ │ └── styles.xml
├── build.gradle
├── gradle.properties
├── gradle
│ └── wrapper
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
└── settings.gradle
├── CODE-OF-CONDUCT.md
├── ChatSample
├── ChatSample.sln
└── ChatSample
│ ├── ChatSample.csproj
│ ├── Hubs
│ └── ChatHub.cs
│ ├── Program.cs
│ ├── Startup.cs
│ └── wwwroot
│ ├── index.html
│ └── lib
│ ├── signalr.js
│ ├── signalr.min.js
│ └── third-party-notices.txt
├── MoveShape
├── MoveShape.sln
└── MoveShape
│ ├── Hubs
│ └── ShapeHub.cs
│ ├── MoveShape.csproj
│ ├── Program.cs
│ ├── Startup.cs
│ └── wwwroot
│ ├── index.html
│ └── lib
│ ├── signalr.js
│ ├── signalr.min.js
│ └── third-party-notices.txt
├── PullRequestR
├── android
│ ├── PullRequestR.iml
│ ├── android.iml
│ ├── app
│ │ ├── .gitignore
│ │ ├── app.iml
│ │ ├── build.gradle
│ │ ├── proguard-rules.pro
│ │ └── src
│ │ │ └── main
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── java
│ │ │ └── com
│ │ │ │ └── example
│ │ │ │ └── pullrequestr
│ │ │ │ └── MainActivity.java
│ │ │ └── res
│ │ │ ├── drawable-v24
│ │ │ └── ic_launcher_foreground.xml
│ │ │ ├── drawable
│ │ │ └── ic_launcher_background.xml
│ │ │ ├── layout
│ │ │ ├── activity_main.xml
│ │ │ └── pullrequestlayout.xml
│ │ │ ├── mipmap-anydpi-v26
│ │ │ ├── ic_launcher.xml
│ │ │ └── ic_launcher_round.xml
│ │ │ ├── mipmap-hdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-mdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xxxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ └── values
│ │ │ ├── colors.xml
│ │ │ ├── strings.xml
│ │ │ └── styles.xml
│ ├── build.gradle
│ ├── gradle.properties
│ ├── gradle
│ │ └── wrapper
│ │ │ ├── gradle-wrapper.jar
│ │ │ └── gradle-wrapper.properties
│ ├── gradlew
│ ├── gradlew.bat
│ └── settings.gradle
├── function-dotnet
│ ├── .vscode
│ │ ├── extensions.json
│ │ ├── launch.json
│ │ ├── settings.json
│ │ └── tasks.json
│ ├── Negotiate.cs
│ ├── PullRequests.cs
│ ├── function-dotnet.csproj
│ ├── host.json
│ └── local.settings.json
├── function-javascript
│ ├── .gitignore
│ ├── .vscode
│ │ ├── extensions.json
│ │ ├── launch.json
│ │ ├── settings.json
│ │ └── tasks.json
│ ├── extensions.csproj
│ ├── host.json
│ ├── negotiate
│ │ ├── function.json
│ │ └── index.js
│ ├── proxies.json
│ └── pullRequests
│ │ ├── function.json
│ │ └── index.js
├── html
│ └── index.html
├── project.code-workspace
└── readme.md
├── README.md
├── StockTickR
├── CsharpClient
│ ├── CsharpClient.csproj
│ └── Program.cs
├── NodeClient
│ ├── README.md
│ ├── app.js
│ ├── package-lock.json
│ └── package.json
├── README.md
├── StockTickR.sln
└── StockTickRApp
│ ├── Hubs
│ └── StockTickerHub.cs
│ ├── ObservableExtensions.cs
│ ├── Program.cs
│ ├── Startup.cs
│ ├── Stock.cs
│ ├── StockTickR.csproj
│ ├── StockTicker.cs
│ └── wwwroot
│ ├── StockTicker.css
│ ├── index.html
│ └── lib
│ ├── signalr.js
│ ├── signalr.min.js
│ └── stockTicker.js
├── WhiteBoard
├── WhiteBoard.sln
└── WhiteBoard
│ ├── Hubs
│ └── DrawHub.cs
│ ├── Program.cs
│ ├── Startup.cs
│ ├── WhiteBoard.csproj
│ └── wwwroot
│ ├── index.html
│ └── lib
│ ├── signalr.js
│ ├── signalr.min.js
│ └── third-party-notices.txt
├── WindowsFormsSample
├── WindowsFormsSample.sln
└── WindowsFormsSample
│ ├── App.config
│ ├── ChatForm.Designer.cs
│ ├── ChatForm.cs
│ ├── ChatForm.resx
│ ├── Program.cs
│ ├── Properties
│ ├── AssemblyInfo.cs
│ ├── Resources.Designer.cs
│ ├── Resources.resx
│ ├── Settings.Designer.cs
│ └── Settings.settings
│ └── WindowsFormsSample.csproj
├── WindowsUniversal
├── WindowsUniversal.sln
└── WindowsUniversal
│ ├── App.xaml
│ ├── App.xaml.cs
│ ├── Assets
│ ├── LockScreenLogo.scale-200.png
│ ├── SplashScreen.scale-200.png
│ ├── Square150x150Logo.scale-200.png
│ ├── Square44x44Logo.scale-200.png
│ ├── Square44x44Logo.targetsize-24_altform-unplated.png
│ ├── StoreLogo.png
│ └── Wide310x150Logo.scale-200.png
│ ├── MainPage.xaml
│ ├── MainPage.xaml.cs
│ ├── Package.appxmanifest
│ ├── Properties
│ ├── AssemblyInfo.cs
│ └── Default.rd.xml
│ ├── WindowsUniversal.csproj
│ └── WindowsUniversal_TemporaryKey.pfx
└── Xamarin
├── AndroidClient
├── AndroidClient.csproj
├── Assets
│ └── AboutAssets.txt
├── MainActivity.cs
├── Properties
│ ├── AndroidManifest.xml
│ └── AssemblyInfo.cs
└── Resources
│ ├── AboutResources.txt
│ ├── Resource.Designer.cs
│ ├── layout
│ └── activity_main.axml
│ ├── mipmap-anydpi-v26
│ ├── ic_launcher.xml
│ └── ic_launcher_round.xml
│ ├── mipmap-hdpi
│ ├── ic_launcher.png
│ ├── ic_launcher_foreground.png
│ └── ic_launcher_round.png
│ ├── mipmap-mdpi
│ ├── ic_launcher.png
│ ├── ic_launcher_foreground.png
│ └── ic_launcher_round.png
│ ├── mipmap-xhdpi
│ ├── ic_launcher.png
│ ├── ic_launcher_foreground.png
│ └── ic_launcher_round.png
│ ├── mipmap-xxhdpi
│ ├── ic_launcher.png
│ ├── ic_launcher_foreground.png
│ └── ic_launcher_round.png
│ ├── mipmap-xxxhdpi
│ ├── ic_launcher.png
│ ├── ic_launcher_foreground.png
│ └── ic_launcher_round.png
│ └── values
│ ├── Strings.xml
│ ├── colors.xml
│ ├── ic_launcher_background.xml
│ └── styles.xml
├── FormsClient
├── FormsClient.Android
│ ├── Assets
│ │ └── AboutAssets.txt
│ ├── FormsClient.Android.csproj
│ ├── MainActivity.cs
│ ├── Properties
│ │ ├── AndroidManifest.xml
│ │ └── AssemblyInfo.cs
│ └── Resources
│ │ ├── AboutResources.txt
│ │ ├── Resource.designer.cs
│ │ ├── layout
│ │ ├── Tabbar.axml
│ │ └── Toolbar.axml
│ │ ├── mipmap-anydpi-v26
│ │ ├── icon.xml
│ │ └── icon_round.xml
│ │ ├── mipmap-hdpi
│ │ ├── Icon.png
│ │ └── launcher_foreground.png
│ │ ├── mipmap-mdpi
│ │ ├── icon.png
│ │ └── launcher_foreground.png
│ │ ├── mipmap-xhdpi
│ │ ├── Icon.png
│ │ └── launcher_foreground.png
│ │ ├── mipmap-xxhdpi
│ │ ├── Icon.png
│ │ └── launcher_foreground.png
│ │ ├── mipmap-xxxhdpi
│ │ ├── Icon.png
│ │ └── launcher_foreground.png
│ │ └── values
│ │ ├── colors.xml
│ │ └── styles.xml
├── FormsClient.UWP
│ ├── App.xaml
│ ├── App.xaml.cs
│ ├── Assets
│ │ ├── LargeTile.scale-100.png
│ │ ├── LargeTile.scale-200.png
│ │ ├── LargeTile.scale-400.png
│ │ ├── SmallTile.scale-100.png
│ │ ├── SmallTile.scale-200.png
│ │ ├── SmallTile.scale-400.png
│ │ ├── SplashScreen.scale-100.png
│ │ ├── SplashScreen.scale-200.png
│ │ ├── SplashScreen.scale-400.png
│ │ ├── Square150x150Logo.scale-100.png
│ │ ├── Square150x150Logo.scale-200.png
│ │ ├── Square150x150Logo.scale-400.png
│ │ ├── Square44x44Logo.altform-unplated_targetsize-16.png
│ │ ├── Square44x44Logo.altform-unplated_targetsize-256.png
│ │ ├── Square44x44Logo.altform-unplated_targetsize-48.png
│ │ ├── Square44x44Logo.scale-100.png
│ │ ├── Square44x44Logo.scale-200.png
│ │ ├── Square44x44Logo.scale-400.png
│ │ ├── Square44x44Logo.targetsize-16.png
│ │ ├── Square44x44Logo.targetsize-256.png
│ │ ├── Square44x44Logo.targetsize-48.png
│ │ ├── StoreLogo.backup.png
│ │ ├── StoreLogo.scale-100.png
│ │ ├── StoreLogo.scale-200.png
│ │ ├── StoreLogo.scale-400.png
│ │ ├── Wide310x150Logo.scale-100.png
│ │ ├── Wide310x150Logo.scale-200.png
│ │ └── Wide310x150Logo.scale-400.png
│ ├── FormsClient.UWP.csproj
│ ├── MainPage.xaml
│ ├── MainPage.xaml.cs
│ ├── Package.appxmanifest
│ └── Properties
│ │ ├── AssemblyInfo.cs
│ │ └── Default.rd.xml
├── FormsClient.iOS
│ ├── AppDelegate.cs
│ ├── Assets.xcassets
│ │ └── AppIcon.appiconset
│ │ │ ├── Contents.json
│ │ │ ├── Icon1024.png
│ │ │ ├── Icon120.png
│ │ │ ├── Icon152.png
│ │ │ ├── Icon167.png
│ │ │ ├── Icon180.png
│ │ │ ├── Icon20.png
│ │ │ ├── Icon29.png
│ │ │ ├── Icon40.png
│ │ │ ├── Icon58.png
│ │ │ ├── Icon60.png
│ │ │ ├── Icon76.png
│ │ │ ├── Icon80.png
│ │ │ └── Icon87.png
│ ├── Entitlements.plist
│ ├── FormsClient.iOS.csproj
│ ├── Info.plist
│ ├── Main.cs
│ ├── Properties
│ │ └── AssemblyInfo.cs
│ └── Resources
│ │ ├── Default-568h@2x.png
│ │ ├── Default-Portrait.png
│ │ ├── Default-Portrait@2x.png
│ │ ├── Default.png
│ │ ├── Default@2x.png
│ │ └── LaunchScreen.storyboard
└── FormsClient
│ ├── App.xaml
│ ├── App.xaml.cs
│ ├── FormsClient.csproj
│ ├── MainPage.xaml
│ └── MainPage.xaml.cs
├── README.md
├── Xamarin.sln
└── iOSClient
├── AppDelegate.cs
├── Assets.xcassets
└── AppIcon.appiconset
│ ├── Contents.json
│ ├── Icon1024.png
│ ├── Icon120.png
│ ├── Icon152.png
│ ├── Icon167.png
│ ├── Icon180.png
│ ├── Icon20.png
│ ├── Icon29.png
│ ├── Icon40.png
│ ├── Icon58.png
│ ├── Icon60.png
│ ├── Icon76.png
│ ├── Icon80.png
│ └── Icon87.png
├── Entitlements.plist
├── Info.plist
├── LaunchScreen.storyboard
├── Main.cs
├── Main.storyboard
├── Properties
└── AssemblyInfo.cs
├── Resources
└── LaunchScreen.xib
├── ViewController.cs
├── ViewController.designer.cs
├── app.config
└── iOSClient.csproj
/.gitattributes:
--------------------------------------------------------------------------------
1 | *.doc diff=astextplain
2 | *.DOC diff=astextplain
3 | *.docx diff=astextplain
4 | *.DOCX diff=astextplain
5 | *.dot diff=astextplain
6 | *.DOT diff=astextplain
7 | *.pdf diff=astextplain
8 | *.PDF diff=astextplain
9 | *.rtf diff=astextplain
10 | *.RTF diff=astextplain
11 |
12 | *.jpg binary
13 | *.png binary
14 | *.gif binary
15 |
16 | *.cs text=auto diff=csharp
17 | *.vb text=auto
18 | *.resx text=auto
19 | *.c text=auto
20 | *.cpp text=auto
21 | *.cxx text=auto
22 | *.h text=auto
23 | *.hxx text=auto
24 | *.py text=auto
25 | *.rb text=auto
26 | *.java text=auto
27 | *.html text=auto
28 | *.htm text=auto
29 | *.css text=auto
30 | *.scss text=auto
31 | *.sass text=auto
32 | *.less text=auto
33 | *.js text=auto
34 | *.lisp text=auto
35 | *.clj text=auto
36 | *.sql text=auto
37 | *.php text=auto
38 | *.lua text=auto
39 | *.m text=auto
40 | *.asm text=auto
41 | *.erl text=auto
42 | *.fs text=auto
43 | *.fsx text=auto
44 | *.hs text=auto
45 |
46 | *.csproj text=auto
47 | *.vbproj text=auto
48 | *.fsproj text=auto
49 | *.dbproj text=auto
50 | *.sln text=auto eol=crlf
51 |
52 | *.sh eol=lf
53 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | [Oo]bj/
2 | [Bb]in/
3 | TestResults/
4 | .nuget/
5 | *.sln.ide/
6 | _ReSharper.*/
7 | packages/
8 | artifacts/
9 | PublishProfiles/
10 | .vs/
11 | *.user
12 | *.suo
13 | *.cache
14 | *.docstates
15 | _ReSharper.*
16 | nuget.exe
17 | *net45.csproj
18 | *net451.csproj
19 | *k10.csproj
20 | *.psess
21 | *.vsp
22 | *.pidb
23 | *.userprefs
24 | *DS_Store
25 | *.ncrunchsolution
26 | *.*sdf
27 | *.ipch
28 | project.lock.json
29 | runtimes/
30 | .build/
31 | .testPublish/
32 | launchSettings.json
33 | node_modules/
34 | npm-debug.log
35 | *.tmp
36 | *.nuget.props
37 | *.nuget.targets
38 | autobahnreports/
39 | site.min.css
40 | .idea/
41 | .vscode/
42 | signalr-client/
43 | dist/
44 | global.json
45 | BenchmarkDotNet.Artifacts/
46 | korebuild-lock.txt
47 | PullRequestR/android/.gradle/
48 | !PullRequestR/function-dotnet/.vscode
49 | !PullRequestR/function-javascript/.vscode
50 | !PullRequestR/function-javascript/local.settings.json
--------------------------------------------------------------------------------
/AndroidJavaClient/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | .gradle
3 | /local.properties
4 | /.idea/libraries
5 | /.idea/modules.xml
6 | /.idea/workspace.xml
7 | .DS_Store
8 | /build
9 | /captures
10 | .externalNativeBuild
11 |
--------------------------------------------------------------------------------
/AndroidJavaClient/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/AndroidJavaClient/app/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.application'
2 |
3 | android {
4 | compileSdkVersion 28
5 | defaultConfig {
6 | applicationId "com.microsoft.aspnet.signalr.samples.androidjavaclient"
7 | minSdkVersion 26
8 | targetSdkVersion 28
9 | versionCode 1
10 | versionName "1.0"
11 | testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
12 | }
13 | buildTypes {
14 | release {
15 | minifyEnabled false
16 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
17 | }
18 | }
19 | compileOptions {
20 | targetCompatibility 1.8
21 | sourceCompatibility 1.8
22 | }
23 | }
24 |
25 | dependencies {
26 | implementation fileTree(dir: 'libs', include: ['*.jar'])
27 | implementation 'com.android.support:appcompat-v7:28.0.0-rc01'
28 | implementation 'com.android.support.constraint:constraint-layout:1.1.2'
29 | testImplementation 'junit:junit:4.12'
30 | androidTestImplementation 'com.android.support.test:runner:1.0.2'
31 | androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
32 | implementation 'com.microsoft.signalr:signalr:3.0.0'
33 | implementation group: 'org.slf4j', name: 'slf4j-android', version: '1.7.7'
34 | }
35 |
--------------------------------------------------------------------------------
/AndroidJavaClient/app/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # You can control the set of applied configuration files using the
3 | # proguardFiles setting in build.gradle.
4 | #
5 | # For more details, see
6 | # http://developer.android.com/guide/developing/tools/proguard.html
7 |
8 | # If your project uses WebView with JS, uncomment the following
9 | # and specify the fully qualified class name to the JavaScript interface
10 | # class:
11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
12 | # public *;
13 | #}
14 |
15 | # Uncomment this to preserve the line number information for
16 | # debugging stack traces.
17 | #-keepattributes SourceFile,LineNumberTable
18 |
19 | # If you keep the line number information, uncomment this to
20 | # hide the original source file name.
21 | #-renamesourcefileattribute SourceFile
22 |
--------------------------------------------------------------------------------
/AndroidJavaClient/app/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
8 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/AndroidJavaClient/app/src/main/java/com/microsoft/aspnet/signalr/samples/androidjavaclient/MainActivity.java:
--------------------------------------------------------------------------------
1 | package com.microsoft.aspnet.signalr.samples.androidjavaclient;
2 |
3 |
4 | import android.os.AsyncTask;
5 | import android.support.v7.app.AppCompatActivity;
6 | import android.os.Bundle;
7 | import android.view.View;
8 | import android.widget.ArrayAdapter;
9 | import android.widget.Button;
10 | import android.widget.EditText;
11 | import android.widget.ListView;
12 | import android.widget.TextView;
13 |
14 | import com.microsoft.signalr.HubConnection;
15 | import com.microsoft.signalr.HubConnectionBuilder;
16 |
17 | import java.util.ArrayList;
18 | import java.util.List;
19 |
20 | public class MainActivity extends AppCompatActivity {
21 |
22 | @Override
23 | protected void onCreate(Bundle savedInstanceState) {
24 | super.onCreate(savedInstanceState);
25 | setContentView(R.layout.activity_main);
26 | HubConnection hubConnection = HubConnectionBuilder.create("YOUR URL HERE").build();
27 | TextView textView = (TextView)findViewById(R.id.tvMain);
28 | ListView listView = (ListView)findViewById(R.id.lvMessages);
29 | Button sendButton = (Button)findViewById(R.id.bSend);
30 | EditText editText = (EditText)findViewById(R.id.etMessageText);
31 |
32 | List messageList = new ArrayList();
33 | ArrayAdapter arrayAdapter = new ArrayAdapter(MainActivity.this,
34 | android.R.layout.simple_list_item_1, messageList);
35 | listView.setAdapter(arrayAdapter);
36 |
37 | hubConnection.on("Send", (message)-> {
38 | runOnUiThread(new Runnable() {
39 | @Override
40 | public void run() {
41 | arrayAdapter.add(message);
42 | arrayAdapter.notifyDataSetChanged();
43 | }
44 | });
45 | }, String.class);
46 |
47 | sendButton.setOnClickListener(new View.OnClickListener() {
48 | @Override
49 | public void onClick(View view) {
50 | String message = editText.getText().toString();
51 | editText.setText("");
52 | try {
53 | hubConnection.send("Send", message);
54 | } catch (Exception e) {
55 | e.printStackTrace();
56 | }
57 | }
58 | });
59 |
60 | new HubConnectionTask().execute(hubConnection);
61 | }
62 |
63 | class HubConnectionTask extends AsyncTask{
64 |
65 | @Override
66 | protected void onPreExecute() {
67 | super.onPreExecute();
68 | }
69 |
70 | @Override
71 | protected Void doInBackground(HubConnection... hubConnections) {
72 | HubConnection hubConnection = hubConnections[0];
73 | hubConnection.start().blockingAwait();
74 | return null;
75 | }
76 | }
77 | }
--------------------------------------------------------------------------------
/AndroidJavaClient/app/src/main/res/drawable-v24/ic_launcher_foreground.xml:
--------------------------------------------------------------------------------
1 |
7 |
12 |
13 |
19 |
22 |
25 |
26 |
27 |
28 |
34 |
35 |
--------------------------------------------------------------------------------
/AndroidJavaClient/app/src/main/res/layout/activity_main.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
12 |
18 |
19 |
24 |
29 |
--------------------------------------------------------------------------------
/AndroidJavaClient/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/AndroidJavaClient/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/AndroidJavaClient/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/AndroidJavaClient/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/AndroidJavaClient/app/src/main/res/mipmap-hdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/AndroidJavaClient/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/AndroidJavaClient/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/AndroidJavaClient/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/AndroidJavaClient/app/src/main/res/mipmap-mdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/AndroidJavaClient/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/AndroidJavaClient/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/AndroidJavaClient/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/AndroidJavaClient/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/AndroidJavaClient/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/AndroidJavaClient/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/AndroidJavaClient/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/AndroidJavaClient/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/AndroidJavaClient/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/AndroidJavaClient/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/AndroidJavaClient/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/AndroidJavaClient/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/AndroidJavaClient/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/AndroidJavaClient/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #3F51B5
4 | #303F9F
5 | #FF4081
6 |
7 |
--------------------------------------------------------------------------------
/AndroidJavaClient/app/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | AndroidJavaClient
3 |
4 |
--------------------------------------------------------------------------------
/AndroidJavaClient/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/AndroidJavaClient/build.gradle:
--------------------------------------------------------------------------------
1 | // Top-level build file where you can add configuration options common to all sub-projects/modules.
2 |
3 | buildscript {
4 |
5 | repositories {
6 | google()
7 | jcenter()
8 | }
9 | dependencies {
10 | classpath 'com.android.tools.build:gradle:3.1.4'
11 |
12 |
13 | // NOTE: Do not place your application dependencies here; they belong
14 | // in the individual module build.gradle files
15 | }
16 | }
17 |
18 | allprojects {
19 | repositories {
20 | google()
21 | jcenter()
22 | }
23 | }
24 |
25 | task clean(type: Delete) {
26 | delete rootProject.buildDir
27 | }
28 |
--------------------------------------------------------------------------------
/AndroidJavaClient/gradle.properties:
--------------------------------------------------------------------------------
1 | # Project-wide Gradle settings.
2 | # IDE (e.g. Android Studio) users:
3 | # Gradle settings configured through the IDE *will override*
4 | # any settings specified in this file.
5 | # For more details on how to configure your build environment visit
6 | # http://www.gradle.org/docs/current/userguide/build_environment.html
7 | # Specifies the JVM arguments used for the daemon process.
8 | # The setting is particularly useful for tweaking memory settings.
9 | org.gradle.jvmargs=-Xmx1536m
10 | # When configured, Gradle will run in incubating parallel mode.
11 | # This option should only be used with decoupled projects. More details, visit
12 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
13 | # org.gradle.parallel=true
14 |
--------------------------------------------------------------------------------
/AndroidJavaClient/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/AndroidJavaClient/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/AndroidJavaClient/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Tue Aug 21 16:56:08 PDT 2018
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 | distributionUrl=https\://services.gradle.org/distributions/gradle-5.3-bin.zip
7 |
--------------------------------------------------------------------------------
/AndroidJavaClient/gradlew.bat:
--------------------------------------------------------------------------------
1 | @if "%DEBUG%" == "" @echo off
2 | @rem ##########################################################################
3 | @rem
4 | @rem Gradle startup script for Windows
5 | @rem
6 | @rem ##########################################################################
7 |
8 | @rem Set local scope for the variables with windows NT shell
9 | if "%OS%"=="Windows_NT" setlocal
10 |
11 | set DIRNAME=%~dp0
12 | if "%DIRNAME%" == "" set DIRNAME=.
13 | set APP_BASE_NAME=%~n0
14 | set APP_HOME=%DIRNAME%
15 |
16 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
17 | set DEFAULT_JVM_OPTS=
18 |
19 | @rem Find java.exe
20 | if defined JAVA_HOME goto findJavaFromJavaHome
21 |
22 | set JAVA_EXE=java.exe
23 | %JAVA_EXE% -version >NUL 2>&1
24 | if "%ERRORLEVEL%" == "0" goto init
25 |
26 | echo.
27 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
28 | echo.
29 | echo Please set the JAVA_HOME variable in your environment to match the
30 | echo location of your Java installation.
31 |
32 | goto fail
33 |
34 | :findJavaFromJavaHome
35 | set JAVA_HOME=%JAVA_HOME:"=%
36 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe
37 |
38 | if exist "%JAVA_EXE%" goto init
39 |
40 | echo.
41 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
42 | echo.
43 | echo Please set the JAVA_HOME variable in your environment to match the
44 | echo location of your Java installation.
45 |
46 | goto fail
47 |
48 | :init
49 | @rem Get command-line arguments, handling Windows variants
50 |
51 | if not "%OS%" == "Windows_NT" goto win9xME_args
52 |
53 | :win9xME_args
54 | @rem Slurp the command line arguments.
55 | set CMD_LINE_ARGS=
56 | set _SKIP=2
57 |
58 | :win9xME_args_slurp
59 | if "x%~1" == "x" goto execute
60 |
61 | set CMD_LINE_ARGS=%*
62 |
63 | :execute
64 | @rem Setup the command line
65 |
66 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
67 |
68 | @rem Execute Gradle
69 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
70 |
71 | :end
72 | @rem End local scope for the variables with windows NT shell
73 | if "%ERRORLEVEL%"=="0" goto mainEnd
74 |
75 | :fail
76 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
77 | rem the _cmd.exe /c_ return code!
78 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
79 | exit /b 1
80 |
81 | :mainEnd
82 | if "%OS%"=="Windows_NT" endlocal
83 |
84 | :omega
85 |
--------------------------------------------------------------------------------
/AndroidJavaClient/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 |
--------------------------------------------------------------------------------
/CODE-OF-CONDUCT.md:
--------------------------------------------------------------------------------
1 | # Code of Conduct
2 |
3 | This project has adopted the code of conduct defined by the Contributor Covenant
4 | to clarify expected behavior in our community.
5 |
6 | For more information, see the [.NET Foundation Code of Conduct](https://dotnetfoundation.org/code-of-conduct).
7 |
--------------------------------------------------------------------------------
/ChatSample/ChatSample.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio 15
4 | VisualStudioVersion = 15.0.26831.0
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ChatSample", "ChatSample\ChatSample.csproj", "{CD9DEA65-E315-4BA5-B8F6-66EEDCCB1223}"
7 | EndProject
8 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{52C4A1E5-78AA-4475-9F8B-742427E42811}"
9 | ProjectSection(SolutionItems) = preProject
10 | EndProjectSection
11 | EndProject
12 | Global
13 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
14 | Debug|Any CPU = Debug|Any CPU
15 | Release|Any CPU = Release|Any CPU
16 | EndGlobalSection
17 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
18 | {CD9DEA65-E315-4BA5-B8F6-66EEDCCB1223}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
19 | {CD9DEA65-E315-4BA5-B8F6-66EEDCCB1223}.Debug|Any CPU.Build.0 = Debug|Any CPU
20 | {CD9DEA65-E315-4BA5-B8F6-66EEDCCB1223}.Release|Any CPU.ActiveCfg = Release|Any CPU
21 | {CD9DEA65-E315-4BA5-B8F6-66EEDCCB1223}.Release|Any CPU.Build.0 = Release|Any CPU
22 | EndGlobalSection
23 | GlobalSection(SolutionProperties) = preSolution
24 | HideSolutionNode = FALSE
25 | EndGlobalSection
26 | GlobalSection(ExtensibilityGlobals) = postSolution
27 | SolutionGuid = {3213FEC9-E3E9-41AE-A017-7F511D4DE8E4}
28 | EndGlobalSection
29 | EndGlobal
30 |
--------------------------------------------------------------------------------
/ChatSample/ChatSample/ChatSample.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | netcoreapp3.0
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/ChatSample/ChatSample/Hubs/ChatHub.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.AspNetCore.SignalR;
2 | using System.Threading.Tasks;
3 |
4 | namespace ChatSample.Hubs
5 | {
6 | public class ChatHub : Hub
7 | {
8 | public async Task Send(string name, string message)
9 | {
10 | // Call the broadcastMessage method to update clients.
11 | await Clients.All.SendAsync("broadcastMessage", name, message);
12 | }
13 | }
14 | }
--------------------------------------------------------------------------------
/ChatSample/ChatSample/Program.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.AspNetCore.Hosting;
2 | using Microsoft.Extensions.Hosting;
3 |
4 | namespace ChatSample
5 | {
6 | public class Program
7 | {
8 | public static void Main(string[] args)
9 | {
10 | CreateHostBuilder(args).Build().Run();
11 | }
12 |
13 | public static IHostBuilder CreateHostBuilder(string[] args) =>
14 | Host.CreateDefaultBuilder(args)
15 | .ConfigureWebHostDefaults(webBuilder =>
16 | {
17 | webBuilder.UseStartup();
18 | });
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/ChatSample/ChatSample/Startup.cs:
--------------------------------------------------------------------------------
1 | using ChatSample.Hubs;
2 | using Microsoft.AspNetCore.Builder;
3 | using Microsoft.AspNetCore.Hosting;
4 | using Microsoft.Extensions.DependencyInjection;
5 | using Microsoft.Extensions.Hosting;
6 |
7 | namespace ChatSample
8 | {
9 | public class Startup
10 | {
11 | // This method gets called by the runtime. Use this method to add services to the container.
12 | // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
13 | public void ConfigureServices(IServiceCollection services)
14 | {
15 | services.AddSignalR();
16 | }
17 |
18 | // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
19 | public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
20 | {
21 | if (env.IsDevelopment())
22 | {
23 | app.UseDeveloperExceptionPage();
24 | }
25 |
26 | app.UseFileServer();
27 |
28 | app.UseRouting();
29 |
30 | app.UseEndpoints(endpoints =>
31 | {
32 | endpoints.MapHub("/chat");
33 | });
34 | }
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/ChatSample/ChatSample/wwwroot/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | SignalR Simple Chat
5 |
13 |
14 |
15 |
20 |
21 |
22 |
23 |
24 |
69 |
70 |
71 |
--------------------------------------------------------------------------------
/MoveShape/MoveShape.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio 15
4 | VisualStudioVersion = 15.0.26823.1
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MoveShape", "MoveShape\MoveShape.csproj", "{F580FAB8-6BE1-48BF-96DF-04AC1F9357E1}"
7 | EndProject
8 | Global
9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
10 | Debug|Any CPU = Debug|Any CPU
11 | Release|Any CPU = Release|Any CPU
12 | EndGlobalSection
13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
14 | {F580FAB8-6BE1-48BF-96DF-04AC1F9357E1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
15 | {F580FAB8-6BE1-48BF-96DF-04AC1F9357E1}.Debug|Any CPU.Build.0 = Debug|Any CPU
16 | {F580FAB8-6BE1-48BF-96DF-04AC1F9357E1}.Release|Any CPU.ActiveCfg = Release|Any CPU
17 | {F580FAB8-6BE1-48BF-96DF-04AC1F9357E1}.Release|Any CPU.Build.0 = Release|Any CPU
18 | EndGlobalSection
19 | GlobalSection(SolutionProperties) = preSolution
20 | HideSolutionNode = FALSE
21 | EndGlobalSection
22 | GlobalSection(ExtensibilityGlobals) = postSolution
23 | SolutionGuid = {EB0958BE-1E14-4A74-9D99-6E1B22C55290}
24 | EndGlobalSection
25 | EndGlobal
26 |
--------------------------------------------------------------------------------
/MoveShape/MoveShape/Hubs/ShapeHub.cs:
--------------------------------------------------------------------------------
1 | using System.Threading.Tasks;
2 | using Microsoft.AspNetCore.SignalR;
3 |
4 | namespace MoveShape.Hubs
5 | {
6 | public class ShapeHub : Hub
7 | {
8 | public async Task MoveShape(int x , int y)
9 | {
10 | await Clients.Others.SendAsync("shapeMoved", x, y);
11 | }
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/MoveShape/MoveShape/MoveShape.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | netcoreapp3.0
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/MoveShape/MoveShape/Program.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.AspNetCore.Hosting;
2 | using Microsoft.Extensions.Hosting;
3 |
4 | namespace MoveShape
5 | {
6 | public class Program
7 | {
8 | public static void Main(string[] args)
9 | {
10 | CreateHostBuilder(args).Build().Run();
11 | }
12 |
13 | public static IHostBuilder CreateHostBuilder(string[] args) =>
14 | Host.CreateDefaultBuilder(args)
15 | .ConfigureWebHostDefaults(webBuilder =>
16 | {
17 | webBuilder.UseStartup();
18 | });
19 | }
20 |
21 | }
22 |
--------------------------------------------------------------------------------
/MoveShape/MoveShape/Startup.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.AspNetCore.Builder;
2 | using Microsoft.AspNetCore.Hosting;
3 | using Microsoft.Extensions.DependencyInjection;
4 | using Microsoft.Extensions.Hosting;
5 | using MoveShape.Hubs;
6 |
7 | namespace MoveShape
8 | {
9 | public class Startup
10 | {
11 | public void ConfigureServices(IServiceCollection services)
12 | {
13 | services.AddSignalR();
14 | }
15 |
16 | public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
17 | {
18 | if (env.IsDevelopment())
19 | {
20 | app.UseDeveloperExceptionPage();
21 | }
22 |
23 | app.UseFileServer();
24 |
25 | app.UseRouting();
26 |
27 | app.UseEndpoints(endpoints =>
28 | {
29 | endpoints.MapHub("/shapeHub");
30 | });
31 | }
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/MoveShape/MoveShape/wwwroot/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
9 |
12 | MoveShape
13 |
21 |
22 |
23 |
24 |
42 |
43 |
--------------------------------------------------------------------------------
/PullRequestR/android/PullRequestR.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/PullRequestR/android/android.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/PullRequestR/android/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/PullRequestR/android/app/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.application'
2 |
3 | android {
4 | compileSdkVersion 28
5 | defaultConfig {
6 | applicationId "com.example.pullrequestr"
7 | minSdkVersion 26
8 | targetSdkVersion 28
9 | versionCode 1
10 | versionName "1.0"
11 | testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
12 | }
13 | buildTypes {
14 | release {
15 | minifyEnabled false
16 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
17 | }
18 | }
19 | compileOptions {
20 | sourceCompatibility JavaVersion.VERSION_1_8
21 | targetCompatibility JavaVersion.VERSION_1_8
22 | }
23 | }
24 |
25 | dependencies {
26 | implementation fileTree(dir: 'libs', include: ['*.jar'])
27 | implementation 'com.android.support:appcompat-v7:28.0.0'
28 | implementation 'com.android.support.constraint:constraint-layout:1.1.3'
29 | testImplementation 'junit:junit:4.12'
30 | androidTestImplementation 'com.android.support.test:runner:1.0.2'
31 | androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
32 | implementation 'com.microsoft.signalr:signalr:3.0.0'
33 | implementation 'io.reactivex.rxjava2:rxjava:2.2.2'
34 | implementation 'org.slf4j:slf4j-android:1.7.7'
35 | implementation 'com.squareup.picasso:picasso:2.71828'
36 | }
37 |
--------------------------------------------------------------------------------
/PullRequestR/android/app/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # You can control the set of applied configuration files using the
3 | # proguardFiles setting in build.gradle.
4 | #
5 | # For more details, see
6 | # http://developer.android.com/guide/developing/tools/proguard.html
7 |
8 | # If your project uses WebView with JS, uncomment the following
9 | # and specify the fully qualified class name to the JavaScript interface
10 | # class:
11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
12 | # public *;
13 | #}
14 |
15 | # Uncomment this to preserve the line number information for
16 | # debugging stack traces.
17 | #-keepattributes SourceFile,LineNumberTable
18 |
19 | # If you keep the line number information, uncomment this to
20 | # hide the original source file name.
21 | #-renamesourcefileattribute SourceFile
22 |
--------------------------------------------------------------------------------
/PullRequestR/android/app/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/PullRequestR/android/app/src/main/java/com/example/pullrequestr/MainActivity.java:
--------------------------------------------------------------------------------
1 | package com.example.pullrequestr;
2 | import android.content.Context;
3 | import android.os.AsyncTask;
4 | import android.os.Bundle;
5 | import android.support.v7.app.AppCompatActivity;
6 | import android.view.*;
7 | import android.widget.ArrayAdapter;
8 | import android.widget.ImageView;
9 | import android.widget.ListView;
10 | import android.widget.TextView;
11 | import com.microsoft.signalr.HubConnection;
12 | import com.microsoft.signalr.HubConnectionBuilder;
13 | import com.squareup.picasso.Picasso;
14 | import java.util.ArrayList;
15 |
16 | public class MainActivity extends AppCompatActivity {
17 |
18 | public class PullRequest {
19 | public String Url;
20 | public Integer PullRequestId;
21 | public String Avatar;
22 | public String Login;
23 | public String Title;
24 | }
25 |
26 | ArrayList pullRequests = new ArrayList();
27 |
28 | @Override
29 | protected void onCreate(Bundle savedInstanceState) {
30 | super.onCreate(savedInstanceState);
31 | setContentView(R.layout.activity_main);
32 |
33 | // This URL does NOT need to be suffixed with the "negotiate" endpoint,
34 | // the /api endpoint is correct.
35 | String url = "https://YOUR-FUNCTION-URI.azurewebsites.net/api";
36 | PullRequestAdapter adapter = new PullRequestAdapter(this, pullRequests);
37 | ListView lvItems = (ListView)findViewById(R.id.lvPullRequestList);
38 |
39 | HubConnection hubConnection = HubConnectionBuilder
40 | .create(url)
41 | .build();
42 |
43 | hubConnection.on("pullRequestOpened", (pullRequest)-> {
44 | runOnUiThread(new Runnable() {
45 | @Override
46 | public void run() {
47 | pullRequests.add(pullRequest);
48 | lvItems.setAdapter(adapter);
49 | }
50 | });
51 | }, PullRequest.class);
52 |
53 | new HubConnectionTask().execute(hubConnection);
54 | }
55 |
56 | class HubConnectionTask extends AsyncTask {
57 | @Override
58 | protected void onPreExecute() {
59 | super.onPreExecute();
60 | }
61 | @Override
62 | protected Void doInBackground(HubConnection... hubConnections) {
63 | HubConnection hubConnection = hubConnections[0];
64 | hubConnection.start().blockingAwait();
65 | return null;
66 | }
67 | }
68 |
69 | public class PullRequestAdapter extends ArrayAdapter {
70 | public PullRequestAdapter(Context context, ArrayList pullRequests){
71 | super(context, 0, pullRequests);
72 | }
73 |
74 | @Override
75 | public View getView(int position, View convertView, ViewGroup parent) {
76 | PullRequest pr = getItem(position);
77 | if(convertView == null) {
78 | convertView = LayoutInflater.from(getContext())
79 | .inflate(R.layout.pullrequestlayout, parent, false);
80 | }
81 |
82 | TextView tvTitle = (TextView)convertView.findViewById(R.id.tvTitle);
83 | tvTitle.setText(pr.Title);
84 |
85 | TextView tvPullRequestNumber = (TextView)convertView.findViewById(R.id.tvPullRequestNumber);
86 | tvPullRequestNumber.setText(pr.PullRequestId.toString());
87 |
88 | TextView tvLogin = (TextView)convertView.findViewById(R.id.tvLogin);
89 | tvLogin.setText(pr.Login);
90 |
91 | TextView tvUrl = (TextView)convertView.findViewById(R.id.tvUrl);
92 | tvUrl.setText(pr.Url);
93 |
94 | ImageView icon = (ImageView)convertView.findViewById(R.id.icon);
95 | Picasso.get().load(pr.Avatar).into(icon );
96 |
97 | return convertView;
98 | }
99 | }
100 | }
101 |
--------------------------------------------------------------------------------
/PullRequestR/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml:
--------------------------------------------------------------------------------
1 |
7 |
12 |
13 |
19 |
22 |
25 |
26 |
27 |
28 |
34 |
35 |
--------------------------------------------------------------------------------
/PullRequestR/android/app/src/main/res/layout/activity_main.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/PullRequestR/android/app/src/main/res/layout/pullrequestlayout.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
15 |
16 |
17 |
21 |
22 |
26 |
27 |
33 |
34 |
40 |
41 |
47 |
48 |
54 |
55 |
56 |
57 |
58 |
64 |
65 |
66 |
72 |
73 |
74 |
75 |
76 |
--------------------------------------------------------------------------------
/PullRequestR/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/PullRequestR/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/PullRequestR/android/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/PullRequestR/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/PullRequestR/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/PullRequestR/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/PullRequestR/android/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/PullRequestR/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/PullRequestR/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/PullRequestR/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/PullRequestR/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/PullRequestR/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/PullRequestR/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/PullRequestR/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/PullRequestR/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/PullRequestR/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/PullRequestR/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/PullRequestR/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/PullRequestR/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/PullRequestR/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/PullRequestR/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/PullRequestR/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/PullRequestR/android/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #3F51B5
4 | #303F9F
5 | #FF4081
6 |
7 |
--------------------------------------------------------------------------------
/PullRequestR/android/app/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | PullRequestR
3 |
4 |
--------------------------------------------------------------------------------
/PullRequestR/android/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/PullRequestR/android/build.gradle:
--------------------------------------------------------------------------------
1 | // Top-level build file where you can add configuration options common to all sub-projects/modules.
2 |
3 | buildscript {
4 |
5 | repositories {
6 | google()
7 | jcenter()
8 | }
9 | dependencies {
10 | classpath 'com.android.tools.build:gradle:3.1.0'
11 |
12 |
13 | // NOTE: Do not place your application dependencies here; they belong
14 | // in the individual module build.gradle files
15 | }
16 | }
17 |
18 | allprojects {
19 | repositories {
20 | google()
21 | jcenter()
22 | }
23 | }
24 |
25 | task clean(type: Delete) {
26 | delete rootProject.buildDir
27 | }
28 |
--------------------------------------------------------------------------------
/PullRequestR/android/gradle.properties:
--------------------------------------------------------------------------------
1 | # Project-wide Gradle settings.
2 | # IDE (e.g. Android Studio) users:
3 | # Gradle settings configured through the IDE *will override*
4 | # any settings specified in this file.
5 | # For more details on how to configure your build environment visit
6 | # http://www.gradle.org/docs/current/userguide/build_environment.html
7 | # Specifies the JVM arguments used for the daemon process.
8 | # The setting is particularly useful for tweaking memory settings.
9 | org.gradle.jvmargs=-Xmx1536m
10 | # When configured, Gradle will run in incubating parallel mode.
11 | # This option should only be used with decoupled projects. More details, visit
12 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
13 | # org.gradle.parallel=true
14 |
--------------------------------------------------------------------------------
/PullRequestR/android/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/PullRequestR/android/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/PullRequestR/android/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Thu Oct 25 16:14:29 PDT 2018
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 | distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip
7 |
--------------------------------------------------------------------------------
/PullRequestR/android/gradlew.bat:
--------------------------------------------------------------------------------
1 | @if "%DEBUG%" == "" @echo off
2 | @rem ##########################################################################
3 | @rem
4 | @rem Gradle startup script for Windows
5 | @rem
6 | @rem ##########################################################################
7 |
8 | @rem Set local scope for the variables with windows NT shell
9 | if "%OS%"=="Windows_NT" setlocal
10 |
11 | set DIRNAME=%~dp0
12 | if "%DIRNAME%" == "" set DIRNAME=.
13 | set APP_BASE_NAME=%~n0
14 | set APP_HOME=%DIRNAME%
15 |
16 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
17 | set DEFAULT_JVM_OPTS=
18 |
19 | @rem Find java.exe
20 | if defined JAVA_HOME goto findJavaFromJavaHome
21 |
22 | set JAVA_EXE=java.exe
23 | %JAVA_EXE% -version >NUL 2>&1
24 | if "%ERRORLEVEL%" == "0" goto init
25 |
26 | echo.
27 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
28 | echo.
29 | echo Please set the JAVA_HOME variable in your environment to match the
30 | echo location of your Java installation.
31 |
32 | goto fail
33 |
34 | :findJavaFromJavaHome
35 | set JAVA_HOME=%JAVA_HOME:"=%
36 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe
37 |
38 | if exist "%JAVA_EXE%" goto init
39 |
40 | echo.
41 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
42 | echo.
43 | echo Please set the JAVA_HOME variable in your environment to match the
44 | echo location of your Java installation.
45 |
46 | goto fail
47 |
48 | :init
49 | @rem Get command-line arguments, handling Windows variants
50 |
51 | if not "%OS%" == "Windows_NT" goto win9xME_args
52 |
53 | :win9xME_args
54 | @rem Slurp the command line arguments.
55 | set CMD_LINE_ARGS=
56 | set _SKIP=2
57 |
58 | :win9xME_args_slurp
59 | if "x%~1" == "x" goto execute
60 |
61 | set CMD_LINE_ARGS=%*
62 |
63 | :execute
64 | @rem Setup the command line
65 |
66 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
67 |
68 | @rem Execute Gradle
69 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
70 |
71 | :end
72 | @rem End local scope for the variables with windows NT shell
73 | if "%ERRORLEVEL%"=="0" goto mainEnd
74 |
75 | :fail
76 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
77 | rem the _cmd.exe /c_ return code!
78 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
79 | exit /b 1
80 |
81 | :mainEnd
82 | if "%OS%"=="Windows_NT" endlocal
83 |
84 | :omega
85 |
--------------------------------------------------------------------------------
/PullRequestR/android/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 |
--------------------------------------------------------------------------------
/PullRequestR/function-dotnet/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | "recommendations": [
3 | "ms-azuretools.vscode-azurefunctions",
4 | "ms-vscode.csharp"
5 | ]
6 | }
7 |
--------------------------------------------------------------------------------
/PullRequestR/function-dotnet/.vscode/launch.json:
--------------------------------------------------------------------------------
1 | {
2 | "version": "0.2.0",
3 | "configurations": [
4 | {
5 | "name": "Attach to C# Functions",
6 | "type": "coreclr",
7 | "request": "attach",
8 | "processId": "${command:azureFunctions.pickProcess}"
9 | }
10 | ]
11 | }
12 |
--------------------------------------------------------------------------------
/PullRequestR/function-dotnet/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "azureFunctions.projectRuntime": "~2",
3 | "azureFunctions.projectLanguage": "C#",
4 | "azureFunctions.templateFilter": "Verified",
5 | "azureFunctions.deploySubpath": "bin/Release/netstandard2.0/publish",
6 | "azureFunctions.preDeployTask": "publish"
7 | }
8 |
--------------------------------------------------------------------------------
/PullRequestR/function-dotnet/.vscode/tasks.json:
--------------------------------------------------------------------------------
1 | {
2 | "version": "2.0.0",
3 | "tasks": [
4 | {
5 | "type": "shell",
6 | "label": "echo",
7 | "command": "echo ${workspaceFolder}",
8 | },
9 | {
10 | "label": "clean",
11 | "dependsOn": "echo",
12 | "command": "dotnet clean",
13 | "type": "shell",
14 | "presentation": {
15 | "reveal": "always"
16 | },
17 | "options": {
18 | "cwd": "${workspaceFolder}"
19 | },
20 | "problemMatcher": "$msCompile"
21 | },
22 | {
23 | "label": "build",
24 | "command": "dotnet build",
25 | "type": "shell",
26 | "dependsOn": "clean",
27 | "group": {
28 | "kind": "build",
29 | "isDefault": true
30 | },
31 | "options": {
32 | "cwd": "${workspaceFolder}"
33 | },
34 | "presentation": {
35 | "reveal": "always"
36 | },
37 | "problemMatcher": "$msCompile"
38 | },
39 | {
40 | "label": "clean release",
41 | "command": "dotnet clean --configuration Release",
42 | "type": "shell",
43 | "presentation": {
44 | "reveal": "always"
45 | },
46 | "options": {
47 | "cwd": "${workspaceFolder}"
48 | },
49 | "problemMatcher": "$msCompile"
50 | },
51 | {
52 | "label": "publish",
53 | "identifier": "publish",
54 | "command": "dotnet publish --configuration Release",
55 | "type": "shell",
56 | "dependsOn": "clean release",
57 | "presentation": {
58 | "reveal": "always"
59 | },
60 | "options": {
61 | "cwd": "${workspaceFolder}"
62 | },
63 | "problemMatcher": "$msCompile"
64 | },
65 | {
66 | "label": "Run Functions Host",
67 | "identifier": "runFunctionsHost",
68 | "type": "shell",
69 | "dependsOn": "build",
70 | "options": {
71 | "cwd": "${workspaceFolder}/bin/Debug/netstandard2.0"
72 | },
73 | "command": "func host start",
74 | "isBackground": true,
75 | "presentation": {
76 | "reveal": "always"
77 | },
78 | "problemMatcher": "$func-watch"
79 | }
80 | ]
81 | }
82 |
--------------------------------------------------------------------------------
/PullRequestR/function-dotnet/Negotiate.cs:
--------------------------------------------------------------------------------
1 |
2 | using System;
3 | using System.IO;
4 | using System.Threading.Tasks;
5 | using Microsoft.AspNetCore.Mvc;
6 | using Microsoft.Azure.WebJobs;
7 | using Microsoft.Azure.WebJobs.Extensions.Http;
8 | using Microsoft.AspNetCore.Http;
9 | using Microsoft.Azure.WebJobs.Host;
10 | using Microsoft.Extensions.Logging;
11 | using Newtonsoft.Json;
12 | using Microsoft.Azure.WebJobs.Extensions.SignalRService;
13 |
14 | namespace Company.Function
15 | {
16 | // The class AND the value of the FunctionName parameter must
17 | // both be set to "negotiate" as the SignalR client expects
18 | // to call this specific endpoint.
19 | public static class negotiate
20 | {
21 | [FunctionName("negotiate")]
22 | public static IActionResult Run(
23 | [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)]HttpRequest req,
24 | [SignalRConnectionInfo(HubName = "repomonitor")] SignalRConnectionInfo connectionInfo,
25 | ILogger log)
26 | {
27 | return new OkObjectResult(connectionInfo);
28 | }
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/PullRequestR/function-dotnet/PullRequests.cs:
--------------------------------------------------------------------------------
1 |
2 | using System;
3 | using System.IO;
4 | using System.Threading.Tasks;
5 | using Microsoft.AspNetCore.Mvc;
6 | using Microsoft.Azure.WebJobs;
7 | using Microsoft.Azure.WebJobs.Extensions.Http;
8 | using Microsoft.AspNetCore.Http;
9 | using Microsoft.Azure.WebJobs.Host;
10 | using Microsoft.Extensions.Logging;
11 | using Newtonsoft.Json;
12 | using Microsoft.Azure.WebJobs.Extensions.SignalRService;
13 |
14 | namespace Company.Function
15 | {
16 | public static class PullRequests
17 | {
18 | [FunctionName("PullRequests")]
19 | public static async Task Run(
20 | [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)]HttpRequest req,
21 | [SignalR(HubName="repomonitor")] IAsyncCollector messages,
22 | ILogger log)
23 | {
24 | log.LogInformation("C# HTTP trigger function processed a pull request-related call.");
25 |
26 | string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
27 | dynamic data = JsonConvert.DeserializeObject(requestBody);
28 | string action = data.action;
29 |
30 | var args = new {
31 | Url = data.pull_request.url,
32 | PullRequestId = data.number,
33 | Title = data.pull_request.title,
34 | Avatar = data.pull_request.user.avatar_url,
35 | Login = data.pull_request.user.login
36 | };
37 |
38 | await messages.AddAsync(new SignalRMessage {
39 | Target = "pullRequestOpened",
40 | Arguments = new [] { args }
41 | });
42 |
43 | return (ActionResult)new OkObjectResult(args);
44 | }
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/PullRequestR/function-dotnet/function-dotnet.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 | netstandard2.0
4 | v2
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | PreserveNewest
13 |
14 |
15 | PreserveNewest
16 | Never
17 |
18 |
19 |
--------------------------------------------------------------------------------
/PullRequestR/function-dotnet/host.json:
--------------------------------------------------------------------------------
1 | {
2 | "version": "2.0"
3 | }
--------------------------------------------------------------------------------
/PullRequestR/function-dotnet/local.settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "IsEncrypted": false,
3 | "Values": {
4 | "AzureWebJobsStorage": "",
5 | "FUNCTIONS_WORKER_RUNTIME": "dotnet",
6 | "AzureSignalRConnectionString" : "Endpoint=https://YOUR-SIGNALR-SERVICE-URI;AccessKey=YOUR-KEY;Version=1.0;"
7 | }
8 | }
--------------------------------------------------------------------------------
/PullRequestR/function-javascript/.gitignore:
--------------------------------------------------------------------------------
1 | bin
2 | obj
3 | csx
4 | .vs
5 | edge
6 | Publish
7 |
8 | *.user
9 | *.suo
10 | *.cscfg
11 | *.Cache
12 | project.lock.json
13 |
14 | /packages
15 | /TestResults
16 |
17 | /tools/NuGet.exe
18 | /App_Data
19 | /secrets
20 | /data
21 | .secrets
22 | appsettings.json
23 | local.settings.json
24 |
--------------------------------------------------------------------------------
/PullRequestR/function-javascript/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | "recommendations": [
3 | "ms-azuretools.vscode-azurefunctions"
4 | ]
5 | }
6 |
--------------------------------------------------------------------------------
/PullRequestR/function-javascript/.vscode/launch.json:
--------------------------------------------------------------------------------
1 | {
2 | "version": "2.0.0",
3 | "tasks": [
4 | {
5 | "label": "Run Functions Host",
6 | "identifier": "runFunctionsHost",
7 | "type": "shell",
8 | "command": "func host start",
9 | "isBackground": true,
10 | "presentation": {
11 | "reveal": "always"
12 | },
13 | "problemMatcher": [
14 | {
15 | "owner": "azureFunctions",
16 | "pattern": [
17 | {
18 | "regexp": "\\b\\B",
19 | "file": 1,
20 | "location": 2,
21 | "message": 3
22 | }
23 | ],
24 | "background": {
25 | "activeOnStart": true,
26 | "beginsPattern": "^.*Stopping host.*",
27 | "endsPattern": "^.*Job host started.*"
28 | }
29 | }
30 | ],
31 | "options": {
32 | "env": {
33 | "languageWorkers:node:arguments": "--inspect=5858"
34 | }
35 | },
36 | "dependsOn": "installExtensions"
37 | },
38 | {
39 | "label": "installExtensions",
40 | "identifier": "installExtensions",
41 | "command": "func extensions install",
42 | "type": "shell",
43 | "presentation": {
44 | "reveal": "always"
45 | }
46 | }
47 | ]
48 | }
--------------------------------------------------------------------------------
/PullRequestR/function-javascript/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "azureFunctions.projectRuntime": "~2",
3 | "azureFunctions.projectLanguage": "JavaScript",
4 | "azureFunctions.templateFilter": "Verified",
5 | "azureFunctions.deploySubpath": ".",
6 | "azureFunctions.preDeployTask": "installExtensions"
7 | }
8 |
--------------------------------------------------------------------------------
/PullRequestR/function-javascript/.vscode/tasks.json:
--------------------------------------------------------------------------------
1 | {
2 | "version": "2.0.0",
3 | "tasks": [
4 | {
5 | "label": "runFunctionsHost",
6 | "type": "shell",
7 | "command": "func host start",
8 | "isBackground": true,
9 | "presentation": {
10 | "reveal": "always"
11 | },
12 | "problemMatcher": "$func-watch",
13 | "options": {
14 | "env": {
15 | "languageWorkers__node__arguments": "--inspect=5858"
16 | }
17 | },
18 | "dependsOn": "installExtensions"
19 | },
20 | {
21 | "label": "installExtensions",
22 | "command": "func extensions install",
23 | "type": "shell",
24 | "presentation": {
25 | "reveal": "always"
26 | }
27 | }
28 | ]
29 | }
30 |
--------------------------------------------------------------------------------
/PullRequestR/function-javascript/extensions.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 | netstandard2.0
4 |
5 | **
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/PullRequestR/function-javascript/host.json:
--------------------------------------------------------------------------------
1 | {
2 | "version": "2.0"
3 | }
4 |
--------------------------------------------------------------------------------
/PullRequestR/function-javascript/negotiate/function.json:
--------------------------------------------------------------------------------
1 | {
2 | "disabled": false,
3 | "bindings": [
4 | {
5 | "authLevel": "anonymous",
6 | "type": "httpTrigger",
7 | "direction": "in",
8 | "name": "req"
9 | },
10 | {
11 | "type": "http",
12 | "direction": "out",
13 | "name": "res"
14 | },
15 | {
16 | "type": "signalRConnectionInfo",
17 | "name": "connectionInfo",
18 | "hubName": "repomonitor",
19 | "direction": "in"
20 | }
21 | ]
22 | }
--------------------------------------------------------------------------------
/PullRequestR/function-javascript/negotiate/index.js:
--------------------------------------------------------------------------------
1 | module.exports = function (context, req, connectionInfo) {
2 | context.res = { body: connectionInfo };
3 | context.done();
4 | };
--------------------------------------------------------------------------------
/PullRequestR/function-javascript/proxies.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "http://json.schemastore.org/proxies",
3 | "proxies": {}
4 | }
5 |
--------------------------------------------------------------------------------
/PullRequestR/function-javascript/pullRequests/function.json:
--------------------------------------------------------------------------------
1 | {
2 | "disabled": false,
3 | "bindings": [
4 | {
5 | "authLevel": "anonymous",
6 | "type": "httpTrigger",
7 | "direction": "in",
8 | "name": "req",
9 | "methods": [
10 | "post"
11 | ]
12 | },
13 | {
14 | "type": "http",
15 | "direction": "out",
16 | "name": "res"
17 | },
18 | {
19 | "type": "signalR",
20 | "name": "signalRMessages",
21 | "hubName": "repomonitor",
22 | "direction": "out"
23 | }
24 | ]
25 | }
--------------------------------------------------------------------------------
/PullRequestR/function-javascript/pullRequests/index.js:
--------------------------------------------------------------------------------
1 | module.exports = function (context, req) {
2 | context.bindings.signalRMessages = [{
3 | "target": "pullRequestOpened",
4 | "arguments": [{
5 | Url : req.body.pull_request.url,
6 | PullRequestId : req.body.number,
7 | Title : req.body.pull_request.title,
8 | Avatar : req.body.pull_request.user.avatar_url,
9 | Login : req.body.pull_request.user.login
10 | }]
11 | }];
12 | context.done();
13 | };
--------------------------------------------------------------------------------
/PullRequestR/html/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
42 |
43 |
--------------------------------------------------------------------------------
/PullRequestR/project.code-workspace:
--------------------------------------------------------------------------------
1 | {
2 | "folders": [
3 | {
4 | "path": "."
5 | },
6 | {
7 | "path": "function-dotnet"
8 | },
9 | {
10 | "path": "function-javascript"
11 | }
12 | ],
13 | "settings": {}
14 | }
--------------------------------------------------------------------------------
/PullRequestR/readme.md:
--------------------------------------------------------------------------------
1 | ## Sample Setup
2 |
3 | ### Requirements
4 |
5 | This setup process assumes you have the following tools installed:
6 |
7 | 1. [Visual Studio Code](https://code.visualstudio.com)
8 | 1. The [Azure Extension for Visual Studio Code](https://marketplace.visualstudio.com/items?itemName=ms-vscode.vscode-node-azure-pack)
9 | 1. [JetBrains IntelliJ Idea](https://www.jetbrains.com/idea/) with the supporting prerequisites for developing Android applications in Java.
10 | 1. A [Microsoft Azure](https://azure.microsoft.com/en-us/free/) subscription. You can sign up for a free account [here](https://azure.microsoft.com/en-us/free/).
11 |
12 | Note - you could also use Visual Studio 2017+ with the Azure workload installed to do these items, use [Android Studio](https://developer.android.com/studio/) for your client development, or any other setup you prefer.
13 |
14 | ### Setup Process
15 |
16 | 1. Create an Azure Resource group for the resources you'll create for the app.
17 | 1. Create a new Azure Function in the new resource group.
18 | 1. Create a new Azure SignalR Service instance in the same resource group (free tier is fine).
19 | 1. Set the `AzureSignalRConnectionString` environment variable in your Azure Function to be the connection string of the Azure SignalR Service you created.
20 | 1. Open the project workspace in this directory by typing `code .\project.code-workspace` at the command line.
21 | 1. Deploy **either** the `function-dotnet` code if you want a .NET back-end Function, or the `function-javascript` if you'd like to have a Node.js back-end function. Both sets of code operate the same way and will achieve the same result.
22 | 1. Change line 33 of `android\app\src\main\java\com.example.pullrequestr\MainActivity.java` from this:
23 |
24 | ```java
25 | String url = "https://YOUR-FUNCTION-URI.azurewebsites.net/api";
26 | ```
27 |
28 | to be the URL of your function, like this:
29 |
30 | ```java
31 | String url = "https://MyGitHubReceiver.azurewebsites.net/api";
32 | ```
33 | 1. In the GitHub repository you wish to monitor, create a new WebHook and provide the URL of your function as the target URL, with the `pullrequests` suffix. Given the example URL above, the full target URL for your GitHub WebHook would be `https://MyGitHubReceiver.azurewebsites.net/pullrequests`.
34 | 1. Change the **Content type** of the request that will be sent to your Azure Function to `application/json`.
35 | 1. In the Function App settings blade of the Azure portal, copy the `default` host key and paste it into the **Secret** property for the GitHub WebHook.
36 | 1. Make sure to enable all pull request events so new pull request, closes, comments, and other activity will all be sent to your function.
37 | 1. Save the WebHook.
38 | 1. Run the Android app in the debugger.
39 | 1. Branch your repository (or fork it), make a change, and send pull request to your repository.
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | This repo exists as an archived reference only. We are no longer taking changes or updating the code in this repo.
2 |
--------------------------------------------------------------------------------
/StockTickR/CsharpClient/CsharpClient.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Exe
5 | netcoreapp3.0
6 | latest
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/StockTickR/CsharpClient/Program.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Threading;
4 | using System.Threading.Tasks;
5 | using Microsoft.AspNetCore.SignalR.Client;
6 | using Microsoft.Extensions.DependencyInjection;
7 | using Microsoft.Extensions.Logging;
8 |
9 | namespace CsharpClient
10 | {
11 | public class Program
12 | {
13 | static async Task Main(string[] args)
14 | {
15 | var connection = new HubConnectionBuilder()
16 | .WithUrl("http://localhost:5000/stocks")
17 | .ConfigureLogging(logging =>
18 | {
19 | logging.AddConsole();
20 | })
21 | .AddMessagePackProtocol()
22 | .Build();
23 |
24 | await connection.StartAsync();
25 |
26 | Console.WriteLine("Starting connection. Press Ctrl-C to close.");
27 | var cts = new CancellationTokenSource();
28 | Console.CancelKeyPress += (sender, a) =>
29 | {
30 | a.Cancel = true;
31 | cts.Cancel();
32 | };
33 |
34 | connection.Closed += e =>
35 | {
36 | Console.WriteLine("Connection closed with error: {0}", e);
37 |
38 | cts.Cancel();
39 | return Task.CompletedTask;
40 | };
41 |
42 |
43 | connection.On("marketOpened", () =>
44 | {
45 | Console.WriteLine("Market opened");
46 | });
47 |
48 | connection.On("marketClosed", () =>
49 | {
50 | Console.WriteLine("Market closed");
51 | });
52 |
53 | connection.On("marketReset", () =>
54 | {
55 | // We don't care if the market rest
56 | });
57 |
58 | var channel = await connection.StreamAsChannelAsync("StreamStocks", CancellationToken.None);
59 | while (await channel.WaitToReadAsync() && !cts.IsCancellationRequested)
60 | {
61 | while (channel.TryRead(out var stock))
62 | {
63 | Console.WriteLine($"{stock.Symbol} {stock.Price}");
64 | }
65 | }
66 | }
67 | }
68 |
69 | public class Stock
70 | {
71 | public string Symbol { get; set; }
72 |
73 | public decimal DayOpen { get; private set; }
74 |
75 | public decimal DayLow { get; private set; }
76 |
77 | public decimal DayHigh { get; private set; }
78 |
79 | public decimal LastChange { get; private set; }
80 |
81 | public decimal Change { get; set; }
82 |
83 | public double PercentChange { get; set; }
84 |
85 | public decimal Price { get; set; }
86 | }
87 | }
88 |
--------------------------------------------------------------------------------
/StockTickR/NodeClient/README.md:
--------------------------------------------------------------------------------
1 | ## How to use
2 | Launch server application first.
3 | ```
4 | $ npm install
5 | $ node app.js
6 | ```
--------------------------------------------------------------------------------
/StockTickR/NodeClient/app.js:
--------------------------------------------------------------------------------
1 | const signalR = require("@microsoft/signalr");
2 |
3 | var hubConnection = new signalR.HubConnectionBuilder()
4 | .withUrl("http://127.0.0.1:5000/stocks")
5 | .build();
6 |
7 | hubConnection.start()
8 | .then(() => {
9 | hubConnection.stream("StreamStocks").subscribe({
10 | next: (stock) => {
11 | console.log(stock);
12 | // console.log(stock.Symbol + " " + stock.Price);
13 | },
14 | error: (err) => { },
15 | complete: () => { }
16 | });
17 | });
--------------------------------------------------------------------------------
/StockTickR/NodeClient/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "dependencies": {
3 | "tslib": "^1.9.3"
4 | },
5 | "files": [
6 | "src/**/*"
7 | ],
8 | "devDependencies": {
9 | "@microsoft/signalr": "3.0.0",
10 | "@types/node": "^8.0.32"
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/StockTickR/README.md:
--------------------------------------------------------------------------------
1 | ## StockTickR Server
2 | The server application is located in the `StockTickRApp` folder.
3 |
4 | To run:
5 | ```
6 | $ dotnet restore
7 | $ dotnet run
8 | ```
9 |
10 | Application is hosted on `http://localhost:5000` by default.
11 |
12 | ## Node Client
13 | The node client is located in the `nodeClient` folder.
14 | Instructions are in the README there.
--------------------------------------------------------------------------------
/StockTickR/StockTickR.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio 15
4 | VisualStudioVersion = 15.0.26124.0
5 | MinimumVisualStudioVersion = 15.0.26124.0
6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StockTickR", "StockTickRApp\StockTickR.csproj", "{6139B392-E328-46E5-BC60-BCFA3BB42E67}"
7 | EndProject
8 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CsharpClient", "CsharpClient\CsharpClient.csproj", "{E4E0DC98-E0C1-41AE-9337-34508BFFCA87}"
9 | EndProject
10 | Global
11 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
12 | Debug|Any CPU = Debug|Any CPU
13 | Debug|x64 = Debug|x64
14 | Debug|x86 = Debug|x86
15 | Release|Any CPU = Release|Any CPU
16 | Release|x64 = Release|x64
17 | Release|x86 = Release|x86
18 | EndGlobalSection
19 | GlobalSection(SolutionProperties) = preSolution
20 | HideSolutionNode = FALSE
21 | EndGlobalSection
22 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
23 | {6139B392-E328-46E5-BC60-BCFA3BB42E67}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
24 | {6139B392-E328-46E5-BC60-BCFA3BB42E67}.Debug|Any CPU.Build.0 = Debug|Any CPU
25 | {6139B392-E328-46E5-BC60-BCFA3BB42E67}.Debug|x64.ActiveCfg = Debug|Any CPU
26 | {6139B392-E328-46E5-BC60-BCFA3BB42E67}.Debug|x64.Build.0 = Debug|Any CPU
27 | {6139B392-E328-46E5-BC60-BCFA3BB42E67}.Debug|x86.ActiveCfg = Debug|Any CPU
28 | {6139B392-E328-46E5-BC60-BCFA3BB42E67}.Debug|x86.Build.0 = Debug|Any CPU
29 | {6139B392-E328-46E5-BC60-BCFA3BB42E67}.Release|Any CPU.ActiveCfg = Release|Any CPU
30 | {6139B392-E328-46E5-BC60-BCFA3BB42E67}.Release|Any CPU.Build.0 = Release|Any CPU
31 | {6139B392-E328-46E5-BC60-BCFA3BB42E67}.Release|x64.ActiveCfg = Release|Any CPU
32 | {6139B392-E328-46E5-BC60-BCFA3BB42E67}.Release|x64.Build.0 = Release|Any CPU
33 | {6139B392-E328-46E5-BC60-BCFA3BB42E67}.Release|x86.ActiveCfg = Release|Any CPU
34 | {6139B392-E328-46E5-BC60-BCFA3BB42E67}.Release|x86.Build.0 = Release|Any CPU
35 | {E4E0DC98-E0C1-41AE-9337-34508BFFCA87}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
36 | {E4E0DC98-E0C1-41AE-9337-34508BFFCA87}.Debug|Any CPU.Build.0 = Debug|Any CPU
37 | {E4E0DC98-E0C1-41AE-9337-34508BFFCA87}.Debug|x64.ActiveCfg = Debug|Any CPU
38 | {E4E0DC98-E0C1-41AE-9337-34508BFFCA87}.Debug|x64.Build.0 = Debug|Any CPU
39 | {E4E0DC98-E0C1-41AE-9337-34508BFFCA87}.Debug|x86.ActiveCfg = Debug|Any CPU
40 | {E4E0DC98-E0C1-41AE-9337-34508BFFCA87}.Debug|x86.Build.0 = Debug|Any CPU
41 | {E4E0DC98-E0C1-41AE-9337-34508BFFCA87}.Release|Any CPU.ActiveCfg = Release|Any CPU
42 | {E4E0DC98-E0C1-41AE-9337-34508BFFCA87}.Release|Any CPU.Build.0 = Release|Any CPU
43 | {E4E0DC98-E0C1-41AE-9337-34508BFFCA87}.Release|x64.ActiveCfg = Release|Any CPU
44 | {E4E0DC98-E0C1-41AE-9337-34508BFFCA87}.Release|x64.Build.0 = Release|Any CPU
45 | {E4E0DC98-E0C1-41AE-9337-34508BFFCA87}.Release|x86.ActiveCfg = Release|Any CPU
46 | {E4E0DC98-E0C1-41AE-9337-34508BFFCA87}.Release|x86.Build.0 = Release|Any CPU
47 | EndGlobalSection
48 | EndGlobal
49 |
--------------------------------------------------------------------------------
/StockTickR/StockTickRApp/Hubs/StockTickerHub.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Threading.Channels;
4 | using System.Threading.Tasks;
5 | using Microsoft.AspNetCore.SignalR;
6 |
7 | namespace StockTickR.Hubs
8 | {
9 | public class StockTickerHub : Hub
10 | {
11 | private readonly StockTicker _stockTicker;
12 |
13 | public StockTickerHub(StockTicker stockTicker)
14 | {
15 | _stockTicker = stockTicker;
16 | }
17 |
18 | public IEnumerable GetAllStocks()
19 | {
20 | return _stockTicker.GetAllStocks();
21 | }
22 |
23 | public ChannelReader StreamStocks()
24 | {
25 | return _stockTicker.StreamStocks().AsChannelReader(10);
26 | }
27 |
28 | public string GetMarketState()
29 | {
30 | return _stockTicker.MarketState.ToString();
31 | }
32 |
33 | public async Task OpenMarket()
34 | {
35 | await _stockTicker.OpenMarket();
36 | }
37 |
38 | public async Task CloseMarket()
39 | {
40 | await _stockTicker.CloseMarket();
41 | }
42 |
43 | public async Task Reset()
44 | {
45 | await _stockTicker.Reset();
46 | }
47 | }
48 | }
--------------------------------------------------------------------------------
/StockTickR/StockTickRApp/ObservableExtensions.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Threading.Channels;
3 |
4 | namespace System
5 | {
6 | public static class ObservableExtensions
7 | {
8 | public static ChannelReader AsChannelReader(this IObservable observable, int? maxBufferSize = null)
9 | {
10 | // This sample shows adapting an observable to a ChannelReader without
11 | // back pressure, if the connection is slower than the producer, memory will
12 | // start to increase.
13 |
14 | // If the channel is bounded, TryWrite will return false and effectively
15 | // drop items.
16 |
17 | // The other alternative is to use a bounded channel, and when the limit is reached
18 | // block on WaitToWriteAsync. This will block a thread pool thread and isn't recommended and isn't shown here.
19 | var channel = maxBufferSize != null ? Channel.CreateBounded(maxBufferSize.Value) : Channel.CreateUnbounded();
20 |
21 | var disposable = observable.Subscribe(
22 | value => channel.Writer.TryWrite(value),
23 | error => channel.Writer.TryComplete(error),
24 | () => channel.Writer.TryComplete());
25 |
26 | // Complete the subscription on the reader completing
27 | channel.Reader.Completion.ContinueWith(task => disposable.Dispose());
28 |
29 | return channel.Reader;
30 | }
31 | }
32 | }
--------------------------------------------------------------------------------
/StockTickR/StockTickRApp/Program.cs:
--------------------------------------------------------------------------------
1 | // Copyright (c) .NET Foundation. All rights reserved.
2 | // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
3 |
4 | using Microsoft.AspNetCore.Hosting;
5 | using Microsoft.Extensions.Hosting;
6 |
7 | namespace StockTickR
8 | {
9 | public class Program
10 | {
11 | public static void Main(string[] args)
12 | {
13 | CreateHostBuilder(args).Build().Run();
14 | }
15 |
16 | public static IHostBuilder CreateHostBuilder(string[] args) =>
17 | Host.CreateDefaultBuilder(args)
18 | .ConfigureWebHostDefaults(webBuilder =>
19 | {
20 | webBuilder.UseStartup();
21 | });
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/StockTickR/StockTickRApp/Startup.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.AspNetCore.Builder;
2 | using Microsoft.AspNetCore.Hosting;
3 | using Microsoft.Extensions.DependencyInjection;
4 | using Microsoft.Extensions.Hosting;
5 | using StockTickR.Hubs;
6 |
7 | namespace StockTickR
8 | {
9 | public class Startup
10 | {
11 | // This method gets called by the runtime. Use this method to add services to the container.
12 | public void ConfigureServices(IServiceCollection services)
13 | {
14 | services.AddSignalR()
15 | .AddMessagePackProtocol();
16 |
17 | services.AddSingleton();
18 | }
19 |
20 | // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
21 | public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
22 | {
23 | if (env.IsDevelopment())
24 | {
25 | app.UseDeveloperExceptionPage();
26 | }
27 |
28 | app.UseFileServer();
29 |
30 | app.UseRouting();
31 |
32 | app.UseEndpoints(endpoints =>
33 | {
34 | endpoints.MapHub("/stocks");
35 | });
36 | }
37 | }
38 | }
--------------------------------------------------------------------------------
/StockTickR/StockTickRApp/Stock.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace StockTickR
4 | {
5 | public class Stock
6 | {
7 | private decimal _price;
8 |
9 | public string Symbol { get; set; }
10 |
11 | public decimal DayOpen { get; private set; }
12 |
13 | public decimal DayLow { get; private set; }
14 |
15 | public decimal DayHigh { get; private set; }
16 |
17 | public decimal LastChange { get; private set; }
18 |
19 | public decimal Change
20 | {
21 | get
22 | {
23 | return Price - DayOpen;
24 | }
25 | }
26 |
27 | public double PercentChange
28 | {
29 | get
30 | {
31 | return (double)Math.Round(Change / Price, 4);
32 | }
33 | }
34 |
35 | public decimal Price
36 | {
37 | get
38 | {
39 | return _price;
40 | }
41 | set
42 | {
43 | if (_price == value)
44 | {
45 | return;
46 | }
47 |
48 | LastChange = value - _price;
49 | _price = value;
50 |
51 | if (DayOpen == 0)
52 | {
53 | DayOpen = _price;
54 | }
55 | if (_price < DayLow || DayLow == 0)
56 | {
57 | DayLow = _price;
58 | }
59 | if (_price > DayHigh)
60 | {
61 | DayHigh = _price;
62 | }
63 | }
64 | }
65 | }
66 | }
67 |
--------------------------------------------------------------------------------
/StockTickR/StockTickRApp/StockTickR.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 | netcoreapp3.0
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/StockTickR/StockTickRApp/wwwroot/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | ASP.NET Core SignalR Stock Ticker
5 |
6 |
7 |
8 | ASP.NET Core SignalR Stock Ticker Sample
9 |
10 |
11 |
12 |
13 |
14 | Live Stock Table
15 |
16 |
17 |
18 | Symbol | Price | Open | High | Low | Change | % |
19 |
20 |
21 |
22 |
23 |
24 |
25 | Live Stock Ticker
26 |
32 |
33 |
34 |
35 |
36 |
--------------------------------------------------------------------------------
/WhiteBoard/WhiteBoard.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio 15
4 | VisualStudioVersion = 15.0.26823.1
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WhiteBoard", "WhiteBoard\WhiteBoard.csproj", "{3D92214F-131D-4AD7-8837-6A6D1EA0C338}"
7 | EndProject
8 | Global
9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
10 | Debug|Any CPU = Debug|Any CPU
11 | Release|Any CPU = Release|Any CPU
12 | EndGlobalSection
13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
14 | {3D92214F-131D-4AD7-8837-6A6D1EA0C338}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
15 | {3D92214F-131D-4AD7-8837-6A6D1EA0C338}.Debug|Any CPU.Build.0 = Debug|Any CPU
16 | {3D92214F-131D-4AD7-8837-6A6D1EA0C338}.Release|Any CPU.ActiveCfg = Release|Any CPU
17 | {3D92214F-131D-4AD7-8837-6A6D1EA0C338}.Release|Any CPU.Build.0 = Release|Any CPU
18 | EndGlobalSection
19 | GlobalSection(SolutionProperties) = preSolution
20 | HideSolutionNode = FALSE
21 | EndGlobalSection
22 | GlobalSection(ExtensibilityGlobals) = postSolution
23 | SolutionGuid = {A42EF5E9-8A40-4884-AA86-EEC0CFA58AFF}
24 | EndGlobalSection
25 | EndGlobal
26 |
--------------------------------------------------------------------------------
/WhiteBoard/WhiteBoard/Hubs/DrawHub.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.AspNetCore.SignalR;
2 | using System.Collections.Generic;
3 | using System.Threading.Tasks;
4 |
5 | namespace WhiteBoard.Hubs
6 | {
7 | public class DrawHub : Hub
8 | {
9 | public Task Draw(int prevX, int prevY, int currentX, int currentY, string color)
10 | {
11 | return Clients.Others.SendAsync("draw", prevX, prevY, currentX, currentY, color);
12 | }
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/WhiteBoard/WhiteBoard/Program.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.AspNetCore.Hosting;
2 | using Microsoft.Extensions.Hosting;
3 |
4 | namespace WhiteBoard
5 | {
6 | public class Program
7 | {
8 | public static void Main(string[] args)
9 | {
10 | CreateHostBuilder(args).Build().Run();
11 | }
12 |
13 | public static IHostBuilder CreateHostBuilder(string[] args) =>
14 | Host.CreateDefaultBuilder(args)
15 | .ConfigureWebHostDefaults(webBuilder =>
16 | {
17 | webBuilder.UseStartup();
18 | });
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/WhiteBoard/WhiteBoard/Startup.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.AspNetCore.Builder;
2 | using Microsoft.AspNetCore.Hosting;
3 | using Microsoft.Extensions.DependencyInjection;
4 | using Microsoft.Extensions.Hosting;
5 | using WhiteBoard.Hubs;
6 |
7 | namespace WhiteBoard
8 | {
9 | public class Startup
10 | {
11 | // This method gets called by the runtime. Use this method to add services to the container.
12 | // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
13 | public void ConfigureServices(IServiceCollection services)
14 | {
15 | services.AddSignalR();
16 | }
17 |
18 | // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
19 | public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
20 | {
21 | if (env.IsDevelopment())
22 | {
23 | app.UseDeveloperExceptionPage();
24 | }
25 |
26 | app.UseFileServer();
27 |
28 | app.UseRouting();
29 |
30 | app.UseEndpoints(endpoints =>
31 | {
32 | endpoints.MapHub("/draw");
33 | });
34 | }
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/WhiteBoard/WhiteBoard/WhiteBoard.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | netcoreapp3.0
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/WhiteBoard/WhiteBoard/wwwroot/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
10 | WhiteBoard
11 |
17 |
18 |
19 |
20 |
21 |
28 |
29 |
93 |
94 |
95 |
--------------------------------------------------------------------------------
/WindowsFormsSample/WindowsFormsSample.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio 15
4 | VisualStudioVersion = 15.0.26124.0
5 | MinimumVisualStudioVersion = 15.0.26124.0
6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WindowsFormsSample", "WindowsFormsSample\WindowsFormsSample.csproj", "{BDB97E88-B2C0-44C5-982E-D9CF0EBCA451}"
7 | EndProject
8 | Global
9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
10 | Debug|Any CPU = Debug|Any CPU
11 | Debug|x64 = Debug|x64
12 | Debug|x86 = Debug|x86
13 | Release|Any CPU = Release|Any CPU
14 | Release|x64 = Release|x64
15 | Release|x86 = Release|x86
16 | EndGlobalSection
17 | GlobalSection(SolutionProperties) = preSolution
18 | HideSolutionNode = FALSE
19 | EndGlobalSection
20 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
21 | {BDB97E88-B2C0-44C5-982E-D9CF0EBCA451}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
22 | {BDB97E88-B2C0-44C5-982E-D9CF0EBCA451}.Debug|Any CPU.Build.0 = Debug|Any CPU
23 | {BDB97E88-B2C0-44C5-982E-D9CF0EBCA451}.Debug|x64.ActiveCfg = Debug|Any CPU
24 | {BDB97E88-B2C0-44C5-982E-D9CF0EBCA451}.Debug|x64.Build.0 = Debug|Any CPU
25 | {BDB97E88-B2C0-44C5-982E-D9CF0EBCA451}.Debug|x86.ActiveCfg = Debug|Any CPU
26 | {BDB97E88-B2C0-44C5-982E-D9CF0EBCA451}.Debug|x86.Build.0 = Debug|Any CPU
27 | {BDB97E88-B2C0-44C5-982E-D9CF0EBCA451}.Release|Any CPU.ActiveCfg = Debug|Any CPU
28 | {BDB97E88-B2C0-44C5-982E-D9CF0EBCA451}.Release|Any CPU.Build.0 = Debug|Any CPU
29 | {BDB97E88-B2C0-44C5-982E-D9CF0EBCA451}.Release|x64.ActiveCfg = Debug|Any CPU
30 | {BDB97E88-B2C0-44C5-982E-D9CF0EBCA451}.Release|x64.Build.0 = Debug|Any CPU
31 | {BDB97E88-B2C0-44C5-982E-D9CF0EBCA451}.Release|x86.ActiveCfg = Debug|Any CPU
32 | {BDB97E88-B2C0-44C5-982E-D9CF0EBCA451}.Release|x86.Build.0 = Debug|Any CPU
33 | EndGlobalSection
34 | EndGlobal
35 |
--------------------------------------------------------------------------------
/WindowsFormsSample/WindowsFormsSample/App.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/WindowsFormsSample/WindowsFormsSample/Program.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Threading.Tasks;
5 | using System.Windows.Forms;
6 |
7 | namespace WindowsFormsSample
8 | {
9 | static class Program
10 | {
11 | ///
12 | /// The main entry point for the application.
13 | ///
14 | [STAThread]
15 | static void Main()
16 | {
17 | Application.EnableVisualStyles();
18 | Application.SetCompatibleTextRenderingDefault(false);
19 | Application.Run(new ChatForm());
20 | }
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/WindowsFormsSample/WindowsFormsSample/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("WindowsFormsSample")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("HP Inc.")]
12 | [assembly: AssemblyProduct("WindowsFormsSample")]
13 | [assembly: AssemblyCopyright("Copyright © HP Inc. 2018")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Setting ComVisible to false makes the types in this assembly not visible
18 | // to COM components. If you need to access a type in this assembly from
19 | // COM, set the ComVisible attribute to true on that type.
20 | [assembly: ComVisible(false)]
21 |
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM
23 | [assembly: Guid("bdb97e88-b2c0-44c5-982e-d9cf0ebca451")]
24 |
25 | // Version information for an assembly consists of the following four values:
26 | //
27 | // Major Version
28 | // Minor Version
29 | // Build Number
30 | // Revision
31 | //
32 | // You can specify all the values or you can default the Build and Revision Numbers
33 | // by using the '*' as shown below:
34 | // [assembly: AssemblyVersion("1.0.*")]
35 | [assembly: AssemblyVersion("1.0.0.0")]
36 | [assembly: AssemblyFileVersion("1.0.0.0")]
37 |
--------------------------------------------------------------------------------
/WindowsFormsSample/WindowsFormsSample/Properties/Resources.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.42000
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace WindowsFormsSample.Properties
12 | {
13 |
14 |
15 | ///
16 | /// A strongly-typed resource class, for looking up localized strings, etc.
17 | ///
18 | // This class was auto-generated by the StronglyTypedResourceBuilder
19 | // class via a tool like ResGen or Visual Studio.
20 | // To add or remove a member, edit your .ResX file then rerun ResGen
21 | // with the /str option, or rebuild your VS project.
22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
25 | internal class Resources
26 | {
27 |
28 | private static global::System.Resources.ResourceManager resourceMan;
29 |
30 | private static global::System.Globalization.CultureInfo resourceCulture;
31 |
32 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
33 | internal Resources()
34 | {
35 | }
36 |
37 | ///
38 | /// Returns the cached ResourceManager instance used by this class.
39 | ///
40 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
41 | internal static global::System.Resources.ResourceManager ResourceManager
42 | {
43 | get
44 | {
45 | if ((resourceMan == null))
46 | {
47 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("WindowsFormsSample.Properties.Resources", typeof(Resources).Assembly);
48 | resourceMan = temp;
49 | }
50 | return resourceMan;
51 | }
52 | }
53 |
54 | ///
55 | /// Overrides the current thread's CurrentUICulture property for all
56 | /// resource lookups using this strongly typed resource class.
57 | ///
58 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
59 | internal static global::System.Globalization.CultureInfo Culture
60 | {
61 | get
62 | {
63 | return resourceCulture;
64 | }
65 | set
66 | {
67 | resourceCulture = value;
68 | }
69 | }
70 | }
71 | }
72 |
--------------------------------------------------------------------------------
/WindowsFormsSample/WindowsFormsSample/Properties/Settings.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.42000
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace WindowsFormsSample.Properties
12 | {
13 |
14 |
15 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
16 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
17 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
18 | {
19 |
20 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
21 |
22 | public static Settings Default
23 | {
24 | get
25 | {
26 | return defaultInstance;
27 | }
28 | }
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/WindowsFormsSample/WindowsFormsSample/Properties/Settings.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/WindowsUniversal/WindowsUniversal.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio 15
4 | VisualStudioVersion = 15.0.27715.0
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WindowsUniversal", "WindowsUniversal\WindowsUniversal.csproj", "{89D74AD7-FF1F-4948-857B-669741B1F273}"
7 | EndProject
8 | Global
9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
10 | Debug|ARM = Debug|ARM
11 | Debug|x64 = Debug|x64
12 | Debug|x86 = Debug|x86
13 | Release|ARM = Release|ARM
14 | Release|x64 = Release|x64
15 | Release|x86 = Release|x86
16 | EndGlobalSection
17 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
18 | {89D74AD7-FF1F-4948-857B-669741B1F273}.Debug|ARM.ActiveCfg = Debug|ARM
19 | {89D74AD7-FF1F-4948-857B-669741B1F273}.Debug|ARM.Build.0 = Debug|ARM
20 | {89D74AD7-FF1F-4948-857B-669741B1F273}.Debug|ARM.Deploy.0 = Debug|ARM
21 | {89D74AD7-FF1F-4948-857B-669741B1F273}.Debug|x64.ActiveCfg = Debug|x64
22 | {89D74AD7-FF1F-4948-857B-669741B1F273}.Debug|x64.Build.0 = Debug|x64
23 | {89D74AD7-FF1F-4948-857B-669741B1F273}.Debug|x64.Deploy.0 = Debug|x64
24 | {89D74AD7-FF1F-4948-857B-669741B1F273}.Debug|x86.ActiveCfg = Debug|x86
25 | {89D74AD7-FF1F-4948-857B-669741B1F273}.Debug|x86.Build.0 = Debug|x86
26 | {89D74AD7-FF1F-4948-857B-669741B1F273}.Debug|x86.Deploy.0 = Debug|x86
27 | {89D74AD7-FF1F-4948-857B-669741B1F273}.Release|ARM.ActiveCfg = Release|ARM
28 | {89D74AD7-FF1F-4948-857B-669741B1F273}.Release|ARM.Build.0 = Release|ARM
29 | {89D74AD7-FF1F-4948-857B-669741B1F273}.Release|ARM.Deploy.0 = Release|ARM
30 | {89D74AD7-FF1F-4948-857B-669741B1F273}.Release|x64.ActiveCfg = Release|x64
31 | {89D74AD7-FF1F-4948-857B-669741B1F273}.Release|x64.Build.0 = Release|x64
32 | {89D74AD7-FF1F-4948-857B-669741B1F273}.Release|x64.Deploy.0 = Release|x64
33 | {89D74AD7-FF1F-4948-857B-669741B1F273}.Release|x86.ActiveCfg = Release|x86
34 | {89D74AD7-FF1F-4948-857B-669741B1F273}.Release|x86.Build.0 = Release|x86
35 | {89D74AD7-FF1F-4948-857B-669741B1F273}.Release|x86.Deploy.0 = Release|x86
36 | EndGlobalSection
37 | GlobalSection(SolutionProperties) = preSolution
38 | HideSolutionNode = FALSE
39 | EndGlobalSection
40 | GlobalSection(ExtensibilityGlobals) = postSolution
41 | SolutionGuid = {09BCA7B1-23B1-4296-8487-363CF3023013}
42 | EndGlobalSection
43 | EndGlobal
44 |
--------------------------------------------------------------------------------
/WindowsUniversal/WindowsUniversal/App.xaml:
--------------------------------------------------------------------------------
1 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/WindowsUniversal/WindowsUniversal/Assets/LockScreenLogo.scale-200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/WindowsUniversal/WindowsUniversal/Assets/LockScreenLogo.scale-200.png
--------------------------------------------------------------------------------
/WindowsUniversal/WindowsUniversal/Assets/SplashScreen.scale-200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/WindowsUniversal/WindowsUniversal/Assets/SplashScreen.scale-200.png
--------------------------------------------------------------------------------
/WindowsUniversal/WindowsUniversal/Assets/Square150x150Logo.scale-200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/WindowsUniversal/WindowsUniversal/Assets/Square150x150Logo.scale-200.png
--------------------------------------------------------------------------------
/WindowsUniversal/WindowsUniversal/Assets/Square44x44Logo.scale-200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/WindowsUniversal/WindowsUniversal/Assets/Square44x44Logo.scale-200.png
--------------------------------------------------------------------------------
/WindowsUniversal/WindowsUniversal/Assets/Square44x44Logo.targetsize-24_altform-unplated.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/WindowsUniversal/WindowsUniversal/Assets/Square44x44Logo.targetsize-24_altform-unplated.png
--------------------------------------------------------------------------------
/WindowsUniversal/WindowsUniversal/Assets/StoreLogo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/WindowsUniversal/WindowsUniversal/Assets/StoreLogo.png
--------------------------------------------------------------------------------
/WindowsUniversal/WindowsUniversal/Assets/Wide310x150Logo.scale-200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/WindowsUniversal/WindowsUniversal/Assets/Wide310x150Logo.scale-200.png
--------------------------------------------------------------------------------
/WindowsUniversal/WindowsUniversal/MainPage.xaml:
--------------------------------------------------------------------------------
1 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/WindowsUniversal/WindowsUniversal/MainPage.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.IO;
4 | using System.Linq;
5 | using System.Runtime.InteropServices.WindowsRuntime;
6 | using Windows.Foundation;
7 | using Windows.Foundation.Collections;
8 | using Windows.UI.Xaml;
9 | using Windows.UI.Xaml.Controls;
10 | using Windows.UI.Xaml.Controls.Primitives;
11 | using Windows.UI.Xaml.Data;
12 | using Windows.UI.Xaml.Input;
13 | using Windows.UI.Xaml.Media;
14 | using Windows.UI.Xaml.Navigation;
15 | using Microsoft.AspNetCore.SignalR.Client;
16 | using System.Threading;
17 | using Microsoft.Extensions.Logging;
18 | using Windows.UI.Core;
19 |
20 | // The Blank Page item template is documented at https://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x409
21 |
22 | namespace WindowsUniversal
23 | {
24 | ///
25 | /// An empty page that can be used on its own or navigated to within a Frame.
26 | ///
27 | public sealed partial class MainPage : Page
28 | {
29 | private HubConnection _connection;
30 |
31 | public MainPage()
32 | {
33 | this.InitializeComponent();
34 | }
35 |
36 | private async void ConnectButton_Click(object sender, RoutedEventArgs e)
37 | {
38 | try
39 | {
40 | _connection = new HubConnectionBuilder()
41 | .WithUrl(UrlTextBox.Text)
42 | .ConfigureLogging(logging =>
43 | {
44 | logging.AddDebug();
45 | logging.SetMinimumLevel(LogLevel.Trace);
46 | })
47 | .Build();
48 |
49 | _connection.On("Send", s =>
50 | {
51 | // We don't need to actually wait for this, we're done after kicking this off.
52 | _ = Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => AppendMessage(s));
53 | });
54 |
55 | await _connection.StartAsync();
56 |
57 | ClearMessages();
58 |
59 | AppendMessage("Connected");
60 |
61 | ConnectGrid.Visibility = Visibility.Collapsed;
62 | DisconnectGrid.Visibility = Visibility.Visible;
63 | MessageTextBox.IsEnabled = true;
64 | SendButton.IsEnabled = true;
65 | }
66 | catch (Exception ex)
67 | {
68 | AppendMessage($"Error connecting: {ex}");
69 | }
70 | }
71 |
72 | private void ClearMessages()
73 | {
74 | MessagesListView.Items?.Clear();
75 | }
76 |
77 | private void AppendMessage(string message)
78 | {
79 | MessagesListView.Items?.Add(message);
80 | }
81 |
82 | private async void SendButton_Click(object sender, RoutedEventArgs e)
83 | {
84 | try
85 | {
86 | await _connection.InvokeAsync("Send", MessageTextBox.Text);
87 | }
88 | catch (Exception ex)
89 | {
90 | AppendMessage($"Error sending: {ex}");
91 | }
92 | }
93 |
94 | private async void DisconnectButton_Click(object sender, RoutedEventArgs e)
95 | {
96 | try
97 | {
98 | await _connection.StopAsync();
99 | await _connection.DisposeAsync();
100 |
101 | AppendMessage("Disconnected");
102 |
103 | ConnectGrid.Visibility = Visibility.Visible;
104 | DisconnectGrid.Visibility = Visibility.Collapsed;
105 | MessageTextBox.IsEnabled = false;
106 | SendButton.IsEnabled = false;
107 | }
108 | catch (Exception ex)
109 | {
110 | AppendMessage($"Error disconnecting: {ex}");
111 | }
112 | }
113 | }
114 | }
115 |
--------------------------------------------------------------------------------
/WindowsUniversal/WindowsUniversal/Package.appxmanifest:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | WindowsUniversal
7 | Microsoft ASP.NET Core SignalR Team
8 | Assets\StoreLogo.png
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/WindowsUniversal/WindowsUniversal/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("WindowsUniversal")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("WindowsUniversal")]
13 | [assembly: AssemblyCopyright("Copyright © 2018")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Version information for an assembly consists of the following four values:
18 | //
19 | // Major Version
20 | // Minor Version
21 | // Build Number
22 | // Revision
23 | //
24 | // You can specify all the values or you can default the Build and Revision Numbers
25 | // by using the '*' as shown below:
26 | // [assembly: AssemblyVersion("1.0.*")]
27 | [assembly: AssemblyVersion("1.0.0.0")]
28 | [assembly: AssemblyFileVersion("1.0.0.0")]
29 | [assembly: ComVisible(false)]
--------------------------------------------------------------------------------
/WindowsUniversal/WindowsUniversal/Properties/Default.rd.xml:
--------------------------------------------------------------------------------
1 |
17 |
18 |
19 |
20 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/WindowsUniversal/WindowsUniversal/WindowsUniversal_TemporaryKey.pfx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/WindowsUniversal/WindowsUniversal/WindowsUniversal_TemporaryKey.pfx
--------------------------------------------------------------------------------
/Xamarin/AndroidClient/Assets/AboutAssets.txt:
--------------------------------------------------------------------------------
1 | Any raw assets you want to be deployed with your application can be placed in
2 | this directory (and child directories) and given a Build Action of "AndroidAsset".
3 |
4 | These files will be deployed with you package and will be accessible using Android's
5 | AssetManager, like this:
6 |
7 | public class ReadAsset : Activity
8 | {
9 | protected override void OnCreate (Bundle bundle)
10 | {
11 | base.OnCreate (bundle);
12 |
13 | InputStream input = Assets.Open ("my_asset.txt");
14 | }
15 | }
16 |
17 | Additionally, some Android functions will automatically load asset files:
18 |
19 | Typeface tf = Typeface.CreateFromAsset (Context.Assets, "fonts/samplefont.ttf");
--------------------------------------------------------------------------------
/Xamarin/AndroidClient/Properties/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/Xamarin/AndroidClient/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 | using Android.App;
5 |
6 | // General Information about an assembly is controlled through the following
7 | // set of attributes. Change these attribute values to modify the information
8 | // associated with an assembly.
9 | [assembly: AssemblyTitle("AndroidApp")]
10 | [assembly: AssemblyDescription("")]
11 | [assembly: AssemblyConfiguration("")]
12 | [assembly: AssemblyCompany("")]
13 | [assembly: AssemblyProduct("AndroidApp")]
14 | [assembly: AssemblyCopyright("Copyright © 2018")]
15 | [assembly: AssemblyTrademark("")]
16 | [assembly: AssemblyCulture("")]
17 | [assembly: ComVisible(false)]
18 |
19 | // Version information for an assembly consists of the following four values:
20 | //
21 | // Major Version
22 | // Minor Version
23 | // Build Number
24 | // Revision
25 | //
26 | // You can specify all the values or you can default the Build and Revision Numbers
27 | // by using the '*' as shown below:
28 | // [assembly: AssemblyVersion("1.0.*")]
29 | [assembly: AssemblyVersion("1.0.0.0")]
30 | [assembly: AssemblyFileVersion("1.0.0.0")]
31 |
--------------------------------------------------------------------------------
/Xamarin/AndroidClient/Resources/AboutResources.txt:
--------------------------------------------------------------------------------
1 | Images, layout descriptions, binary blobs and string dictionaries can be included
2 | in your application as resource files. Various Android APIs are designed to
3 | operate on the resource IDs instead of dealing with images, strings or binary blobs
4 | directly.
5 |
6 | For example, a sample Android app that contains a user interface layout (main.axml),
7 | an internationalization string table (strings.xml) and some icons (drawable-XXX/icon.png)
8 | would keep its resources in the "Resources" directory of the application:
9 |
10 | Resources/
11 | drawable/
12 | icon.png
13 |
14 | layout/
15 | main.axml
16 |
17 | values/
18 | strings.xml
19 |
20 | In order to get the build system to recognize Android resources, set the build action to
21 | "AndroidResource". The native Android APIs do not operate directly with filenames, but
22 | instead operate on resource IDs. When you compile an Android application that uses resources,
23 | the build system will package the resources for distribution and generate a class called "R"
24 | (this is an Android convention) that contains the tokens for each one of the resources
25 | included. For example, for the above Resources layout, this is what the R class would expose:
26 |
27 | public class R {
28 | public class drawable {
29 | public const int icon = 0x123;
30 | }
31 |
32 | public class layout {
33 | public const int main = 0x456;
34 | }
35 |
36 | public class strings {
37 | public const int first_string = 0xabc;
38 | public const int second_string = 0xbcd;
39 | }
40 | }
41 |
42 | You would then use R.drawable.icon to reference the drawable/icon.png file, or R.layout.main
43 | to reference the layout/main.axml file, or R.strings.first_string to reference the first
44 | string in the dictionary file values/strings.xml.
--------------------------------------------------------------------------------
/Xamarin/AndroidClient/Resources/layout/activity_main.axml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
13 |
18 |
23 |
28 |
33 |
34 |
--------------------------------------------------------------------------------
/Xamarin/AndroidClient/Resources/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/Xamarin/AndroidClient/Resources/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/Xamarin/AndroidClient/Resources/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/Xamarin/AndroidClient/Resources/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/Xamarin/AndroidClient/Resources/mipmap-hdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/Xamarin/AndroidClient/Resources/mipmap-hdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/Xamarin/AndroidClient/Resources/mipmap-hdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/Xamarin/AndroidClient/Resources/mipmap-hdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/Xamarin/AndroidClient/Resources/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/Xamarin/AndroidClient/Resources/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/Xamarin/AndroidClient/Resources/mipmap-mdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/Xamarin/AndroidClient/Resources/mipmap-mdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/Xamarin/AndroidClient/Resources/mipmap-mdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/Xamarin/AndroidClient/Resources/mipmap-mdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/Xamarin/AndroidClient/Resources/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/Xamarin/AndroidClient/Resources/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/Xamarin/AndroidClient/Resources/mipmap-xhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/Xamarin/AndroidClient/Resources/mipmap-xhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/Xamarin/AndroidClient/Resources/mipmap-xhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/Xamarin/AndroidClient/Resources/mipmap-xhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/Xamarin/AndroidClient/Resources/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/Xamarin/AndroidClient/Resources/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/Xamarin/AndroidClient/Resources/mipmap-xxhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/Xamarin/AndroidClient/Resources/mipmap-xxhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/Xamarin/AndroidClient/Resources/mipmap-xxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/Xamarin/AndroidClient/Resources/mipmap-xxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/Xamarin/AndroidClient/Resources/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/Xamarin/AndroidClient/Resources/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/Xamarin/AndroidClient/Resources/mipmap-xxxhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/Xamarin/AndroidClient/Resources/mipmap-xxxhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/Xamarin/AndroidClient/Resources/mipmap-xxxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/Xamarin/AndroidClient/Resources/mipmap-xxxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/Xamarin/AndroidClient/Resources/values/Strings.xml:
--------------------------------------------------------------------------------
1 |
2 | AndroidApp
3 | Settings
4 |
5 |
--------------------------------------------------------------------------------
/Xamarin/AndroidClient/Resources/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #2c3e50
4 | #1B3147
5 | #3498db
6 |
7 |
--------------------------------------------------------------------------------
/Xamarin/AndroidClient/Resources/values/ic_launcher_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #2C3E50
4 |
--------------------------------------------------------------------------------
/Xamarin/AndroidClient/Resources/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/Xamarin/FormsClient/FormsClient.Android/Assets/AboutAssets.txt:
--------------------------------------------------------------------------------
1 | Any raw assets you want to be deployed with your application can be placed in
2 | this directory (and child directories) and given a Build Action of "AndroidAsset".
3 |
4 | These files will be deployed with you package and will be accessible using Android's
5 | AssetManager, like this:
6 |
7 | public class ReadAsset : Activity
8 | {
9 | protected override void OnCreate (Bundle bundle)
10 | {
11 | base.OnCreate (bundle);
12 |
13 | InputStream input = Assets.Open ("my_asset.txt");
14 | }
15 | }
16 |
17 | Additionally, some Android functions will automatically load asset files:
18 |
19 | Typeface tf = Typeface.CreateFromAsset (Context.Assets, "fonts/samplefont.ttf");
20 |
--------------------------------------------------------------------------------
/Xamarin/FormsClient/FormsClient.Android/MainActivity.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | using Android.App;
4 | using Android.Content.PM;
5 | using Android.Runtime;
6 | using Android.Views;
7 | using Android.Widget;
8 | using Android.OS;
9 |
10 | namespace FormsClient.Droid
11 | {
12 | [Activity(Label = "FormsClient", Icon = "@mipmap/icon", Theme = "@style/MainTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
13 | public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
14 | {
15 | protected override void OnCreate(Bundle bundle)
16 | {
17 | TabLayoutResource = Resource.Layout.Tabbar;
18 | ToolbarResource = Resource.Layout.Toolbar;
19 |
20 | base.OnCreate(bundle);
21 |
22 | global::Xamarin.Forms.Forms.Init(this, bundle);
23 | LoadApplication(new App());
24 | }
25 | }
26 | }
27 |
28 |
--------------------------------------------------------------------------------
/Xamarin/FormsClient/FormsClient.Android/Properties/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/Xamarin/FormsClient/FormsClient.Android/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 | using Android.App;
5 |
6 | // General Information about an assembly is controlled through the following
7 | // set of attributes. Change these attribute values to modify the information
8 | // associated with an assembly.
9 | [assembly: AssemblyTitle("FormsClient.Android")]
10 | [assembly: AssemblyDescription("")]
11 | [assembly: AssemblyConfiguration("")]
12 | [assembly: AssemblyCompany("")]
13 | [assembly: AssemblyProduct("FormsClient.Android")]
14 | [assembly: AssemblyCopyright("Copyright © 2014")]
15 | [assembly: AssemblyTrademark("")]
16 | [assembly: AssemblyCulture("")]
17 | [assembly: ComVisible(false)]
18 |
19 | // Version information for an assembly consists of the following four values:
20 | //
21 | // Major Version
22 | // Minor Version
23 | // Build Number
24 | // Revision
25 | //
26 | // You can specify all the values or you can default the Build and Revision Numbers
27 | // by using the '*' as shown below:
28 | // [assembly: AssemblyVersion("1.0.*")]
29 | [assembly: AssemblyVersion("1.0.0.0")]
30 | [assembly: AssemblyFileVersion("1.0.0.0")]
31 |
32 | // Add some common permissions, these can be removed if not needed
33 | [assembly: UsesPermission(Android.Manifest.Permission.Internet)]
34 | [assembly: UsesPermission(Android.Manifest.Permission.WriteExternalStorage)]
35 |
--------------------------------------------------------------------------------
/Xamarin/FormsClient/FormsClient.Android/Resources/AboutResources.txt:
--------------------------------------------------------------------------------
1 | Images, layout descriptions, binary blobs and string dictionaries can be included
2 | in your application as resource files. Various Android APIs are designed to
3 | operate on the resource IDs instead of dealing with images, strings or binary blobs
4 | directly.
5 |
6 | For example, a sample Android app that contains a user interface layout (main.xml),
7 | an internationalization string table (strings.xml) and some icons (drawable-XXX/icon.png)
8 | would keep its resources in the "Resources" directory of the application:
9 |
10 | Resources/
11 | drawable-hdpi/
12 | icon.png
13 |
14 | drawable-ldpi/
15 | icon.png
16 |
17 | drawable-mdpi/
18 | icon.png
19 |
20 | layout/
21 | main.xml
22 |
23 | values/
24 | strings.xml
25 |
26 | In order to get the build system to recognize Android resources, set the build action to
27 | "AndroidResource". The native Android APIs do not operate directly with filenames, but
28 | instead operate on resource IDs. When you compile an Android application that uses resources,
29 | the build system will package the resources for distribution and generate a class called
30 | "Resource" that contains the tokens for each one of the resources included. For example,
31 | for the above Resources layout, this is what the Resource class would expose:
32 |
33 | public class Resource {
34 | public class drawable {
35 | public const int icon = 0x123;
36 | }
37 |
38 | public class layout {
39 | public const int main = 0x456;
40 | }
41 |
42 | public class strings {
43 | public const int first_string = 0xabc;
44 | public const int second_string = 0xbcd;
45 | }
46 | }
47 |
48 | You would then use R.drawable.icon to reference the drawable/icon.png file, or Resource.layout.main
49 | to reference the layout/main.xml file, or Resource.strings.first_string to reference the first
50 | string in the dictionary file values/strings.xml.
51 |
--------------------------------------------------------------------------------
/Xamarin/FormsClient/FormsClient.Android/Resources/layout/Tabbar.axml:
--------------------------------------------------------------------------------
1 |
2 |
12 |
--------------------------------------------------------------------------------
/Xamarin/FormsClient/FormsClient.Android/Resources/layout/Toolbar.axml:
--------------------------------------------------------------------------------
1 |
9 |
10 |
--------------------------------------------------------------------------------
/Xamarin/FormsClient/FormsClient.Android/Resources/mipmap-anydpi-v26/icon.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/Xamarin/FormsClient/FormsClient.Android/Resources/mipmap-anydpi-v26/icon_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/Xamarin/FormsClient/FormsClient.Android/Resources/mipmap-hdpi/Icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/Xamarin/FormsClient/FormsClient.Android/Resources/mipmap-hdpi/Icon.png
--------------------------------------------------------------------------------
/Xamarin/FormsClient/FormsClient.Android/Resources/mipmap-hdpi/launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/Xamarin/FormsClient/FormsClient.Android/Resources/mipmap-hdpi/launcher_foreground.png
--------------------------------------------------------------------------------
/Xamarin/FormsClient/FormsClient.Android/Resources/mipmap-mdpi/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/Xamarin/FormsClient/FormsClient.Android/Resources/mipmap-mdpi/icon.png
--------------------------------------------------------------------------------
/Xamarin/FormsClient/FormsClient.Android/Resources/mipmap-mdpi/launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/Xamarin/FormsClient/FormsClient.Android/Resources/mipmap-mdpi/launcher_foreground.png
--------------------------------------------------------------------------------
/Xamarin/FormsClient/FormsClient.Android/Resources/mipmap-xhdpi/Icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/Xamarin/FormsClient/FormsClient.Android/Resources/mipmap-xhdpi/Icon.png
--------------------------------------------------------------------------------
/Xamarin/FormsClient/FormsClient.Android/Resources/mipmap-xhdpi/launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/Xamarin/FormsClient/FormsClient.Android/Resources/mipmap-xhdpi/launcher_foreground.png
--------------------------------------------------------------------------------
/Xamarin/FormsClient/FormsClient.Android/Resources/mipmap-xxhdpi/Icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/Xamarin/FormsClient/FormsClient.Android/Resources/mipmap-xxhdpi/Icon.png
--------------------------------------------------------------------------------
/Xamarin/FormsClient/FormsClient.Android/Resources/mipmap-xxhdpi/launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/Xamarin/FormsClient/FormsClient.Android/Resources/mipmap-xxhdpi/launcher_foreground.png
--------------------------------------------------------------------------------
/Xamarin/FormsClient/FormsClient.Android/Resources/mipmap-xxxhdpi/Icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/Xamarin/FormsClient/FormsClient.Android/Resources/mipmap-xxxhdpi/Icon.png
--------------------------------------------------------------------------------
/Xamarin/FormsClient/FormsClient.Android/Resources/mipmap-xxxhdpi/launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/Xamarin/FormsClient/FormsClient.Android/Resources/mipmap-xxxhdpi/launcher_foreground.png
--------------------------------------------------------------------------------
/Xamarin/FormsClient/FormsClient.Android/Resources/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #FFFFFF
4 | #3F51B5
5 | #303F9F
6 | #FF4081
7 |
8 |
--------------------------------------------------------------------------------
/Xamarin/FormsClient/FormsClient.Android/Resources/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
6 |
7 |
26 |
27 |
30 |
31 |
--------------------------------------------------------------------------------
/Xamarin/FormsClient/FormsClient.UWP/App.xaml:
--------------------------------------------------------------------------------
1 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Xamarin/FormsClient/FormsClient.UWP/Assets/LargeTile.scale-100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/Xamarin/FormsClient/FormsClient.UWP/Assets/LargeTile.scale-100.png
--------------------------------------------------------------------------------
/Xamarin/FormsClient/FormsClient.UWP/Assets/LargeTile.scale-200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/Xamarin/FormsClient/FormsClient.UWP/Assets/LargeTile.scale-200.png
--------------------------------------------------------------------------------
/Xamarin/FormsClient/FormsClient.UWP/Assets/LargeTile.scale-400.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/Xamarin/FormsClient/FormsClient.UWP/Assets/LargeTile.scale-400.png
--------------------------------------------------------------------------------
/Xamarin/FormsClient/FormsClient.UWP/Assets/SmallTile.scale-100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/Xamarin/FormsClient/FormsClient.UWP/Assets/SmallTile.scale-100.png
--------------------------------------------------------------------------------
/Xamarin/FormsClient/FormsClient.UWP/Assets/SmallTile.scale-200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/Xamarin/FormsClient/FormsClient.UWP/Assets/SmallTile.scale-200.png
--------------------------------------------------------------------------------
/Xamarin/FormsClient/FormsClient.UWP/Assets/SmallTile.scale-400.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/Xamarin/FormsClient/FormsClient.UWP/Assets/SmallTile.scale-400.png
--------------------------------------------------------------------------------
/Xamarin/FormsClient/FormsClient.UWP/Assets/SplashScreen.scale-100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/Xamarin/FormsClient/FormsClient.UWP/Assets/SplashScreen.scale-100.png
--------------------------------------------------------------------------------
/Xamarin/FormsClient/FormsClient.UWP/Assets/SplashScreen.scale-200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/Xamarin/FormsClient/FormsClient.UWP/Assets/SplashScreen.scale-200.png
--------------------------------------------------------------------------------
/Xamarin/FormsClient/FormsClient.UWP/Assets/SplashScreen.scale-400.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/Xamarin/FormsClient/FormsClient.UWP/Assets/SplashScreen.scale-400.png
--------------------------------------------------------------------------------
/Xamarin/FormsClient/FormsClient.UWP/Assets/Square150x150Logo.scale-100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/Xamarin/FormsClient/FormsClient.UWP/Assets/Square150x150Logo.scale-100.png
--------------------------------------------------------------------------------
/Xamarin/FormsClient/FormsClient.UWP/Assets/Square150x150Logo.scale-200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/Xamarin/FormsClient/FormsClient.UWP/Assets/Square150x150Logo.scale-200.png
--------------------------------------------------------------------------------
/Xamarin/FormsClient/FormsClient.UWP/Assets/Square150x150Logo.scale-400.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/Xamarin/FormsClient/FormsClient.UWP/Assets/Square150x150Logo.scale-400.png
--------------------------------------------------------------------------------
/Xamarin/FormsClient/FormsClient.UWP/Assets/Square44x44Logo.altform-unplated_targetsize-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/Xamarin/FormsClient/FormsClient.UWP/Assets/Square44x44Logo.altform-unplated_targetsize-16.png
--------------------------------------------------------------------------------
/Xamarin/FormsClient/FormsClient.UWP/Assets/Square44x44Logo.altform-unplated_targetsize-256.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/Xamarin/FormsClient/FormsClient.UWP/Assets/Square44x44Logo.altform-unplated_targetsize-256.png
--------------------------------------------------------------------------------
/Xamarin/FormsClient/FormsClient.UWP/Assets/Square44x44Logo.altform-unplated_targetsize-48.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/Xamarin/FormsClient/FormsClient.UWP/Assets/Square44x44Logo.altform-unplated_targetsize-48.png
--------------------------------------------------------------------------------
/Xamarin/FormsClient/FormsClient.UWP/Assets/Square44x44Logo.scale-100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/Xamarin/FormsClient/FormsClient.UWP/Assets/Square44x44Logo.scale-100.png
--------------------------------------------------------------------------------
/Xamarin/FormsClient/FormsClient.UWP/Assets/Square44x44Logo.scale-200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/Xamarin/FormsClient/FormsClient.UWP/Assets/Square44x44Logo.scale-200.png
--------------------------------------------------------------------------------
/Xamarin/FormsClient/FormsClient.UWP/Assets/Square44x44Logo.scale-400.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/Xamarin/FormsClient/FormsClient.UWP/Assets/Square44x44Logo.scale-400.png
--------------------------------------------------------------------------------
/Xamarin/FormsClient/FormsClient.UWP/Assets/Square44x44Logo.targetsize-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/Xamarin/FormsClient/FormsClient.UWP/Assets/Square44x44Logo.targetsize-16.png
--------------------------------------------------------------------------------
/Xamarin/FormsClient/FormsClient.UWP/Assets/Square44x44Logo.targetsize-256.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/Xamarin/FormsClient/FormsClient.UWP/Assets/Square44x44Logo.targetsize-256.png
--------------------------------------------------------------------------------
/Xamarin/FormsClient/FormsClient.UWP/Assets/Square44x44Logo.targetsize-48.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/Xamarin/FormsClient/FormsClient.UWP/Assets/Square44x44Logo.targetsize-48.png
--------------------------------------------------------------------------------
/Xamarin/FormsClient/FormsClient.UWP/Assets/StoreLogo.backup.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/Xamarin/FormsClient/FormsClient.UWP/Assets/StoreLogo.backup.png
--------------------------------------------------------------------------------
/Xamarin/FormsClient/FormsClient.UWP/Assets/StoreLogo.scale-100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/Xamarin/FormsClient/FormsClient.UWP/Assets/StoreLogo.scale-100.png
--------------------------------------------------------------------------------
/Xamarin/FormsClient/FormsClient.UWP/Assets/StoreLogo.scale-200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/Xamarin/FormsClient/FormsClient.UWP/Assets/StoreLogo.scale-200.png
--------------------------------------------------------------------------------
/Xamarin/FormsClient/FormsClient.UWP/Assets/StoreLogo.scale-400.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/Xamarin/FormsClient/FormsClient.UWP/Assets/StoreLogo.scale-400.png
--------------------------------------------------------------------------------
/Xamarin/FormsClient/FormsClient.UWP/Assets/Wide310x150Logo.scale-100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/Xamarin/FormsClient/FormsClient.UWP/Assets/Wide310x150Logo.scale-100.png
--------------------------------------------------------------------------------
/Xamarin/FormsClient/FormsClient.UWP/Assets/Wide310x150Logo.scale-200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/Xamarin/FormsClient/FormsClient.UWP/Assets/Wide310x150Logo.scale-200.png
--------------------------------------------------------------------------------
/Xamarin/FormsClient/FormsClient.UWP/Assets/Wide310x150Logo.scale-400.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/Xamarin/FormsClient/FormsClient.UWP/Assets/Wide310x150Logo.scale-400.png
--------------------------------------------------------------------------------
/Xamarin/FormsClient/FormsClient.UWP/MainPage.xaml:
--------------------------------------------------------------------------------
1 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/Xamarin/FormsClient/FormsClient.UWP/MainPage.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.IO;
4 | using System.Linq;
5 | using System.Runtime.InteropServices.WindowsRuntime;
6 | using Windows.Foundation;
7 | using Windows.Foundation.Collections;
8 | using Windows.UI.Xaml;
9 | using Windows.UI.Xaml.Controls;
10 | using Windows.UI.Xaml.Controls.Primitives;
11 | using Windows.UI.Xaml.Data;
12 | using Windows.UI.Xaml.Input;
13 | using Windows.UI.Xaml.Media;
14 | using Windows.UI.Xaml.Navigation;
15 |
16 | namespace FormsClient.UWP
17 | {
18 | public sealed partial class MainPage
19 | {
20 | public MainPage()
21 | {
22 | this.InitializeComponent();
23 |
24 | LoadApplication(new FormsClient.App());
25 | }
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/Xamarin/FormsClient/FormsClient.UWP/Package.appxmanifest:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
9 |
13 |
14 |
15 |
16 |
17 | FormsClient.UWP
18 | c909aeee-2d02-44df-b2f2-b83a04fa5e9a
19 | Assets\StoreLogo.png
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
34 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
--------------------------------------------------------------------------------
/Xamarin/FormsClient/FormsClient.UWP/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("FormsClient.UWP")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("FormsClient.UWP")]
13 | [assembly: AssemblyCopyright("Copyright © 2015")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Version information for an assembly consists of the following four values:
18 | //
19 | // Major Version
20 | // Minor Version
21 | // Build Number
22 | // Revision
23 | //
24 | // You can specify all the values or you can default the Build and Revision Numbers
25 | // by using the '*' as shown below:
26 | // [assembly: AssemblyVersion("1.0.*")]
27 | [assembly: AssemblyVersion("1.0.0.0")]
28 | [assembly: AssemblyFileVersion("1.0.0.0")]
29 | [assembly: ComVisible(false)]
--------------------------------------------------------------------------------
/Xamarin/FormsClient/FormsClient.UWP/Properties/Default.rd.xml:
--------------------------------------------------------------------------------
1 |
17 |
18 |
19 |
20 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/Xamarin/FormsClient/FormsClient.iOS/AppDelegate.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 |
5 | using Foundation;
6 | using UIKit;
7 |
8 | namespace FormsClient.iOS
9 | {
10 | // The UIApplicationDelegate for the application. This class is responsible for launching the
11 | // User Interface of the application, as well as listening (and optionally responding) to
12 | // application events from iOS.
13 | [Register("AppDelegate")]
14 | public partial class AppDelegate : global::Xamarin.Forms.Platform.iOS.FormsApplicationDelegate
15 | {
16 | //
17 | // This method is invoked when the application has loaded and is ready to run. In this
18 | // method you should instantiate the window, load the UI into it and then make the window
19 | // visible.
20 | //
21 | // You have 17 seconds to return from this method, or iOS will terminate your application.
22 | //
23 | public override bool FinishedLaunching(UIApplication app, NSDictionary options)
24 | {
25 | global::Xamarin.Forms.Forms.Init();
26 | LoadApplication(new App());
27 |
28 | return base.FinishedLaunching(app, options);
29 | }
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/Xamarin/FormsClient/FormsClient.iOS/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images": [
3 | {
4 | "scale": "2x",
5 | "size": "20x20",
6 | "idiom": "iphone",
7 | "filename": "Icon40.png"
8 | },
9 | {
10 | "scale": "3x",
11 | "size": "20x20",
12 | "idiom": "iphone",
13 | "filename": "Icon60.png"
14 | },
15 | {
16 | "scale": "2x",
17 | "size": "29x29",
18 | "idiom": "iphone",
19 | "filename": "Icon58.png"
20 | },
21 | {
22 | "scale": "3x",
23 | "size": "29x29",
24 | "idiom": "iphone",
25 | "filename": "Icon87.png"
26 | },
27 | {
28 | "scale": "2x",
29 | "size": "40x40",
30 | "idiom": "iphone",
31 | "filename": "Icon80.png"
32 | },
33 | {
34 | "scale": "3x",
35 | "size": "40x40",
36 | "idiom": "iphone",
37 | "filename": "Icon120.png"
38 | },
39 | {
40 | "scale": "2x",
41 | "size": "60x60",
42 | "idiom": "iphone",
43 | "filename": "Icon120.png"
44 | },
45 | {
46 | "scale": "3x",
47 | "size": "60x60",
48 | "idiom": "iphone",
49 | "filename": "Icon180.png"
50 | },
51 | {
52 | "scale": "1x",
53 | "size": "20x20",
54 | "idiom": "ipad",
55 | "filename": "Icon20.png"
56 | },
57 | {
58 | "scale": "2x",
59 | "size": "20x20",
60 | "idiom": "ipad",
61 | "filename": "Icon40.png"
62 | },
63 | {
64 | "scale": "1x",
65 | "size": "29x29",
66 | "idiom": "ipad",
67 | "filename": "Icon29.png"
68 | },
69 | {
70 | "scale": "2x",
71 | "size": "29x29",
72 | "idiom": "ipad",
73 | "filename": "Icon58.png"
74 | },
75 | {
76 | "scale": "1x",
77 | "size": "40x40",
78 | "idiom": "ipad",
79 | "filename": "Icon40.png"
80 | },
81 | {
82 | "scale": "2x",
83 | "size": "40x40",
84 | "idiom": "ipad",
85 | "filename": "Icon80.png"
86 | },
87 | {
88 | "scale": "1x",
89 | "size": "76x76",
90 | "idiom": "ipad",
91 | "filename": "Icon76.png"
92 | },
93 | {
94 | "scale": "2x",
95 | "size": "76x76",
96 | "idiom": "ipad",
97 | "filename": "Icon152.png"
98 | },
99 | {
100 | "scale": "2x",
101 | "size": "83.5x83.5",
102 | "idiom": "ipad",
103 | "filename": "Icon167.png"
104 | },
105 | {
106 | "scale": "1x",
107 | "size": "1024x1024",
108 | "idiom": "ios-marketing",
109 | "filename": "Icon1024.png"
110 | }
111 | ],
112 | "properties": {},
113 | "info": {
114 | "version": 1,
115 | "author": "xcode"
116 | }
117 | }
--------------------------------------------------------------------------------
/Xamarin/FormsClient/FormsClient.iOS/Assets.xcassets/AppIcon.appiconset/Icon1024.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/Xamarin/FormsClient/FormsClient.iOS/Assets.xcassets/AppIcon.appiconset/Icon1024.png
--------------------------------------------------------------------------------
/Xamarin/FormsClient/FormsClient.iOS/Assets.xcassets/AppIcon.appiconset/Icon120.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/Xamarin/FormsClient/FormsClient.iOS/Assets.xcassets/AppIcon.appiconset/Icon120.png
--------------------------------------------------------------------------------
/Xamarin/FormsClient/FormsClient.iOS/Assets.xcassets/AppIcon.appiconset/Icon152.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/Xamarin/FormsClient/FormsClient.iOS/Assets.xcassets/AppIcon.appiconset/Icon152.png
--------------------------------------------------------------------------------
/Xamarin/FormsClient/FormsClient.iOS/Assets.xcassets/AppIcon.appiconset/Icon167.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/Xamarin/FormsClient/FormsClient.iOS/Assets.xcassets/AppIcon.appiconset/Icon167.png
--------------------------------------------------------------------------------
/Xamarin/FormsClient/FormsClient.iOS/Assets.xcassets/AppIcon.appiconset/Icon180.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/Xamarin/FormsClient/FormsClient.iOS/Assets.xcassets/AppIcon.appiconset/Icon180.png
--------------------------------------------------------------------------------
/Xamarin/FormsClient/FormsClient.iOS/Assets.xcassets/AppIcon.appiconset/Icon20.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/Xamarin/FormsClient/FormsClient.iOS/Assets.xcassets/AppIcon.appiconset/Icon20.png
--------------------------------------------------------------------------------
/Xamarin/FormsClient/FormsClient.iOS/Assets.xcassets/AppIcon.appiconset/Icon29.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/Xamarin/FormsClient/FormsClient.iOS/Assets.xcassets/AppIcon.appiconset/Icon29.png
--------------------------------------------------------------------------------
/Xamarin/FormsClient/FormsClient.iOS/Assets.xcassets/AppIcon.appiconset/Icon40.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/Xamarin/FormsClient/FormsClient.iOS/Assets.xcassets/AppIcon.appiconset/Icon40.png
--------------------------------------------------------------------------------
/Xamarin/FormsClient/FormsClient.iOS/Assets.xcassets/AppIcon.appiconset/Icon58.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/Xamarin/FormsClient/FormsClient.iOS/Assets.xcassets/AppIcon.appiconset/Icon58.png
--------------------------------------------------------------------------------
/Xamarin/FormsClient/FormsClient.iOS/Assets.xcassets/AppIcon.appiconset/Icon60.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/Xamarin/FormsClient/FormsClient.iOS/Assets.xcassets/AppIcon.appiconset/Icon60.png
--------------------------------------------------------------------------------
/Xamarin/FormsClient/FormsClient.iOS/Assets.xcassets/AppIcon.appiconset/Icon76.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/Xamarin/FormsClient/FormsClient.iOS/Assets.xcassets/AppIcon.appiconset/Icon76.png
--------------------------------------------------------------------------------
/Xamarin/FormsClient/FormsClient.iOS/Assets.xcassets/AppIcon.appiconset/Icon80.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/Xamarin/FormsClient/FormsClient.iOS/Assets.xcassets/AppIcon.appiconset/Icon80.png
--------------------------------------------------------------------------------
/Xamarin/FormsClient/FormsClient.iOS/Assets.xcassets/AppIcon.appiconset/Icon87.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/Xamarin/FormsClient/FormsClient.iOS/Assets.xcassets/AppIcon.appiconset/Icon87.png
--------------------------------------------------------------------------------
/Xamarin/FormsClient/FormsClient.iOS/Entitlements.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Xamarin/FormsClient/FormsClient.iOS/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | UIDeviceFamily
6 |
7 | 1
8 | 2
9 |
10 | UISupportedInterfaceOrientations
11 |
12 | UIInterfaceOrientationPortrait
13 | UIInterfaceOrientationLandscapeLeft
14 | UIInterfaceOrientationLandscapeRight
15 |
16 | UISupportedInterfaceOrientations~ipad
17 |
18 | UIInterfaceOrientationPortrait
19 | UIInterfaceOrientationPortraitUpsideDown
20 | UIInterfaceOrientationLandscapeLeft
21 | UIInterfaceOrientationLandscapeRight
22 |
23 | MinimumOSVersion
24 | 8.0
25 | CFBundleDisplayName
26 | FormsClient
27 | CFBundleIdentifier
28 | com.companyname.FormsClient
29 | CFBundleVersion
30 | 1.0
31 | UILaunchStoryboardName
32 | LaunchScreen
33 | CFBundleName
34 | FormsClient
35 | XSAppIconAssets
36 | Assets.xcassets/AppIcon.appiconset
37 |
38 |
39 |
--------------------------------------------------------------------------------
/Xamarin/FormsClient/FormsClient.iOS/Main.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 |
5 | using Foundation;
6 | using UIKit;
7 |
8 | namespace FormsClient.iOS
9 | {
10 | public class Application
11 | {
12 | // This is the main entry point of the application.
13 | static void Main(string[] args)
14 | {
15 | // if you want to use a different Application Delegate class from "AppDelegate"
16 | // you can specify it here.
17 | UIApplication.Main(args, null, "AppDelegate");
18 | }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/Xamarin/FormsClient/FormsClient.iOS/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("FormsClient.iOS")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("FormsClient.iOS")]
13 | [assembly: AssemblyCopyright("Copyright © 2014")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Setting ComVisible to false makes the types in this assembly not visible
18 | // to COM components. If you need to access a type in this assembly from
19 | // COM, set the ComVisible attribute to true on that type.
20 | [assembly: ComVisible(false)]
21 |
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM
23 | [assembly: Guid("72bdc44f-c588-44f3-b6df-9aace7daafdd")]
24 |
25 | // Version information for an assembly consists of the following four values:
26 | //
27 | // Major Version
28 | // Minor Version
29 | // Build Number
30 | // Revision
31 | //
32 | // You can specify all the values or you can default the Build and Revision Numbers
33 | // by using the '*' as shown below:
34 | // [assembly: AssemblyVersion("1.0.*")]
35 | [assembly: AssemblyVersion("1.0.0.0")]
36 | [assembly: AssemblyFileVersion("1.0.0.0")]
37 |
--------------------------------------------------------------------------------
/Xamarin/FormsClient/FormsClient.iOS/Resources/Default-568h@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/Xamarin/FormsClient/FormsClient.iOS/Resources/Default-568h@2x.png
--------------------------------------------------------------------------------
/Xamarin/FormsClient/FormsClient.iOS/Resources/Default-Portrait.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/Xamarin/FormsClient/FormsClient.iOS/Resources/Default-Portrait.png
--------------------------------------------------------------------------------
/Xamarin/FormsClient/FormsClient.iOS/Resources/Default-Portrait@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/Xamarin/FormsClient/FormsClient.iOS/Resources/Default-Portrait@2x.png
--------------------------------------------------------------------------------
/Xamarin/FormsClient/FormsClient.iOS/Resources/Default.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/Xamarin/FormsClient/FormsClient.iOS/Resources/Default.png
--------------------------------------------------------------------------------
/Xamarin/FormsClient/FormsClient.iOS/Resources/Default@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/Xamarin/FormsClient/FormsClient.iOS/Resources/Default@2x.png
--------------------------------------------------------------------------------
/Xamarin/FormsClient/FormsClient.iOS/Resources/LaunchScreen.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
--------------------------------------------------------------------------------
/Xamarin/FormsClient/FormsClient/App.xaml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Xamarin/FormsClient/FormsClient/App.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using Xamarin.Forms;
3 | using Xamarin.Forms.Xaml;
4 |
5 | [assembly: XamlCompilation (XamlCompilationOptions.Compile)]
6 | namespace FormsClient
7 | {
8 | public partial class App : Application
9 | {
10 | public App ()
11 | {
12 | InitializeComponent();
13 |
14 | MainPage = new MainPage();
15 | }
16 |
17 | protected override void OnStart ()
18 | {
19 | // Handle when your app starts
20 | }
21 |
22 | protected override void OnSleep ()
23 | {
24 | // Handle when your app sleeps
25 | }
26 |
27 | protected override void OnResume ()
28 | {
29 | // Handle when your app resumes
30 | }
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/Xamarin/FormsClient/FormsClient/FormsClient.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | netstandard2.0
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/Xamarin/FormsClient/FormsClient/MainPage.xaml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/Xamarin/README.md:
--------------------------------------------------------------------------------
1 | ## Xamarin Clients
2 |
3 | Be sure to enter your own server url in the hub connection builder.
4 |
5 | ```csharp
6 | var hubConnection = new HubConnectionBuilder()
7 | .WithUrl("")
8 | .Build();
9 | ```
10 |
11 | The application starts by promtping you to enter your user name.
12 | After that you click connect and wait for confirmation to begin communicating with the server.
13 |
14 |
--------------------------------------------------------------------------------
/Xamarin/iOSClient/AppDelegate.cs:
--------------------------------------------------------------------------------
1 | using Foundation;
2 | using UIKit;
3 |
4 | namespace iOSClient
5 | {
6 | // The UIApplicationDelegate for the application. This class is responsible for launching the
7 | // User Interface of the application, as well as listening (and optionally responding) to application events from iOS.
8 | [Register("AppDelegate")]
9 | public class AppDelegate : UIApplicationDelegate
10 | {
11 | // class-level declarations
12 |
13 | public override UIWindow Window
14 | {
15 | get;
16 | set;
17 | }
18 |
19 | public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions)
20 | {
21 | // Override point for customization after application launch.
22 | // If not required for your application you can safely delete this method
23 |
24 | return true;
25 | }
26 |
27 | public override void OnResignActivation(UIApplication application)
28 | {
29 | // Invoked when the application is about to move from active to inactive state.
30 | // This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message)
31 | // or when the user quits the application and it begins the transition to the background state.
32 | // Games should use this method to pause the game.
33 | }
34 |
35 | public override void DidEnterBackground(UIApplication application)
36 | {
37 | // Use this method to release shared resources, save user data, invalidate timers and store the application state.
38 | // If your application supports background exection this method is called instead of WillTerminate when the user quits.
39 | }
40 |
41 | public override void WillEnterForeground(UIApplication application)
42 | {
43 | // Called as part of the transiton from background to active state.
44 | // Here you can undo many of the changes made on entering the background.
45 | }
46 |
47 | public override void OnActivated(UIApplication application)
48 | {
49 | // Restart any tasks that were paused (or not yet started) while the application was inactive.
50 | // If the application was previously in the background, optionally refresh the user interface.
51 | }
52 |
53 | public override void WillTerminate(UIApplication application)
54 | {
55 | // Called when the application is about to terminate. Save data, if needed. See also DidEnterBackground.
56 | }
57 | }
58 | }
59 |
60 |
--------------------------------------------------------------------------------
/Xamarin/iOSClient/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images": [
3 | {
4 | "scale": "2x",
5 | "size": "20x20",
6 | "idiom": "iphone",
7 | "filename": "Icon40.png"
8 | },
9 | {
10 | "scale": "3x",
11 | "size": "20x20",
12 | "idiom": "iphone",
13 | "filename": "Icon60.png"
14 | },
15 | {
16 | "scale": "2x",
17 | "size": "29x29",
18 | "idiom": "iphone",
19 | "filename": "Icon58.png"
20 | },
21 | {
22 | "scale": "3x",
23 | "size": "29x29",
24 | "idiom": "iphone",
25 | "filename": "Icon87.png"
26 | },
27 | {
28 | "scale": "2x",
29 | "size": "40x40",
30 | "idiom": "iphone",
31 | "filename": "Icon80.png"
32 | },
33 | {
34 | "scale": "3x",
35 | "size": "40x40",
36 | "idiom": "iphone",
37 | "filename": "Icon120.png"
38 | },
39 | {
40 | "scale": "2x",
41 | "size": "60x60",
42 | "idiom": "iphone",
43 | "filename": "Icon120.png"
44 | },
45 | {
46 | "scale": "3x",
47 | "size": "60x60",
48 | "idiom": "iphone",
49 | "filename": "Icon180.png"
50 | },
51 | {
52 | "scale": "1x",
53 | "size": "20x20",
54 | "idiom": "ipad",
55 | "filename": "Icon20.png"
56 | },
57 | {
58 | "scale": "2x",
59 | "size": "20x20",
60 | "idiom": "ipad",
61 | "filename": "Icon40.png"
62 | },
63 | {
64 | "scale": "1x",
65 | "size": "29x29",
66 | "idiom": "ipad",
67 | "filename": "Icon29.png"
68 | },
69 | {
70 | "scale": "2x",
71 | "size": "29x29",
72 | "idiom": "ipad",
73 | "filename": "Icon58.png"
74 | },
75 | {
76 | "scale": "1x",
77 | "size": "40x40",
78 | "idiom": "ipad",
79 | "filename": "Icon40.png"
80 | },
81 | {
82 | "scale": "2x",
83 | "size": "40x40",
84 | "idiom": "ipad",
85 | "filename": "Icon80.png"
86 | },
87 | {
88 | "scale": "1x",
89 | "size": "76x76",
90 | "idiom": "ipad",
91 | "filename": "Icon76.png"
92 | },
93 | {
94 | "scale": "2x",
95 | "size": "76x76",
96 | "idiom": "ipad",
97 | "filename": "Icon152.png"
98 | },
99 | {
100 | "scale": "2x",
101 | "size": "83.5x83.5",
102 | "idiom": "ipad",
103 | "filename": "Icon167.png"
104 | },
105 | {
106 | "scale": "1x",
107 | "size": "1024x1024",
108 | "idiom": "ios-marketing",
109 | "filename": "Icon1024.png"
110 | }
111 | ],
112 | "properties": {},
113 | "info": {
114 | "version": 1,
115 | "author": "xcode"
116 | }
117 | }
--------------------------------------------------------------------------------
/Xamarin/iOSClient/Assets.xcassets/AppIcon.appiconset/Icon1024.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/Xamarin/iOSClient/Assets.xcassets/AppIcon.appiconset/Icon1024.png
--------------------------------------------------------------------------------
/Xamarin/iOSClient/Assets.xcassets/AppIcon.appiconset/Icon120.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/Xamarin/iOSClient/Assets.xcassets/AppIcon.appiconset/Icon120.png
--------------------------------------------------------------------------------
/Xamarin/iOSClient/Assets.xcassets/AppIcon.appiconset/Icon152.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/Xamarin/iOSClient/Assets.xcassets/AppIcon.appiconset/Icon152.png
--------------------------------------------------------------------------------
/Xamarin/iOSClient/Assets.xcassets/AppIcon.appiconset/Icon167.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/Xamarin/iOSClient/Assets.xcassets/AppIcon.appiconset/Icon167.png
--------------------------------------------------------------------------------
/Xamarin/iOSClient/Assets.xcassets/AppIcon.appiconset/Icon180.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/Xamarin/iOSClient/Assets.xcassets/AppIcon.appiconset/Icon180.png
--------------------------------------------------------------------------------
/Xamarin/iOSClient/Assets.xcassets/AppIcon.appiconset/Icon20.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/Xamarin/iOSClient/Assets.xcassets/AppIcon.appiconset/Icon20.png
--------------------------------------------------------------------------------
/Xamarin/iOSClient/Assets.xcassets/AppIcon.appiconset/Icon29.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/Xamarin/iOSClient/Assets.xcassets/AppIcon.appiconset/Icon29.png
--------------------------------------------------------------------------------
/Xamarin/iOSClient/Assets.xcassets/AppIcon.appiconset/Icon40.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/Xamarin/iOSClient/Assets.xcassets/AppIcon.appiconset/Icon40.png
--------------------------------------------------------------------------------
/Xamarin/iOSClient/Assets.xcassets/AppIcon.appiconset/Icon58.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/Xamarin/iOSClient/Assets.xcassets/AppIcon.appiconset/Icon58.png
--------------------------------------------------------------------------------
/Xamarin/iOSClient/Assets.xcassets/AppIcon.appiconset/Icon60.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/Xamarin/iOSClient/Assets.xcassets/AppIcon.appiconset/Icon60.png
--------------------------------------------------------------------------------
/Xamarin/iOSClient/Assets.xcassets/AppIcon.appiconset/Icon76.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/Xamarin/iOSClient/Assets.xcassets/AppIcon.appiconset/Icon76.png
--------------------------------------------------------------------------------
/Xamarin/iOSClient/Assets.xcassets/AppIcon.appiconset/Icon80.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/Xamarin/iOSClient/Assets.xcassets/AppIcon.appiconset/Icon80.png
--------------------------------------------------------------------------------
/Xamarin/iOSClient/Assets.xcassets/AppIcon.appiconset/Icon87.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aspnet/SignalR-samples/ad86612fc22cb7ecaccb257ea0c0c1b235bc963d/Xamarin/iOSClient/Assets.xcassets/AppIcon.appiconset/Icon87.png
--------------------------------------------------------------------------------
/Xamarin/iOSClient/Entitlements.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/Xamarin/iOSClient/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDisplayName
6 | iOSClient
7 | CFBundleIdentifier
8 | com.microsoft.aspnetcore.signalr.iOSClient
9 | CFBundleShortVersionString
10 | 1.0
11 | CFBundleVersion
12 | 1.0
13 | LSRequiresIPhoneOS
14 |
15 | MinimumOSVersion
16 | 11.4
17 | UIDeviceFamily
18 |
19 | 1
20 | 2
21 |
22 | UILaunchStoryboardName
23 | LaunchScreen
24 | UIMainStoryboardFile
25 | Main
26 | UIMainStoryboardFile~ipad
27 | Main
28 | UIRequiredDeviceCapabilities
29 |
30 | armv7
31 |
32 | UISupportedInterfaceOrientations
33 |
34 | UIInterfaceOrientationPortrait
35 | UIInterfaceOrientationLandscapeLeft
36 | UIInterfaceOrientationLandscapeRight
37 |
38 | UISupportedInterfaceOrientations~ipad
39 |
40 | UIInterfaceOrientationPortrait
41 | UIInterfaceOrientationPortraitUpsideDown
42 | UIInterfaceOrientationLandscapeLeft
43 | UIInterfaceOrientationLandscapeRight
44 |
45 | XSAppIconAssets
46 | Assets.xcassets/AppIcon.appiconset
47 | CFBundleName
48 | iOSClient
49 |
50 |
51 |
--------------------------------------------------------------------------------
/Xamarin/iOSClient/LaunchScreen.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/Xamarin/iOSClient/Main.cs:
--------------------------------------------------------------------------------
1 | using UIKit;
2 |
3 | namespace iOSClient
4 | {
5 | public class Application
6 | {
7 | // This is the main entry point of the application.
8 | static void Main(string[] args)
9 | {
10 | // if you want to use a different Application Delegate class from "AppDelegate"
11 | // you can specify it here.
12 | UIApplication.Main(args, null, "AppDelegate");
13 | }
14 | }
15 | }
--------------------------------------------------------------------------------
/Xamarin/iOSClient/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("iOSClient")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("iOSClient")]
13 | [assembly: AssemblyCopyright("Copyright © 2017")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Setting ComVisible to false makes the types in this assembly not visible
18 | // to COM components. If you need to access a type in this assembly from
19 | // COM, set the ComVisible attribute to true on that type.
20 | [assembly: ComVisible(false)]
21 |
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM
23 | [assembly: Guid("50c7b8c9-e664-45af-b88e-0c9b8b9c1be1")]
24 |
25 | // Version information for an assembly consists of the following four values:
26 | //
27 | // Major Version
28 | // Minor Version
29 | // Build Number
30 | // Revision
31 | //
32 | // You can specify all the values or you can default the Build and Revision Numbers
33 | // by using the '*' as shown below:
34 | // [assembly: AssemblyVersion("1.0.*")]
35 | [assembly: AssemblyVersion("1.0.0.0")]
36 | [assembly: AssemblyFileVersion("1.0.0.0")]
37 |
--------------------------------------------------------------------------------
/Xamarin/iOSClient/Resources/LaunchScreen.xib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
21 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
--------------------------------------------------------------------------------
/Xamarin/iOSClient/ViewController.designer.cs:
--------------------------------------------------------------------------------
1 | // WARNING
2 | //
3 | // This file has been generated automatically by Visual Studio from the outlets and
4 | // actions declared in your storyboard file.
5 | // Manual changes to this file will not be maintained.
6 | //
7 | using Foundation;
8 | using System;
9 | using System.CodeDom.Compiler;
10 | using UIKit;
11 |
12 | namespace iOSClient
13 | {
14 | [Register ("ViewController")]
15 | partial class ViewController
16 | {
17 | [Outlet]
18 | [GeneratedCode ("iOS Designer", "1.0")]
19 | UIKit.UIButton ConnectDisconnectButton { get; set; }
20 |
21 | [Outlet]
22 | [GeneratedCode ("iOS Designer", "1.0")]
23 | UIKit.UITableView MessagesTableView { get; set; }
24 |
25 | [Outlet]
26 | [GeneratedCode ("iOS Designer", "1.0")]
27 | UIKit.UITextField MessageTextField { get; set; }
28 |
29 | [Outlet]
30 | [GeneratedCode ("iOS Designer", "1.0")]
31 | UIKit.UIButton SendButton { get; set; }
32 |
33 | [Outlet]
34 | [GeneratedCode ("iOS Designer", "1.0")]
35 | UIKit.UITextField ServerUrlTextField { get; set; }
36 |
37 | [Action ("ConnectDisconnectButton_TouchUpInside:")]
38 | [GeneratedCode ("iOS Designer", "1.0")]
39 | partial void ConnectDisconnectButton_TouchUpInside (UIKit.UIButton sender);
40 |
41 | [Action ("SendButton_TouchUpInside:")]
42 | [GeneratedCode ("iOS Designer", "1.0")]
43 | partial void SendButton_TouchUpInside (UIKit.UIButton sender);
44 |
45 | void ReleaseDesignerOutlets ()
46 | {
47 | if (ConnectDisconnectButton != null) {
48 | ConnectDisconnectButton.Dispose ();
49 | ConnectDisconnectButton = null;
50 | }
51 |
52 | if (MessagesTableView != null) {
53 | MessagesTableView.Dispose ();
54 | MessagesTableView = null;
55 | }
56 |
57 | if (MessageTextField != null) {
58 | MessageTextField.Dispose ();
59 | MessageTextField = null;
60 | }
61 |
62 | if (SendButton != null) {
63 | SendButton.Dispose ();
64 | SendButton = null;
65 | }
66 |
67 | if (ServerUrlTextField != null) {
68 | ServerUrlTextField.Dispose ();
69 | ServerUrlTextField = null;
70 | }
71 | }
72 | }
73 | }
--------------------------------------------------------------------------------
/Xamarin/iOSClient/app.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------