Simple SoundCloud Client with C#.Net

By , May 14, 2012 3:11 pm

SoundCloud is a great platform to share and consume music from all around the world. There are also a lot of clients for every OS. But something I really miss, is a SDK for the .net Framework. There are some approaches in progress, but their not really stable:

So I decided to write a short tutorial about how to connect to the SoundCloud API with C#.NET and OAuth2. Please notice that this tutorial is just a demo and not a library or SDK you can use.

SoundCloud App Center

First you have to register your app in the SoundCloud Developer area:

In the Developer area you can find all resources you need to create your own app. There are links to the documentation of the API, a console application to expose the API and much more.

For our demo application, we need the Client ID and the Client Secret of our application. They are used to identify our application against the REST API.

Continue reading 'Simple SoundCloud Client with C#.Net'»

Run PowerShell Script on SharePoint Server

By , April 2, 2012 9:15 am

If you have a PowerShell script which should run on a SharePoint Server (Snap In: Microsoft.SharePoint.PowerShell), you have to run it with the credentials of a SP-Shell Admin.

The error message looks like this if the account is not a SP-Shell Admin:

To add the account to the SP-Shell Admin you have to login with an existing SP-Shell Admin. You can get all admins by following command:

   1: Get-SPShellAdmin

After that, start a new PowerShell console with the “Run as administrator” command. If you don’t do this, your command will end with following error message:

   1: Add-SPShellAdmin : You need to have Machine administrator priviliges to run this cmdlet.

Now we are ready to add a new shell admin but there is at least one more obstacle. You have to provide the database as an object. Otherwise, it won’t take effect. I’ve prepared a short script for this:

   1: #Add SP Shell Admin Script

   2:  

   3: $spUrl = "http://infsaa1205:200" #Server Name (frontend)

   4: $accountName = "demo\myadmin" #Account Name

   5:  

   6: #load pshell snapin for SP

   7: if ((Get-PSSnapin -Name Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue) -eq $null)

   8: {

   9:     Add-PSSnapin Microsoft.SharePoint.PowerShell

  10: }

  11:  

  12: #lookup content db

  13: $db = Get-SPContentDatabase -site $spUrl

  14:  

  15: #add acount to spshell admins

  16: Add-SPShellAdmin -UserName $accountName -database $db

Read Project Server 2010 CustomFields over PSI

By , March 16, 2012 1:10 pm

I’m developing software for the MS Project Server 2010 for just a few days. But still after these few days I realized that Microsoft offers a very bad documentation for the PSI and the whole Project Server stuff.

So i decided to share my knowledge within this blog!

One of the major need for Project Server administrators is to synchronize data, for example  from  SAP, into custom fields of a specified project. So I’m going to show how to…

  • …read data from projects
  • …read data from custom fields
  • …lookup a choice custom field

and in another blog entry (linked at the bottom when it’s finished) how to…

  • …write project data
  • …write values into custom fields

with C# .NET 4.0!

Continue reading 'Read Project Server 2010 CustomFields over PSI'»

WhatsApp auf Windows Phone 7

By , November 9, 2011 2:08 pm

Im letzten Beitrag habe ich ja schon über WhatsApp berichtet, welches nun den Schritt auf das Microsoft OS, Windows Phone 7, geschafft hat. Wirklich sauber scheint es ja aber noch nicht zu laufen. Was mich persönlich vor allem stört, ist der fehlende Nachrichtenverlauf. Wenn mir jemand ein Bild schickt, will ich dies doch zumindest abspeichern können, bzw. weiterverwenden.

Um diese kleine Problem zu lösen habe ich mich mit dem Isolated Storage vom WhatsApp App auseinandergesetzt. Dieser kann man ja mit dem Entwickler Tool “ISETool.exe” auslesen und auch beschreiben.

Isolated Storage von WhatsApp

WhatsApp Isolated Storage Continue reading 'WhatsApp auf Windows Phone 7'»

Reverse Engineering WhatsApp

By , October 13, 2011 8:32 am

Seit ungefähr einer Woche ist es nun auch für Windows Phone 7 Benutzer möglich, WhatsApp zu benutzen. Das Mango Update hat es ermöglicht die App auf das WP7 zu bringen.

Nach kurzem einarbeiten, musste ich Festellen, dass die Performance sehr zu wünschen übrig lässt.  Am Computer wäre deswegen ein Desktop App viel praktischer. Dabei kam mir der Gedanke, dass ein WP7 App ja eine Silverlight Applikation ist. Also mit .NET Entwickelt und dadurch auch deompilierbar.

Hier eine kurze Zusammenfassung meines Reverse Engineering der WhatsApp_v1.1.xap:

Rest Service

Um einen eigene  Desktop Client zu schreiben, brauche ich die Informationen über die Connection. Durch den Sourcecode kann man an alle wichtigen Daten und Informationen herankommen.

