1

Versionone の Summer2013 にアクセスできます。次のようなクライアント ヘッダー Cookie を使用する Json Example を使用して、新しい query.v1 経由でアクセスしようとしています。

_client.Headers["Cookie"] = ".V1.Ticket.VersionOne.Web=" + ticket;

Cookie の .V1.Ticket.VersionOne.Web チケットを生成するにはどうすればよいですか?

Json の例: https://github.com/versionone/versionone-oauth2-examples/blob/master/csharp/YamlClient/Program.cs

注: これらの指示に従って OAuth 2 トークンを生成しましたが、チケットが含まれていません。 https://community.versionone.com/Developers/Developer-Library/Documentation/API/Security/Oauth_2.0_Authentication/Using_OAuth_2.0_for_Web_Server_Applications

コードは次のとおりです。

namespace V1Json
{
    class JsonClient
    {
        private readonly Uri _url;
        private readonly string _ticket;
        private WebClient _client;

        public JsonClient(string url, string ticket)
        {
            _url = new Uri(url);
            _ticket = ticket;
            _client = new WebClient { Encoding = Encoding.UTF8 };
           _client.Headers["Cookie"] = ".V1.Ticket.VersionOne.Web=" + ticket;
        }

        public List<List<dynamic>> GetResultSets(string querybody)
        {
            var resultbody = _client.UploadString(_url, "SEARCH", querybody);
            return JsonConvert.DeserializeObject<List<List<dynamic>>>(resultbody);
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            var url = "https://versionone-test.acme.com/summer13_demo/query.v1";
             var authTicket = "AAEAAGvqd3ylmW0FphkxxxHASSMoCrEa...";

            var client = new JsonClient(url, authTicket);
4

1 に答える 1

0

Joe Koberg が最近作成した新しい OAuth2Client コードで動作するようにするなど、その例を更新しました。

サンプルの新しいバージョンには、http://www14.v1host.com/v1sdktesting のパブリック テスト サーバーに対して動作するように既に設定されている、stored_credentials.json および client_secrets.json ファイルが含まれています。そこにあるプロジェクトを表示したり、データの一部を変更したりするには、admin / adminを使用してログインします。

これには、Newtonsoft を使用してサーバーから返された JSON を解析する単純な JsonClient が含まれています。

まだhttps://github.com/versionone/versionone-oauth2-examples/blob/master/csharp/YamlClient/Program.csにあります

JsonClient の例を使用すると、次のようになります。

IStorage credentials = new Storage.JsonFileStorage(
            "../../client_secrets.json", "../../stored_credentials.json");
        const string scopes = "query-api-1.0 apiv1";
        const string url = "https://www14.v1host.com/v1sdktesting/query.v1";

var client = new JsonClient(credentials, url, scopes);

const string queryBody = @"
from: Scope
select:
    - Name
    - Workitems.@Count
    - Workitems:PrimaryWorkitem.@Count
    - Workitems:PrimaryWorkitem[Estimate>'0'].@Count
    - Workitems:PrimaryWorkitem[Estimate='0'].@Count
    - Workitems:PrimaryWorkitem[Estimate>'0'].Estimate.@Sum
    - from: Workitems:PrimaryWorkitem[Estimate>'0']
      select:
        - Name
        - Estimate
";
        var resultSets = client.GetResultSets(queryBody).ToArray();

        foreach (var result in resultSets[0]) // Rember that query.v1 returns a resultSet of resultSets!
        {
            Console.WriteLine(result["Name"]);
            Console.WriteLine("Total # of workitems: " + result["Workitems.@Count"]);
            Console.WriteLine("Total # of Primary workitems: " + result["Workitems:PrimaryWorkitem.@Count"]);
            Console.WriteLine("Total # of Estimated Primary workitems: " +
                              result["Workitems:PrimaryWorkitem[Estimate>'0'].@Count"]);
            Console.WriteLine("Total # of Unestimated Primary workitems: " +
                              result["Workitems:PrimaryWorkitem[Estimate='0'].@Count"]);
            Console.WriteLine("Sum of all Estimated Primary workitems: " +
                              result["Workitems:PrimaryWorkitem[Estimate>'0'].Estimate.@Sum"]);
            foreach (var estimatedWorkitem in result["Workitems:PrimaryWorkitem[Estimate>'0']"])
            {
                Console.WriteLine(estimatedWorkitem["Name"] + " : " + estimatedWorkitem["Estimate"]);
            }
            Console.WriteLine("\n");
        }

        Console.Write("Press any key to exit...");
        Console.ReadLine();
    }
} 
于 2013-09-19T21:42:42.287 に答える