WhatsApp funktioniert, für die Registrierung und Authentifikation, mit einem Rest Service, welcher über die Hammock Library angesprochen wird.

Den Code dazu findet man im Ordner /verify/. Da gibts es verschiedene Klassen (Alle für die Registrierung), welche an den Restservice von WhatsApp Daten schicken:

/*File: VerfiyStart.cs Zeile: 152*/
string str = ((byte[]) DeviceExtendedProperties.GetValue("DeviceUniqueId")).ToPassword();

System.Net.WebRequest that = System.Net.WebRequest.Create(
    string.Format("https://r.whatsapp.net/v1/exist.php?cc={0}&in={1}&udid={2}",
    Settings.CountryCode, Settings.PhoneNumber, str));

that.Headers[System.Net.HttpRequestHeader.UserAgent] = App.GetUserAgent();

Microsoft Push Notification Service (MPNS)

Die Push Nachrichten werden über den MPNS Service, von WhatsApp abgerufen:

/*File: App.cs Zeile: 222*/
string channelName = "message";
string serviceName = "mpns.whatsapp.net";
HttpNotificationChannel that = HttpNotificationChannel.Find(channelName);
if (that == null)
{
    that = new HttpNotificationChannel(channelName, serviceName);
    that.Open();
}

FunXMPP, FunRunner und FunEventHandler

Diese drei Klassen sind für die Kommunikation mit dem eigentlich WhatsApp Server zuständig. In der FunXMPP.cs sind verschiedenste weitere Klassen enthalten, wie zum Beispiel die Connection Klasse.

Die FunEventHandler.cs beinhaltet alle Eventhandler welche in WhatsApp benötigt werden und die FunRunner.cs ist eine Klasse, welche die Connection aus der FunXMPP etwas vereinfacht.

Jabber & WhatsApp

In der Klasse FunXMPP findet man auch ein Array mit verschiedensten Einträgen. Unter anderem zwei Jabber URL’s:

/*File: FunXMPP.cs Zeile: 83*/
strArray[0x41] = "http://etherx.jabber.org/streams";
strArray[0x42] = "http://jabber.org/protocol/chatstates";

Basiert WhatsApp eigentlich auf Jabber? Oder was wird da genau abgefragt? Denn diese etherx.jabber.org Adresse wird an ganz vielen anderen Stellen in der FunXMPP.cs verwendet!

Crash-log

Zum Schluss, will ich noch erwähnen, dass das Crash-log direkt an folgende Adresse geschickt wird:

https://crashlog.whatsapp.net/upload.php

RestClient client2 = new RestClient {
                Authority = "https://crashlog.whatsapp.net",
                UserAgent = userAgent,
                Path = "upload.php"
            };
RestClient client = client2;
client.AddField("from", Settings.CountryCode + Settings.PhoneNumber);
client.AddFile("file", "log.gz", baseOutputStream);
client.BeginRequest();

Ich frage mich, wie lange es dauert, bis Sie eine ZipBomb zugeschickt bekommen…

Ist ein App möglich?

Die Frage ist jetzt natürlich, ob ein App möglich ist und es sich Lohnen würde, eines zu entwickeln. Ich werde den Source Code noch mehr unter die Lupe nehmen und eventuell einen kleinen PoC erstellen, aber wirklich eine App für den Desktop ist rein aus Lizenz technischen Gründen nicht möglich.

Ich will auch noch anmerken, dass ich den Code nur ganz kurz angeschaut habe, es könnten sich in meiner Beschreibung auch Interpretationsfehler eingeschlichen haben.

Intellisense für Mono for Android GUI’s

By , September 28, 2011 9:20 am

Seit nun einem halben Jahr arbeite ich mit MonoForAndroid um Android Applikationen zu entwickeln. Seit der Beta Phase Anfangs Januar hat sich viel getan. Ich selbst finde aber immer noch, dass sich im Gegensatz zum MonoTouch Framework, zu wenig verändert. Natürlich muss man auch berücksichtigen, dass Novell seine Mitarbeiter gefeuert hat und diese ein neues Unternehmen aufbauen mussten. Doch als .net Entwickler bin ich mir heutzutage ein bisschen Komfort gewöhnt und so verwundert es mich, warum noch kein gescheiter Android GUI Designer auf dem Markt ist.

Für Java Entwickler gibt es mindestens zwei nennenswerte: DroidDraw und der Basic4PPC Designer

Ich persönlich designe meine Anwendung meistens im DroidDraw. Da ich von dem Designer aber “nur” die AXML Datei bekomme habe ich in meiner IDE kein Intellisense zur Verfügung. Und bei vielen GUI Elementen wird auch das “FindViewById” extrem mühsam.

AXML Code Generator

Deshalb habe ich ein Projekt bei Codeplex gestartet, welches den AXML Code analysiert und eine C# Klasse dazu erstellt. Diese kann dann als Designer Klasse verwendet werden. Dieses Projekt ermöglicht dann folgenden Entwicklungsprozess:


Der AXML Code Generator erstellt alle Variablen aus der AXML Datei in C# und linkt sie direkt mit der bestimmten View.   Continue reading 'Intellisense für Mono for Android GUI’s'»

Thats-Me App endlich im Appstore!

By , June 30, 2011 6:44 am

Endlich ist es soweit. Das iPhone App für das Social Network Thats-Me.ch ist im Appstore von Apple und für den Download auf das iPhone bereit.

Wir haben bei der ersten Version vor allem auf die Stabilität der App geschaut und hoffen, dass sich dies auch bewähren wird. In einem Späteren Schritt sollen dann noch mehr Features dazu kommen sowie auch eine Lite Version.

Die kosten der App belaufen sich momentan auf 2.20 CHF als Einsteigerpreis, werden aber in wenigen Tagen auf 3.30 CHF angehoben.

 

Die App kann hier erworben werden: Itunes thats-me.ch App

Thats-Me on the iPhone

By , April 26, 2011 1:21 pm

Schon wieder sind ein paar Monate sind ins Land gezogen, seit ich das letzte mal einen Status zum Thats-Me App gegebenen habe. Dafür können wir gleich mit mehreren Erfolgen angeben.

Zum einen haben wir die Business Logik komplett neu geschrieben und so erweitert, dass sie auch auf dem Windows Phone 7 lauffähig ist. Dem App auf dem WP7 sollte in dem Fall nichts mehr im Wege stehen.

Hier der Link zum Download: ThatsMeSDK Async Alpha

Des weiteren habe ich ein kurzes Video, welches von Andreas Lüscher erstellt wurde und einen lauffähigen Prototypen der iPhone App zeigt.

Es sieht so aus, als wären langsam für einen ersten Release bereit. Leider hat Jo bis jetzt noch nicht an der API weitergearbeitet. Ich hoffe dennoch, dass wir das App in wenigen Wochen in den Appstore stellen können.

[video type="youtube" id="b-m98D9AdQY" width="400"]iPhone App Protoyp[/video]

Thats-Me.ch Prototyp und App Design

By , March 21, 2011 10:27 am

Nach einer nun schon dreimonatigen Entwicklungszeit haben wir gleich mehrere Erfolge zu feiern. Zum einen haben wir eine stabile Beta Version unseres Software Development Kit für Thats-Me veröffentlicht, zum anderen besitzen wir nun endlich einen Windows Phone 7 Developer Account für Microsoft, sowie die MonoTouch Framework Lizenzen. Dazu haben wir nun auch ein Design für die kommenden Apps erstellt welches sich sehr am Thats-Me.ch Standard orientiert.

Doch der wohl grösste Erfolg ist die Erstellung eines iPhone Prototypen mit dem MonoTouch Framework. Deshalb hier kurz ein paar Screenshots dazu:

s


Wie oben schon erwähnt haben wir nun auch ein App Design erstellt, welches beim Prototypen leider noch nicht angewendet wurde. Deshalb sieht dieser ein bisschen “schlicht” aus. Hier eine kleine Vorschau wie das dann etwa aussehen würde.

Da wir nun auch einen WP7 Developer Account haben, hoffe ich, dass wir so schnell wie möglich  nun auch auf dem WP7 eine App Entwickeln können. Dazu sind wir momentan auch mit einem Spezialisten in Kontakt getreten, da wir auf diesem Gerät ja noch einige Probleme haben.

Deshalb sind wir momentan am überlegen ob wir für das Windows Phone 7, eventuell ein eigenes, angepasstes Framework  schreiben wollen. Wir hoffen aber, dass wir es doch noch irgendwie lösen können.

Custom Workflow Actions für SharePoint Designer

By , March 8, 2011 3:12 pm

Es war nun ein langer und mühsamer Weg, bis ich endlich eigene Workflow Actions für den SharePoint Designer 2010, entwickeln konnte. Deshalb stelle ich hier kurz vor, wie man vorgehen kann.

Der SharePoint Designer, bzw. SharePoint selbst bietet ja schon einige Aktionen für das zusammen klicken von Workflows für das Microsoft SharePoint 2010.

Doch manchmal gibt es Szenarien bei denen man nicht um Programmierung herum kommt. Damit man nun nicht den ganzen Designer mit all seinen Vorteilen über Bord werfen muss, kann man sich eine eigene Workflow Action programmieren, welche dann im SharePoint Designer verfügbar ist.

Kurz noch zum Inhalt dieses Beitrages:

  1. Tools installieren und einstellen
  2. Visual Studio Solution erstellen
  3. Anwendung Programmieren
  4. Anwendung auf dem Server eintragen
  5. Anwendung über die Webclient.config freigeben
  6. Testen

Continue reading 'Custom Workflow Actions für SharePoint Designer'»

Panorama Theme by Themocracy